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 .

Or run it straight from PyPI without installing anything:

uvx yle-areena-dvr --help      # also available under the short name `yle-dvr`

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.1

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.1
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)

Table of built distributions (wheels) for yle-areena-dvr 0.1.1
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 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.1 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