id = "yle-dl"
name = "yle-dl"
homepage = "https://github.com/aajanki/yle-dl"
description = "Download videos from Yle servers"
executables = ["yle-dl"]
[dotfiles]
paths = ["~/.yledl.conf", "~/.config/yledl.conf"]
secret = []
side_effect = false
[commands]
format = 1
label = "Download from Yle"
description = "Download an Areena or Elava arkisto stream, or print its URL or title. Config-file, proxy, post-processing and live-stream seek options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "readme"
kind = "help"
url = "https://raw.githubusercontent.com/aajanki/yle-dl/HEAD/README.md"
revision = "2026-10-27"
evidence = """
yle-dl [options] URL
* `-o filename` Save stream to the named file
* `--latestepisode` Download the latest episodes
* `--showurl` Print the URL of the stream, don't download
* `--showtitle` Print stream title, don't download
* `--sublang lang` Disable subtitles if lang is "none"
* `--subtitles-only` Download only subtitle file, skip video and audio
* `--resolution res` Maximum vertical resolution in pixels
* `--maxbitrate br` Maximum bitrate stream to download, integer in kB/s or "best" or "worst". Not all streams support limited bitrates.
* `--destdir dir` Save files to dir
* `--pipe` Dump stream to stdout for piping to media player. E.g. `yle-dl --pipe URL | vlc -`.
* `-V, --verbose` Show verbose debug output
"""
[[commands.field]]
id = "url"
label = "Areena or Elava arkisto URL"
type = "url"
position = 0
sources = ["readme"]
[[commands.field]]
id = "output"
label = "Output file"
type = "path"
path = { kind = "file", role = "output" }
option = ["-o"]
effect = "overwrite"
sources = ["readme"]
[[commands.field]]
id = "destdir"
label = "Destination directory"
type = "path"
path = { kind = "directory", role = "output" }
option = ["--destdir"]
sources = ["readme"]
[[commands.field]]
id = "latest"
label = "Latest episode only"
type = "boolean"
option = ["--latestepisode"]
sources = ["readme"]
[[commands.field]]
id = "resolution"
label = "Max vertical resolution (pixels)"
type = "integer"
option = ["--resolution"]
sources = ["readme"]
[[commands.field]]
id = "maxbitrate"
label = "Max bitrate (kB/s, best or worst)"
type = "string"
option = ["--maxbitrate"]
suggestions = [{ value = "best", label = "Best" }, { value = "worst", label = "Worst" }]
sources = ["readme"]
[[commands.field]]
id = "sublang"
label = "Subtitle language (none disables)"
type = "string"
option = ["--sublang"]
sources = ["readme"]
[[commands.field]]
id = "subtitles_only"
label = "Subtitles only"
type = "boolean"
option = ["--subtitles-only"]
sources = ["readme"]
[[commands.field]]
id = "showurl"
label = "Print stream URL, do not download"
type = "boolean"
option = ["--showurl"]
sources = ["readme"]
[[commands.field]]
id = "showtitle"
label = "Print title, do not download"
type = "boolean"
option = ["--showtitle"]
sources = ["readme"]
[[commands.field]]
id = "verbose"
label = "Verbose output"
type = "boolean"
option = ["--verbose", "-V"]
sources = ["readme"]
[[commands.task]]
id = "download"
label = "Download a stream"
fields = ["url", "output", "destdir", "resolution", "latest"]
required = ["url"]
[[commands.task]]
id = "show_url"
label = "Show stream URL"
fields = ["url", "showurl"]
required = ["url", "showurl"]
set = { showurl = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["url", "output", "destdir", "latest", "showurl", "showtitle"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["resolution", "maxbitrate", "sublang", "subtitles_only", "verbose"]