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 .
Or run it straight from PyPI without installing anything:
uvx yle-areena-dvr --help # also available under the short name `yle-dvr`
Setup
- Copy
.env.templateto.env:cp .env.template .env
- Fill in your
TMDB_API_KEY(free from themoviedb.org).YLE_APP_IDandYLE_APP_KEYare 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. - Customize
assets/config.yamlto 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.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| yle_areena_dvr-0.1.1.tar.gz | 39.9 kB | With provenance | Details for yle_areena_dvr-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| yle_areena_dvr-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for yle_areena_dvr-0.1.1-py3-none-any.whl |
Total release size: 57.8 kB
Release files / yle_areena_dvr-0.1.1.tar.gz
| Download URL | yle_areena_dvr-0.1.1.tar.gz |
|---|---|
| Size | 39.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4b6f563c32a4b54406fffb30bab90d02b77d27a56f2afe3f81d8c82d0ee1618b
|
|
BLAKE2b-256 checksum How to use checksums |
28286fdfc2f23eaf69f22ea98d342733b3d6777c7646ce1a3b1399cc85f9e4c0
|
| 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 logRelease files / yle_areena_dvr-0.1.1-py3-none-any.whl
| Download URL | yle_areena_dvr-0.1.1-py3-none-any.whl |
|---|---|
| Size | 17.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ace1f1ff3c4475ade8ea0731b31b7c939b9a52b290d3b17d33cba06926cdf74a
|
|
BLAKE2b-256 checksum How to use checksums |
d2a0cbcbe7c485b1e30c06462e365a36dc9a4f68f8057a7f62e2652c4b3a86df
|
| 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 logSecurity for yle-areena-dvr 0.1.1
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.
Attestation for yle_areena_dvr-0.1.1.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 logA 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.