{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "additionalProperties": false, "properties": { "YTDLP_ENABLED": { "type": "boolean", "default": true, "x-aliases": [ "MEDIA_ENABLED", "SAVE_MEDIA", "USE_MEDIA", "USE_YTDLP", "FETCH_MEDIA", "SAVE_YTDLP" ], "description": "Enable video/audio downloading with yt-dlp" }, "YTDLP_BINARY": { "type": "string", "default": "yt-dlp", "x-aliases": ["YOUTUBEDL_BINARY", "YOUTUBE_DL_BINARY"], "description": "Path to yt-dlp binary" }, "YTDLP_NODE_BINARY": { "type": "string", "default": "node", "x-fallback": "NODE_BINARY", "description": "Path to Node.js binary for yt-dlp JS runtime" }, "YTDLP_TIMEOUT": { "type": "integer", "default": 3600, "minimum": 30, "x-fallback": "TIMEOUT", "x-aliases": ["MEDIA_TIMEOUT"], "description": "Timeout for yt-dlp downloads in seconds" }, "YTDLP_COOKIES_FILE": { "type": "string", "default": "", "x-fallback": "COOKIES_FILE", "description": "Path to cookies file" }, "YTDLP_MAX_SIZE": { "type": "string", "default": "750m", "pattern": "^\\d+[kmgKMG]?$", "x-aliases": ["MEDIA_MAX_SIZE"], "description": "Maximum file size for yt-dlp downloads" }, "YTDLP_CHECK_SSL_VALIDITY": { "type": "boolean", "default": true, "x-fallback": "CHECK_SSL_VALIDITY", "description": "Whether to verify SSL certificates" }, "YTDLP_ARGS": { "type": "array", "items": { "type": "string" }, "default": [ "--restrict-filenames", "--trim-filenames=128", "--write-description", "--write-info-json", "--write-thumbnail", "--write-sub", "--write-auto-subs", "--convert-subs=srt", "--yes-playlist", "--continue", "--no-abort-on-error", "--ignore-errors", "--geo-bypass", "--add-metadata", "--no-progress", "--remote-components=ejs:github", "-o", "%(title)s.%(ext)s" ], "x-aliases": ["YTDLP_DEFAULT_ARGS"], "description": "Default yt-dlp arguments" }, "YTDLP_ARGS_EXTRA": { "type": "array", "items": { "type": "string" }, "default": [], "x-aliases": ["YTDLP_EXTRA_ARGS"], "description": "Extra arguments to append to yt-dlp command" } } }