id = "streamlink" name = "Streamlink" homepage = "https://streamlink.github.io" description = "A command-line utility that extracts streams from various services and pipes them into a video player of choice." executables = ["streamlink"] [dotfiles] # https://streamlink.github.io/cli/config.html lists the current config as # $XDG_CONFIG_HOME/streamlink/config on Linux/BSD, ~/Library/Application # Support/streamlink/config on macOS, and %APPDATA%/streamlink/config on # Windows. The platform-native root [appData] covers the latter two, while # [configHome] covers XDG Linux. Plugin configs use config.. # https://streamlink.github.io/latest/deprecations.html lists the older # ~/.streamlinkrc and Windows streamlinkrc names, so those remain covered. paths = [ "[configHome]/streamlink/config", "[configHome]/streamlink/config.*", "[appData]/streamlink/config", "[appData]/streamlink/config.*", "~/.streamlinkrc", "%APPDATA%/streamlink/streamlinkrc", ] secret = [] side_effect = false [commands] format = 1 label = "Play or record a stream" description = "Open a live-stream URL in a player or save it to a file. Plugin credentials, HLS/DASH tuning and proxy options are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true } [[commands.source]] id = "docs" kind = "manual" url = "https://streamlink.github.io/cli.html" revision = "8.6.2" evidence = """ -l LEVEL --loglevel LEVEL none, critical, error, warning, info, debug, trace, all -p PATH --player PATH -t TITLE --title TITLE -O --stdout -o FILENAME --output FILENAME -r FILENAME --record FILENAME -f --force When using --output or --record, always write to file even if it already exists (overwrite). --stream-url streamlink -p mpv --title "{author} - {category} - {title}" [STREAM] Use best or worst for selecting the highest or lowest available quality. """ [[commands.field]] id = "url" label = "Stream URL" type = "url" position = 0 min = 1 sources = ["docs"] [[commands.field]] id = "stream" label = "Quality" description = "A stream name such as best or worst, or a comma-separated fallback list." type = "string" position = 1 suggestions = [{ value = "best", label = "Best" }, { value = "worst", label = "Worst" }, { value = "720p,480p,best", label = "720p, then 480p, then best" }] sources = ["docs"] [[commands.field]] id = "player" label = "Player executable" type = "string" option = ["--player", "-p"] suggestions = [{ value = "mpv", label = "mpv" }, { value = "vlc", label = "VLC" }] sources = ["docs"] [[commands.field]] id = "title" label = "Player window title" type = "string" option = ["--title", "-t"] sources = ["docs"] [[commands.field]] id = "output" label = "Save to file" type = "path" option = ["--output", "-o"] path = { kind = "file", role = "output" } sources = ["docs"] [[commands.field]] id = "record" label = "Record while playing" type = "path" option = ["--record", "-r"] path = { kind = "file", role = "output" } sources = ["docs"] [[commands.field]] id = "force" label = "Overwrite existing file" type = "boolean" option = ["--force", "-f"] effect = "overwrite" sources = ["docs"] [[commands.field]] id = "stdout" label = "Write to stdout" type = "boolean" option = ["--stdout", "-O"] sources = ["docs"] [[commands.field]] id = "stream_url" label = "Only print stream URL" type = "boolean" option = ["--stream-url"] sources = ["docs"] [[commands.field]] id = "loglevel" label = "Log level" type = "enum" option = ["--loglevel", "-l"] choices = [ { value = "none", label = "None" }, { value = "critical", label = "Critical" }, { value = "error", label = "Error" }, { value = "warning", label = "Warning" }, { value = "info", label = "Info" }, { value = "debug", label = "Debug" }, { value = "trace", label = "Trace" }, { value = "all", label = "All" }, ] sources = ["docs"] [[commands.task]] id = "play" label = "Play in player" fields = ["url", "stream", "player", "title"] required = ["url"] [[commands.task]] id = "save" label = "Save to file" fields = ["url", "stream", "output", "force"] required = ["url", "output"] [[commands.task]] id = "print-url" label = "Print stream URL" fields = ["url", "stream", "stream_url"] required = ["url"] set = { stream_url = [true] } [[commands.group]] id = "basic" label = "Basic" fields = ["url", "stream", "player", "output"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["title", "record", "force", "stdout", "stream_url", "loglevel"]