Skip to main content

Yle Areena DVR

A Python tool for searching, scraping, and downloading movies and series from Yle Areena with integrated TMDb ratings and flexible naming templates.

Features

  • Yle Areena Search: Find movies by query or category.
  • Scrape Curated Lists: Extract movies directly from Areena's curated lists (e.g., "Katsotuimmat leffat").
  • TMDb Ratings: Automatically fetch and filter by TMDb ratings (The Movie Database). Excellent multi-language support.
  • yt-dlp Integration: High-quality downloads with subtitle support.
  • Flexible Organization: Customize your folder structure and file naming via config.yaml.
  • Modern Python: Built with Python 3.12+, Pydantic 2, and managed entirely with uv.

Installation

This project is built using uv, an extremely fast Python package and project manager.

# Clone the repository
git clone https://github.com/junousia/yle-areena-dvr.git
cd yle-areena-dvr

# Sync the environment
uv sync

# Or install it globally as a tool
uv tool install .

Setup

  1. Copy .env.template to .env:
    cp .env.template .env
    
  2. Fill in your TMDB_API_KEY (free from themoviedb.org). YLE_APP_ID and YLE_APP_KEY are optional: by default the tool reads the keys that Areena's own web frontend embeds in its pages at runtime; set them only to override that.
  3. Customize assets/config.yaml to change where your movies are saved.

Usage

If you installed it via uv tool install ., you can run yle-dvr directly. Otherwise, use uv run yle-dvr inside the project directory.

Search for Programs

uv run yle-dvr search --query "Metsolat" --limit 5 --min-rating 7.0

# Search for expiring programs
uv run yle-dvr search --only-expiring

# Search for recently added programs
uv run yle-dvr search --only-new

# You can also get machine-readable output for AI agents:
uv run yle-dvr search --query "Action" --json

Scrape Curated Lists (Movies or Series)

# Scrape movies
uv run yle-dvr scrape --url "https://areena.yle.fi/tv/ohjelmat/57-1BbXLDz6v" --min-rating 7.5

# Scrape series
uv run yle-dvr scrape --url "https://areena.yle.fi/tv/ohjelmat/57-p8JeXvBA0"

Download a Program (Movie or Series)

uv run yle-dvr download --id "1-2345678"

Look Up Full Details for Suitability (Overview, Genres, Cast)

# From a program already in the local DB
uv run yle-dvr details --id "1-2345678" --json

# Directly by title, no DB entry required
uv run yle-dvr details --title "Fight Club" --year 1999 --json

Configuration

See assets/config.yaml for customization options including folder templates and subtitle preferences.

Disclaimer

This is an unofficial tool and is not affiliated with Yle. Downloading is intended for personal use of content that Yle makes available to you; respect Yle's terms of service and applicable copyright law. You are responsible for how you use it.

Use as an agent skill

SKILL.md makes this repo usable as a skill in Hermes Agent and OpenClaw. Clone it into the agent's skills directory (for Hermes e.g. ~/.hermes/skills/<category>/yle-areena-dvr, for OpenClaw <workspace>/skills/yle-areena-dvr), run uv sync there, and copy .env.template to .env. Python 3.12-3.14 is required (3.13 is tested).

License

MIT, see LICENSE.

Metadata

Release files for yle-areena-dvr 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yle-areena-dvr 0.1.0
File Size Uploaded Provenance Actions
yle_areena_dvr-0.1.0.tar.gz 39.8 kB With provenance Details for yle_areena_dvr-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for yle-areena-dvr 0.1.0
File Interpreter ABI Platform Actions
yle_areena_dvr-0.1.0-py3-none-any.whl Python 3 none any Details for yle_areena_dvr-0.1.0-py3-none-any.whl

Total release size: 57.6 kB

Release files / yle_areena_dvr-0.1.0.tar.gz

Download URL yle_areena_dvr-0.1.0.tar.gz
Size 39.8 kB
Tags Source
SHA-256 checksum
How to use checksums
61d129babc5232026dc86410f2b5f7af1df54534ef906a447366dc2fabd98564
BLAKE2b-256 checksum
How to use checksums
5e7a2dc5048943dc35713342347acba66d7166da9853907a7e0c11632a8544df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / yle_areena_dvr-0.1.0-py3-none-any.whl

Download URL yle_areena_dvr-0.1.0-py3-none-any.whl
Size 17.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
97c1addefbb0c5ccb6a9d6938c3b9427e0a56a0170f33a32a9e9e5134beea2f1
BLAKE2b-256 checksum
How to use checksums
d67925ae29598ebbe0d5da052bb6cd615994c61ea548d84c77667eeabe17dd1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for yle-areena-dvr 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for yle_areena_dvr-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page