From 830e27293485ec84b12cbd57b881da218bf006fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rog=C3=A9rio=20Brito?= Date: Sun, 24 Jan 2021 10:24:03 -0300 Subject: [PATCH] New upstream version 2021.01.24.1 --- ChangeLog | 24 + README.md | 763 +++++++++---------- README.txt | 764 ++++++++++---------- docs/supportedsites.md | 13 +- test/test_YoutubeDL.py | 15 +- youtube-dl | Bin 1804470 -> 1811223 bytes youtube-dl.1 | 33 +- youtube-dl.bash-completion | 2 +- youtube-dl.fish | 3 +- youtube-dl.zsh | 2 +- youtube_dl/YoutubeDL.py | 7 +- youtube_dl/__init__.py | 1 + youtube_dl/extractor/aenetworks.py | 2 +- youtube_dl/extractor/aljazeera.py | 41 +- youtube_dl/extractor/americastestkitchen.py | 97 ++- youtube_dl/extractor/aol.py | 12 +- youtube_dl/extractor/ard.py | 36 +- youtube_dl/extractor/comedycentral.py | 143 +--- youtube_dl/extractor/extractors.py | 21 +- youtube_dl/extractor/franceculture.py | 20 +- youtube_dl/extractor/lbry.py | 9 +- youtube_dl/extractor/minds.py | 196 +++++ youtube_dl/extractor/mtv.py | 23 +- youtube_dl/extractor/ninegag.py | 189 ++--- youtube_dl/extractor/njpwworld.py | 54 +- youtube_dl/extractor/spike.py | 15 +- youtube_dl/extractor/spotify.py | 156 ++++ youtube_dl/extractor/trovo.py | 193 +++++ youtube_dl/extractor/wat.py | 64 +- youtube_dl/extractor/yahoo.py | 80 +- youtube_dl/options.py | 6 +- youtube_dl/version.py | 2 +- 32 files changed, 1841 insertions(+), 1145 deletions(-) create mode 100644 youtube_dl/extractor/minds.py create mode 100644 youtube_dl/extractor/spotify.py create mode 100644 youtube_dl/extractor/trovo.py diff --git a/ChangeLog b/ChangeLog index 27f01c43..9b2f38b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +version 2021.01.24 + +Core +* Introduce --output-na-placeholder (#27896) + +Extractors +* [franceculture] Make thumbnail optional (#18807) +* [franceculture] Fix extraction (#27891, #27903) +* [njpwworld] Fix extraction (#27890) +* [comedycentral] Fix extraction (#27905) +* [wat] Fix format extraction (#27901) ++ [americastestkitchen:season] Add support for seasons (#27861) ++ [trovo] Add support for trovo.live (#26125) ++ [aol] Add support for yahoo videos (#26650) +* [yahoo] Fix single video extraction +* [lbry] Unescape lbry URI (#27872) +* [9gag] Fix and improve extraction (#23022) +* [americastestkitchen] Improve metadata extraction for ATK episodes (#27860) +* [aljazeera] Fix extraction (#20911, #27779) ++ [minds] Add support for minds.com (#17934) +* [ard] Fix title and description extraction (#27761) ++ [spotify] Add support for Spotify Podcasts (#27443) + + version 2021.01.16 Core diff --git a/README.md b/README.md index 85fed6d3..94c34d89 100644 --- a/README.md +++ b/README.md @@ -52,394 +52,431 @@ Alternatively, refer to the [developer instructions](#developer-instructions) fo youtube-dl [OPTIONS] URL [URL...] # OPTIONS - -h, --help Print this help text and exit - --version Print program version and exit - -U, --update Update this program to latest version. Make - sure that you have sufficient permissions - (run with sudo if needed) - -i, --ignore-errors Continue on download errors, for example to - skip unavailable videos in a playlist - --abort-on-error Abort downloading of further videos (in the - playlist or the command line) if an error - occurs - --dump-user-agent Display the current browser identification - --list-extractors List all supported extractors - --extractor-descriptions Output descriptions of all supported - extractors - --force-generic-extractor Force extraction to use the generic - extractor - --default-search PREFIX Use this prefix for unqualified URLs. For - example "gvsearch2:" downloads two videos - from google videos for youtube-dl "large - apple". Use the value "auto" to let - youtube-dl guess ("auto_warning" to emit a - warning when guessing). "error" just throws - an error. The default value "fixup_error" - repairs broken URLs, but emits an error if - this is not possible instead of searching. - --ignore-config Do not read configuration files. When given - in the global configuration file - /etc/youtube-dl.conf: Do not read the user - configuration in ~/.config/youtube- - dl/config (%APPDATA%/youtube-dl/config.txt - on Windows) - --config-location PATH Location of the configuration file; either - the path to the config or its containing - directory. - --flat-playlist Do not extract the videos of a playlist, - only list them. - --mark-watched Mark videos watched (YouTube only) - --no-mark-watched Do not mark videos watched (YouTube only) - --no-color Do not emit color codes in output + -h, --help Print this help text and exit + --version Print program version and exit + -U, --update Update this program to latest version. + Make sure that you have sufficient + permissions (run with sudo if needed) + -i, --ignore-errors Continue on download errors, for + example to skip unavailable videos in a + playlist + --abort-on-error Abort downloading of further videos (in + the playlist or the command line) if an + error occurs + --dump-user-agent Display the current browser + identification + --list-extractors List all supported extractors + --extractor-descriptions Output descriptions of all supported + extractors + --force-generic-extractor Force extraction to use the generic + extractor + --default-search PREFIX Use this prefix for unqualified URLs. + For example "gvsearch2:" downloads two + videos from google videos for youtube- + dl "large apple". Use the value "auto" + to let youtube-dl guess ("auto_warning" + to emit a warning when guessing). + "error" just throws an error. The + default value "fixup_error" repairs + broken URLs, but emits an error if this + is not possible instead of searching. + --ignore-config Do not read configuration files. When + given in the global configuration file + /etc/youtube-dl.conf: Do not read the + user configuration in + ~/.config/youtube-dl/config + (%APPDATA%/youtube-dl/config.txt on + Windows) + --config-location PATH Location of the configuration file; + either the path to the config or its + containing directory. + --flat-playlist Do not extract the videos of a + playlist, only list them. + --mark-watched Mark videos watched (YouTube only) + --no-mark-watched Do not mark videos watched (YouTube + only) + --no-color Do not emit color codes in output ## Network Options: - --proxy URL Use the specified HTTP/HTTPS/SOCKS proxy. - To enable SOCKS proxy, specify a proper - scheme. For example - socks5://127.0.0.1:1080/. Pass in an empty - string (--proxy "") for direct connection - --socket-timeout SECONDS Time to wait before giving up, in seconds - --source-address IP Client-side IP address to bind to - -4, --force-ipv4 Make all connections via IPv4 - -6, --force-ipv6 Make all connections via IPv6 + --proxy URL Use the specified HTTP/HTTPS/SOCKS + proxy. To enable SOCKS proxy, specify a + proper scheme. For example + socks5://127.0.0.1:1080/. Pass in an + empty string (--proxy "") for direct + connection + --socket-timeout SECONDS Time to wait before giving up, in + seconds + --source-address IP Client-side IP address to bind to + -4, --force-ipv4 Make all connections via IPv4 + -6, --force-ipv6 Make all connections via IPv6 ## Geo Restriction: - --geo-verification-proxy URL Use this proxy to verify the IP address for - some geo-restricted sites. The default - proxy specified by --proxy (or none, if the - option is not present) is used for the - actual downloading. - --geo-bypass Bypass geographic restriction via faking - X-Forwarded-For HTTP header - --no-geo-bypass Do not bypass geographic restriction via - faking X-Forwarded-For HTTP header - --geo-bypass-country CODE Force bypass geographic restriction with - explicitly provided two-letter ISO 3166-2 - country code - --geo-bypass-ip-block IP_BLOCK Force bypass geographic restriction with - explicitly provided IP block in CIDR - notation + --geo-verification-proxy URL Use this proxy to verify the IP address + for some geo-restricted sites. The + default proxy specified by --proxy (or + none, if the option is not present) is + used for the actual downloading. + --geo-bypass Bypass geographic restriction via + faking X-Forwarded-For HTTP header + --no-geo-bypass Do not bypass geographic restriction + via faking X-Forwarded-For HTTP header + --geo-bypass-country CODE Force bypass geographic restriction + with explicitly provided two-letter ISO + 3166-2 country code + --geo-bypass-ip-block IP_BLOCK Force bypass geographic restriction + with explicitly provided IP block in + CIDR notation ## Video Selection: - --playlist-start NUMBER Playlist video to start at (default is 1) - --playlist-end NUMBER Playlist video to end at (default is last) - --playlist-items ITEM_SPEC Playlist video items to download. Specify - indices of the videos in the playlist - separated by commas like: "--playlist-items - 1,2,5,8" if you want to download videos - indexed 1, 2, 5, 8 in the playlist. You can - specify range: "--playlist-items - 1-3,7,10-13", it will download the videos - at index 1, 2, 3, 7, 10, 11, 12 and 13. - --match-title REGEX Download only matching titles (regex or - caseless sub-string) - --reject-title REGEX Skip download for matching titles (regex or - caseless sub-string) - --max-downloads NUMBER Abort after downloading NUMBER files - --min-filesize SIZE Do not download any videos smaller than - SIZE (e.g. 50k or 44.6m) - --max-filesize SIZE Do not download any videos larger than SIZE - (e.g. 50k or 44.6m) - --date DATE Download only videos uploaded in this date - --datebefore DATE Download only videos uploaded on or before - this date (i.e. inclusive) - --dateafter DATE Download only videos uploaded on or after - this date (i.e. inclusive) - --min-views COUNT Do not download any videos with less than - COUNT views - --max-views COUNT Do not download any videos with more than - COUNT views - --match-filter FILTER Generic video filter. Specify any key (see - the "OUTPUT TEMPLATE" for a list of - available keys) to match if the key is - present, !key to check if the key is not - present, key > NUMBER (like "comment_count - > 12", also works with >=, <, <=, !=, =) to - compare against a number, key = 'LITERAL' - (like "uploader = 'Mike Smith'", also works - with !=) to match against a string literal - and & to require multiple matches. Values - which are not known are excluded unless you - put a question mark (?) after the operator. - For example, to only match videos that have - been liked more than 100 times and disliked - less than 50 times (or the dislike - functionality is not available at the given - service), but who also have a description, - use --match-filter "like_count > 100 & - dislike_count NUMBER (like + "comment_count > 12", also works with + >=, <, <=, !=, =) to compare against a + number, key = 'LITERAL' (like "uploader + = 'Mike Smith'", also works with !=) to + match against a string literal and & to + require multiple matches. Values which + are not known are excluded unless you + put a question mark (?) after the + operator. For example, to only match + videos that have been liked more than + 100 times and disliked less than 50 + times (or the dislike functionality is + not available at the given service), + but who also have a description, use + --match-filter "like_count > 100 & + dislike_count .+?) - (?P.+)" - --xattrs Write metadata to the video file's xattrs - (using dublin core and xdg standards) - --fixup POLICY Automatically correct known faults of the - file. One of never (do nothing), warn (only - emit a warning), detect_or_warn (the - default; fix file if we can, warn - otherwise) - --prefer-avconv Prefer avconv over ffmpeg for running the - postprocessors - --prefer-ffmpeg Prefer ffmpeg over avconv for running the - postprocessors (default) - --ffmpeg-location PATH Location of the ffmpeg/avconv binary; - either the path to the binary or its - containing directory. - --exec CMD Execute a command on the file after - downloading and post-processing, similar to - find's -exec syntax. Example: --exec 'adb - push {} /sdcard/Music/ && rm {}' - --convert-subs FORMAT Convert the subtitles to other format - (currently supported: srt|ass|vtt|lrc) + -x, --extract-audio Convert video files to audio-only files + (requires ffmpeg/avconv and + ffprobe/avprobe) + --audio-format FORMAT Specify audio format: "best", "aac", + "flac", "mp3", "m4a", "opus", "vorbis", + or "wav"; "best" by default; No effect + without -x + --audio-quality QUALITY Specify ffmpeg/avconv audio quality, + insert a value between 0 (better) and 9 + (worse) for VBR or a specific bitrate + like 128K (default 5) + --recode-video FORMAT Encode the video to another format if + necessary (currently supported: + mp4|flv|ogg|webm|mkv|avi) + --postprocessor-args ARGS Give these arguments to the + postprocessor + -k, --keep-video Keep the video file on disk after the + post-processing; the video is erased by + default + --no-post-overwrites Do not overwrite post-processed files; + the post-processed files are + overwritten by default + --embed-subs Embed subtitles in the video (only for + mp4, webm and mkv videos) + --embed-thumbnail Embed thumbnail in the audio as cover + art + --add-metadata Write metadata to the video file + --metadata-from-title FORMAT Parse additional metadata like song + title / artist from the video title. + The format syntax is the same as + --output. Regular expression with named + capture groups may also be used. The + parsed parameters replace existing + values. Example: --metadata-from-title + "%(artist)s - %(title)s" matches a + title like "Coldplay - Paradise". + Example (regex): --metadata-from-title + "(?P<artist>.+?) - (?P<title>.+)" + --xattrs Write metadata to the video file's + xattrs (using dublin core and xdg + standards) + --fixup POLICY Automatically correct known faults of + the file. One of never (do nothing), + warn (only emit a warning), + detect_or_warn (the default; fix file + if we can, warn otherwise) + --prefer-avconv Prefer avconv over ffmpeg for running + the postprocessors + --prefer-ffmpeg Prefer ffmpeg over avconv for running + the postprocessors (default) + --ffmpeg-location PATH Location of the ffmpeg/avconv binary; + either the path to the binary or its + containing directory. + --exec CMD Execute a command on the file after + downloading and post-processing, + similar to find's -exec syntax. + Example: --exec 'adb push {} + /sdcard/Music/ && rm {}' + --convert-subs FORMAT Convert the subtitles to other format + (currently supported: srt|ass|vtt|lrc) # CONFIGURATION @@ -583,7 +620,7 @@ Available for the media that is a track or a part of a music album: - `disc_number` (numeric): Number of the disc or other physical medium the track belongs to - `release_year` (numeric): Year (YYYY) when the album was released -Each aforementioned sequence when referenced in an output template will be replaced by the actual value corresponding to the sequence name. Note that some of the sequences are not guaranteed to be present since they depend on the metadata obtained by a particular extractor. Such sequences will be replaced with `NA`. +Each aforementioned sequence when referenced in an output template will be replaced by the actual value corresponding to the sequence name. Note that some of the sequences are not guaranteed to be present since they depend on the metadata obtained by a particular extractor. Such sequences will be replaced with placeholder value provided with `--output-na-placeholder` (`NA` by default). For example for `-o %(title)s-%(id)s.%(ext)s` and an mp4 video with title `youtube-dl test video` and id `BaW_jenozKcj`, this will result in a `youtube-dl test video-BaW_jenozKcj.mp4` file created in the current directory. diff --git a/README.txt b/README.txt index c4e573fe..fc65c471 100644 --- a/README.txt +++ b/README.txt @@ -72,420 +72,457 @@ like. OPTIONS - -h, --help Print this help text and exit - --version Print program version and exit - -U, --update Update this program to latest version. Make - sure that you have sufficient permissions - (run with sudo if needed) - -i, --ignore-errors Continue on download errors, for example to - skip unavailable videos in a playlist - --abort-on-error Abort downloading of further videos (in the - playlist or the command line) if an error - occurs - --dump-user-agent Display the current browser identification - --list-extractors List all supported extractors - --extractor-descriptions Output descriptions of all supported - extractors - --force-generic-extractor Force extraction to use the generic - extractor - --default-search PREFIX Use this prefix for unqualified URLs. For - example "gvsearch2:" downloads two videos - from google videos for youtube-dl "large - apple". Use the value "auto" to let - youtube-dl guess ("auto_warning" to emit a - warning when guessing). "error" just throws - an error. The default value "fixup_error" - repairs broken URLs, but emits an error if - this is not possible instead of searching. - --ignore-config Do not read configuration files. When given - in the global configuration file - /etc/youtube-dl.conf: Do not read the user - configuration in ~/.config/youtube- - dl/config (%APPDATA%/youtube-dl/config.txt - on Windows) - --config-location PATH Location of the configuration file; either - the path to the config or its containing - directory. - --flat-playlist Do not extract the videos of a playlist, - only list them. - --mark-watched Mark videos watched (YouTube only) - --no-mark-watched Do not mark videos watched (YouTube only) - --no-color Do not emit color codes in output + -h, --help Print this help text and exit + --version Print program version and exit + -U, --update Update this program to latest version. + Make sure that you have sufficient + permissions (run with sudo if needed) + -i, --ignore-errors Continue on download errors, for + example to skip unavailable videos in a + playlist + --abort-on-error Abort downloading of further videos (in + the playlist or the command line) if an + error occurs + --dump-user-agent Display the current browser + identification + --list-extractors List all supported extractors + --extractor-descriptions Output descriptions of all supported + extractors + --force-generic-extractor Force extraction to use the generic + extractor + --default-search PREFIX Use this prefix for unqualified URLs. + For example "gvsearch2:" downloads two + videos from google videos for youtube- + dl "large apple". Use the value "auto" + to let youtube-dl guess ("auto_warning" + to emit a warning when guessing). + "error" just throws an error. The + default value "fixup_error" repairs + broken URLs, but emits an error if this + is not possible instead of searching. + --ignore-config Do not read configuration files. When + given in the global configuration file + /etc/youtube-dl.conf: Do not read the + user configuration in + ~/.config/youtube-dl/config + (%APPDATA%/youtube-dl/config.txt on + Windows) + --config-location PATH Location of the configuration file; + either the path to the config or its + containing directory. + --flat-playlist Do not extract the videos of a + playlist, only list them. + --mark-watched Mark videos watched (YouTube only) + --no-mark-watched Do not mark videos watched (YouTube + only) + --no-color Do not emit color codes in output Network Options: - --proxy URL Use the specified HTTP/HTTPS/SOCKS proxy. - To enable SOCKS proxy, specify a proper - scheme. For example - socks5://127.0.0.1:1080/. Pass in an empty - string (--proxy "") for direct connection - --socket-timeout SECONDS Time to wait before giving up, in seconds - --source-address IP Client-side IP address to bind to - -4, --force-ipv4 Make all connections via IPv4 - -6, --force-ipv6 Make all connections via IPv6 + --proxy URL Use the specified HTTP/HTTPS/SOCKS + proxy. To enable SOCKS proxy, specify a + proper scheme. For example + socks5://127.0.0.1:1080/. Pass in an + empty string (--proxy "") for direct + connection + --socket-timeout SECONDS Time to wait before giving up, in + seconds + --source-address IP Client-side IP address to bind to + -4, --force-ipv4 Make all connections via IPv4 + -6, --force-ipv6 Make all connections via IPv6 Geo Restriction: - --geo-verification-proxy URL Use this proxy to verify the IP address for - some geo-restricted sites. The default - proxy specified by --proxy (or none, if the - option is not present) is used for the - actual downloading. - --geo-bypass Bypass geographic restriction via faking - X-Forwarded-For HTTP header - --no-geo-bypass Do not bypass geographic restriction via - faking X-Forwarded-For HTTP header - --geo-bypass-country CODE Force bypass geographic restriction with - explicitly provided two-letter ISO 3166-2 - country code - --geo-bypass-ip-block IP_BLOCK Force bypass geographic restriction with - explicitly provided IP block in CIDR - notation + --geo-verification-proxy URL Use this proxy to verify the IP address + for some geo-restricted sites. The + default proxy specified by --proxy (or + none, if the option is not present) is + used for the actual downloading. + --geo-bypass Bypass geographic restriction via + faking X-Forwarded-For HTTP header + --no-geo-bypass Do not bypass geographic restriction + via faking X-Forwarded-For HTTP header + --geo-bypass-country CODE Force bypass geographic restriction + with explicitly provided two-letter ISO + 3166-2 country code + --geo-bypass-ip-block IP_BLOCK Force bypass geographic restriction + with explicitly provided IP block in + CIDR notation Video Selection: - --playlist-start NUMBER Playlist video to start at (default is 1) - --playlist-end NUMBER Playlist video to end at (default is last) - --playlist-items ITEM_SPEC Playlist video items to download. Specify - indices of the videos in the playlist - separated by commas like: "--playlist-items - 1,2,5,8" if you want to download videos - indexed 1, 2, 5, 8 in the playlist. You can - specify range: "--playlist-items - 1-3,7,10-13", it will download the videos - at index 1, 2, 3, 7, 10, 11, 12 and 13. - --match-title REGEX Download only matching titles (regex or - caseless sub-string) - --reject-title REGEX Skip download for matching titles (regex or - caseless sub-string) - --max-downloads NUMBER Abort after downloading NUMBER files - --min-filesize SIZE Do not download any videos smaller than - SIZE (e.g. 50k or 44.6m) - --max-filesize SIZE Do not download any videos larger than SIZE - (e.g. 50k or 44.6m) - --date DATE Download only videos uploaded in this date - --datebefore DATE Download only videos uploaded on or before - this date (i.e. inclusive) - --dateafter DATE Download only videos uploaded on or after - this date (i.e. inclusive) - --min-views COUNT Do not download any videos with less than - COUNT views - --max-views COUNT Do not download any videos with more than - COUNT views - --match-filter FILTER Generic video filter. Specify any key (see - the "OUTPUT TEMPLATE" for a list of - available keys) to match if the key is - present, !key to check if the key is not - present, key > NUMBER (like "comment_count - > 12", also works with >=, <, <=, !=, =) to - compare against a number, key = 'LITERAL' - (like "uploader = 'Mike Smith'", also works - with !=) to match against a string literal - and & to require multiple matches. Values - which are not known are excluded unless you - put a question mark (?) after the operator. - For example, to only match videos that have - been liked more than 100 times and disliked - less than 50 times (or the dislike - functionality is not available at the given - service), but who also have a description, - use --match-filter "like_count > 100 & - dislike_count <? 50 & description" . - --no-playlist Download only the video, if the URL refers - to a video and a playlist. - --yes-playlist Download the playlist, if the URL refers to - a video and a playlist. - --age-limit YEARS Download only videos suitable for the given - age - --download-archive FILE Download only videos not listed in the - archive file. Record the IDs of all - downloaded videos in it. - --include-ads Download advertisements as well - (experimental) + --playlist-start NUMBER Playlist video to start at (default is + 1) + --playlist-end NUMBER Playlist video to end at (default is + last) + --playlist-items ITEM_SPEC Playlist video items to download. + Specify indices of the videos in the + playlist separated by commas like: "-- + playlist-items 1,2,5,8" if you want to + download videos indexed 1, 2, 5, 8 in + the playlist. You can specify range: " + --playlist-items 1-3,7,10-13", it will + download the videos at index 1, 2, 3, + 7, 10, 11, 12 and 13. + --match-title REGEX Download only matching titles (regex or + caseless sub-string) + --reject-title REGEX Skip download for matching titles + (regex or caseless sub-string) + --max-downloads NUMBER Abort after downloading NUMBER files + --min-filesize SIZE Do not download any videos smaller than + SIZE (e.g. 50k or 44.6m) + --max-filesize SIZE Do not download any videos larger than + SIZE (e.g. 50k or 44.6m) + --date DATE Download only videos uploaded in this + date + --datebefore DATE Download only videos uploaded on or + before this date (i.e. inclusive) + --dateafter DATE Download only videos uploaded on or + after this date (i.e. inclusive) + --min-views COUNT Do not download any videos with less + than COUNT views + --max-views COUNT Do not download any videos with more + than COUNT views + --match-filter FILTER Generic video filter. Specify any key + (see the "OUTPUT TEMPLATE" for a list + of available keys) to match if the key + is present, !key to check if the key is + not present, key > NUMBER (like + "comment_count > 12", also works with + >=, <, <=, !=, =) to compare against a + number, key = 'LITERAL' (like "uploader + = 'Mike Smith'", also works with !=) to + match against a string literal and & to + require multiple matches. Values which + are not known are excluded unless you + put a question mark (?) after the + operator. For example, to only match + videos that have been liked more than + 100 times and disliked less than 50 + times (or the dislike functionality is + not available at the given service), + but who also have a description, use + --match-filter "like_count > 100 & + dislike_count <? 50 & description" . + --no-playlist Download only the video, if the URL + refers to a video and a playlist. + --yes-playlist Download the playlist, if the URL + refers to a video and a playlist. + --age-limit YEARS Download only videos suitable for the + given age + --download-archive FILE Download only videos not listed in the + archive file. Record the IDs of all + downloaded videos in it. + --include-ads Download advertisements as well + (experimental) Download Options: - -r, --limit-rate RATE Maximum download rate in bytes per second - (e.g. 50K or 4.2M) - -R, --retries RETRIES Number of retries (default is 10), or - "infinite". - --fragment-retries RETRIES Number of retries for a fragment (default - is 10), or "infinite" (DASH, hlsnative and - ISM) - --skip-unavailable-fragments Skip unavailable fragments (DASH, hlsnative - and ISM) - --abort-on-unavailable-fragment Abort downloading when some fragment is not - available - --keep-fragments Keep downloaded fragments on disk after - downloading is finished; fragments are - erased by default - --buffer-size SIZE Size of download buffer (e.g. 1024 or 16K) - (default is 1024) - --no-resize-buffer Do not automatically adjust the buffer - size. By default, the buffer size is - automatically resized from an initial value - of SIZE. - --http-chunk-size SIZE Size of a chunk for chunk-based HTTP - downloading (e.g. 10485760 or 10M) (default - is disabled). May be useful for bypassing - bandwidth throttling imposed by a webserver - (experimental) - --playlist-reverse Download playlist videos in reverse order - --playlist-random Download playlist videos in random order - --xattr-set-filesize Set file xattribute ytdl.filesize with - expected file size - --hls-prefer-native Use the native HLS downloader instead of - ffmpeg - --hls-prefer-ffmpeg Use ffmpeg instead of the native HLS - downloader - --hls-use-mpegts Use the mpegts container for HLS videos, - allowing to play the video while - downloading (some players may not be able - to play it) - --external-downloader COMMAND Use the specified external downloader. - Currently supports - aria2c,avconv,axel,curl,ffmpeg,httpie,wget - --external-downloader-args ARGS Give these arguments to the external - downloader + -r, --limit-rate RATE Maximum download rate in bytes per + second (e.g. 50K or 4.2M) + -R, --retries RETRIES Number of retries (default is 10), or + "infinite". + --fragment-retries RETRIES Number of retries for a fragment + (default is 10), or "infinite" (DASH, + hlsnative and ISM) + --skip-unavailable-fragments Skip unavailable fragments (DASH, + hlsnative and ISM) + --abort-on-unavailable-fragment Abort downloading when some fragment is + not available + --keep-fragments Keep downloaded fragments on disk after + downloading is finished; fragments are + erased by default + --buffer-size SIZE Size of download buffer (e.g. 1024 or + 16K) (default is 1024) + --no-resize-buffer Do not automatically adjust the buffer + size. By default, the buffer size is + automatically resized from an initial + value of SIZE. + --http-chunk-size SIZE Size of a chunk for chunk-based HTTP + downloading (e.g. 10485760 or 10M) + (default is disabled). May be useful + for bypassing bandwidth throttling + imposed by a webserver (experimental) + --playlist-reverse Download playlist videos in reverse + order + --playlist-random Download playlist videos in random + order + --xattr-set-filesize Set file xattribute ytdl.filesize with + expected file size + --hls-prefer-native Use the native HLS downloader instead + of ffmpeg + --hls-prefer-ffmpeg Use ffmpeg instead of the native HLS + downloader + --hls-use-mpegts Use the mpegts container for HLS + videos, allowing to play the video + while downloading (some players may not + be able to play it) + --external-downloader COMMAND Use the specified external downloader. + Currently supports aria2c,avconv,axel,c + url,ffmpeg,httpie,wget + --external-downloader-args ARGS Give these arguments to the external + downloader Filesystem Options: - -a, --batch-file FILE File containing URLs to download ('-' for - stdin), one URL per line. Lines starting - with '#', ';' or ']' are considered as - comments and ignored. - --id Use only video ID in file name - -o, --output TEMPLATE Output filename template, see the "OUTPUT - TEMPLATE" for all the info - --autonumber-start NUMBER Specify the start value for %(autonumber)s - (default is 1) - --restrict-filenames Restrict filenames to only ASCII - characters, and avoid "&" and spaces in - filenames - -w, --no-overwrites Do not overwrite files - -c, --continue Force resume of partially downloaded files. - By default, youtube-dl will resume - downloads if possible. - --no-continue Do not resume partially downloaded files - (restart from beginning) - --no-part Do not use .part files - write directly - into output file - --no-mtime Do not use the Last-modified header to set - the file modification time - --write-description Write video description to a .description - file - --write-info-json Write video metadata to a .info.json file - --write-annotations Write video annotations to a - .annotations.xml file - --load-info-json FILE JSON file containing the video information - (created with the "--write-info-json" - option) - --cookies FILE File to read cookies from and dump cookie - jar in - --cache-dir DIR Location in the filesystem where youtube-dl - can store some downloaded information - permanently. By default - $XDG_CACHE_HOME/youtube-dl or - ~/.cache/youtube-dl . At the moment, only - YouTube player files (for videos with - obfuscated signatures) are cached, but that - may change. - --no-cache-dir Disable filesystem caching - --rm-cache-dir Delete all filesystem cache files + -a, --batch-file FILE File containing URLs to download ('-' + for stdin), one URL per line. Lines + starting with '#', ';' or ']' are + considered as comments and ignored. + --id Use only video ID in file name + -o, --output TEMPLATE Output filename template, see the + "OUTPUT TEMPLATE" for all the info + --output-na-placeholder PLACEHOLDER Placeholder value for unavailable meta + fields in output filename template + (default is "NA") + --autonumber-start NUMBER Specify the start value for + %(autonumber)s (default is 1) + --restrict-filenames Restrict filenames to only ASCII + characters, and avoid "&" and spaces in + filenames + -w, --no-overwrites Do not overwrite files + -c, --continue Force resume of partially downloaded + files. By default, youtube-dl will + resume downloads if possible. + --no-continue Do not resume partially downloaded + files (restart from beginning) + --no-part Do not use .part files - write directly + into output file + --no-mtime Do not use the Last-modified header to + set the file modification time + --write-description Write video description to a + .description file + --write-info-json Write video metadata to a .info.json + file + --write-annotations Write video annotations to a + .annotations.xml file + --load-info-json FILE JSON file containing the video + information (created with the "--write- + info-json" option) + --cookies FILE File to read cookies from and dump + cookie jar in + --cache-dir DIR Location in the filesystem where + youtube-dl can store some downloaded + information permanently. By default + $XDG_CACHE_HOME/youtube-dl or + ~/.cache/youtube-dl . At the moment, + only YouTube player files (for videos + with obfuscated signatures) are cached, + but that may change. + --no-cache-dir Disable filesystem caching + --rm-cache-dir Delete all filesystem cache files Thumbnail images: - --write-thumbnail Write thumbnail image to disk - --write-all-thumbnails Write all thumbnail image formats to disk - --list-thumbnails Simulate and list all available thumbnail - formats + --write-thumbnail Write thumbnail image to disk + --write-all-thumbnails Write all thumbnail image formats to + disk + --list-thumbnails Simulate and list all available + thumbnail formats Verbosity / Simulation Options: - -q, --quiet Activate quiet mode - --no-warnings Ignore warnings - -s, --simulate Do not download the video and do not write - anything to disk - --skip-download Do not download the video - -g, --get-url Simulate, quiet but print URL - -e, --get-title Simulate, quiet but print title - --get-id Simulate, quiet but print id - --get-thumbnail Simulate, quiet but print thumbnail URL - --get-description Simulate, quiet but print video description - --get-duration Simulate, quiet but print video length - --get-filename Simulate, quiet but print output filename - --get-format Simulate, quiet but print output format - -j, --dump-json Simulate, quiet but print JSON information. - See the "OUTPUT TEMPLATE" for a description - of available keys. - -J, --dump-single-json Simulate, quiet but print JSON information - for each command-line argument. If the URL - refers to a playlist, dump the whole - playlist information in a single line. - --print-json Be quiet and print the video information as - JSON (video is still being downloaded). - --newline Output progress bar as new lines - --no-progress Do not print progress bar - --console-title Display progress in console titlebar - -v, --verbose Print various debugging information - --dump-pages Print downloaded pages encoded using base64 - to debug problems (very verbose) - --write-pages Write downloaded intermediary pages to - files in the current directory to debug - problems - --print-traffic Display sent and read HTTP traffic - -C, --call-home Contact the youtube-dl server for debugging - --no-call-home Do NOT contact the youtube-dl server for - debugging + -q, --quiet Activate quiet mode + --no-warnings Ignore warnings + -s, --simulate Do not download the video and do not + write anything to disk + --skip-download Do not download the video + -g, --get-url Simulate, quiet but print URL + -e, --get-title Simulate, quiet but print title + --get-id Simulate, quiet but print id + --get-thumbnail Simulate, quiet but print thumbnail URL + --get-description Simulate, quiet but print video + description + --get-duration Simulate, quiet but print video length + --get-filename Simulate, quiet but print output + filename + --get-format Simulate, quiet but print output format + -j, --dump-json Simulate, quiet but print JSON + information. See the "OUTPUT TEMPLATE" + for a description of available keys. + -J, --dump-single-json Simulate, quiet but print JSON + information for each command-line + argument. If the URL refers to a + playlist, dump the whole playlist + information in a single line. + --print-json Be quiet and print the video + information as JSON (video is still + being downloaded). + --newline Output progress bar as new lines + --no-progress Do not print progress bar + --console-title Display progress in console titlebar + -v, --verbose Print various debugging information + --dump-pages Print downloaded pages encoded using + base64 to debug problems (very verbose) + --write-pages Write downloaded intermediary pages to + files in the current directory to debug + problems + --print-traffic Display sent and read HTTP traffic + -C, --call-home Contact the youtube-dl server for + debugging + --no-call-home Do NOT contact the youtube-dl server + for debugging Workarounds: - --encoding ENCODING Force the specified encoding (experimental) - --no-check-certificate Suppress HTTPS certificate validation - --prefer-insecure Use an unencrypted connection to retrieve - information about the video. (Currently - supported only for YouTube) - --user-agent UA Specify a custom user agent - --referer URL Specify a custom referer, use if the video - access is restricted to one domain - --add-header FIELD:VALUE Specify a custom HTTP header and its value, - separated by a colon ':'. You can use this - option multiple times - --bidi-workaround Work around terminals that lack - bidirectional text support. Requires bidiv - or fribidi executable in PATH - --sleep-interval SECONDS Number of seconds to sleep before each - download when used alone or a lower bound - of a range for randomized sleep before each - download (minimum possible number of - seconds to sleep) when used along with - --max-sleep-interval. - --max-sleep-interval SECONDS Upper bound of a range for randomized sleep - before each download (maximum possible - number of seconds to sleep). Must only be - used along with --min-sleep-interval. + --encoding ENCODING Force the specified encoding + (experimental) + --no-check-certificate Suppress HTTPS certificate validation + --prefer-insecure Use an unencrypted connection to + retrieve information about the video. + (Currently supported only for YouTube) + --user-agent UA Specify a custom user agent + --referer URL Specify a custom referer, use if the + video access is restricted to one + domain + --add-header FIELD:VALUE Specify a custom HTTP header and its + value, separated by a colon ':'. You + can use this option multiple times + --bidi-workaround Work around terminals that lack + bidirectional text support. Requires + bidiv or fribidi executable in PATH + --sleep-interval SECONDS Number of seconds to sleep before each + download when used alone or a lower + bound of a range for randomized sleep + before each download (minimum possible + number of seconds to sleep) when used + along with --max-sleep-interval. + --max-sleep-interval SECONDS Upper bound of a range for randomized + sleep before each download (maximum + possible number of seconds to sleep). + Must only be used along with --min- + sleep-interval. Video Format Options: - -f, --format FORMAT Video format code, see the "FORMAT - SELECTION" for all the info - --all-formats Download all available video formats - --prefer-free-formats Prefer free video formats unless a specific - one is requested - -F, --list-formats List all available formats of requested - videos - --youtube-skip-dash-manifest Do not download the DASH manifests and - related data on YouTube videos - --merge-output-format FORMAT If a merge is required (e.g. - bestvideo+bestaudio), output to given - container format. One of mkv, mp4, ogg, - webm, flv. Ignored if no merge is required + -f, --format FORMAT Video format code, see the "FORMAT + SELECTION" for all the info + --all-formats Download all available video formats + --prefer-free-formats Prefer free video formats unless a + specific one is requested + -F, --list-formats List all available formats of requested + videos + --youtube-skip-dash-manifest Do not download the DASH manifests and + related data on YouTube videos + --merge-output-format FORMAT If a merge is required (e.g. + bestvideo+bestaudio), output to given + container format. One of mkv, mp4, ogg, + webm, flv. Ignored if no merge is + required Subtitle Options: - --write-sub Write subtitle file - --write-auto-sub Write automatically generated subtitle file - (YouTube only) - --all-subs Download all the available subtitles of the - video - --list-subs List all available subtitles for the video - --sub-format FORMAT Subtitle format, accepts formats - preference, for example: "srt" or - "ass/srt/best" - --sub-lang LANGS Languages of the subtitles to download - (optional) separated by commas, use --list- - subs for available language tags + --write-sub Write subtitle file + --write-auto-sub Write automatically generated subtitle + file (YouTube only) + --all-subs Download all the available subtitles of + the video + --list-subs List all available subtitles for the + video + --sub-format FORMAT Subtitle format, accepts formats + preference, for example: "srt" or + "ass/srt/best" + --sub-lang LANGS Languages of the subtitles to download + (optional) separated by commas, use + --list-subs for available language tags Authentication Options: - -u, --username USERNAME Login with this account ID - -p, --password PASSWORD Account password. If this option is left - out, youtube-dl will ask interactively. - -2, --twofactor TWOFACTOR Two-factor authentication code - -n, --netrc Use .netrc authentication data - --video-password PASSWORD Video password (vimeo, youku) + -u, --username USERNAME Login with this account ID + -p, --password PASSWORD Account password. If this option is + left out, youtube-dl will ask + interactively. + -2, --twofactor TWOFACTOR Two-factor authentication code + -n, --netrc Use .netrc authentication data + --video-password PASSWORD Video password (vimeo, youku) Adobe Pass Options: - --ap-mso MSO Adobe Pass multiple-system operator (TV - provider) identifier, use --ap-list-mso for - a list of available MSOs - --ap-username USERNAME Multiple-system operator account login - --ap-password PASSWORD Multiple-system operator account password. - If this option is left out, youtube-dl will - ask interactively. - --ap-list-mso List all supported multiple-system - operators + --ap-mso MSO Adobe Pass multiple-system operator (TV + provider) identifier, use --ap-list-mso + for a list of available MSOs + --ap-username USERNAME Multiple-system operator account login + --ap-password PASSWORD Multiple-system operator account + password. If this option is left out, + youtube-dl will ask interactively. + --ap-list-mso List all supported multiple-system + operators Post-processing Options: - -x, --extract-audio Convert video files to audio-only files - (requires ffmpeg or avconv and ffprobe or - avprobe) - --audio-format FORMAT Specify audio format: "best", "aac", - "flac", "mp3", "m4a", "opus", "vorbis", or - "wav"; "best" by default; No effect without - -x - --audio-quality QUALITY Specify ffmpeg/avconv audio quality, insert - a value between 0 (better) and 9 (worse) - for VBR or a specific bitrate like 128K - (default 5) - --recode-video FORMAT Encode the video to another format if - necessary (currently supported: - mp4|flv|ogg|webm|mkv|avi) - --postprocessor-args ARGS Give these arguments to the postprocessor - -k, --keep-video Keep the video file on disk after the post- - processing; the video is erased by default - --no-post-overwrites Do not overwrite post-processed files; the - post-processed files are overwritten by - default - --embed-subs Embed subtitles in the video (only for mp4, - webm and mkv videos) - --embed-thumbnail Embed thumbnail in the audio as cover art - --add-metadata Write metadata to the video file - --metadata-from-title FORMAT Parse additional metadata like song title / - artist from the video title. The format - syntax is the same as --output. Regular - expression with named capture groups may - also be used. The parsed parameters replace - existing values. Example: --metadata-from- - title "%(artist)s - %(title)s" matches a - title like "Coldplay - Paradise". Example - (regex): --metadata-from-title - "(?P<artist>.+?) - (?P<title>.+)" - --xattrs Write metadata to the video file's xattrs - (using dublin core and xdg standards) - --fixup POLICY Automatically correct known faults of the - file. One of never (do nothing), warn (only - emit a warning), detect_or_warn (the - default; fix file if we can, warn - otherwise) - --prefer-avconv Prefer avconv over ffmpeg for running the - postprocessors - --prefer-ffmpeg Prefer ffmpeg over avconv for running the - postprocessors (default) - --ffmpeg-location PATH Location of the ffmpeg/avconv binary; - either the path to the binary or its - containing directory. - --exec CMD Execute a command on the file after - downloading and post-processing, similar to - find's -exec syntax. Example: --exec 'adb - push {} /sdcard/Music/ && rm {}' - --convert-subs FORMAT Convert the subtitles to other format - (currently supported: srt|ass|vtt|lrc) + -x, --extract-audio Convert video files to audio-only files + (requires ffmpeg/avconv and + ffprobe/avprobe) + --audio-format FORMAT Specify audio format: "best", "aac", + "flac", "mp3", "m4a", "opus", "vorbis", + or "wav"; "best" by default; No effect + without -x + --audio-quality QUALITY Specify ffmpeg/avconv audio quality, + insert a value between 0 (better) and 9 + (worse) for VBR or a specific bitrate + like 128K (default 5) + --recode-video FORMAT Encode the video to another format if + necessary (currently supported: + mp4|flv|ogg|webm|mkv|avi) + --postprocessor-args ARGS Give these arguments to the + postprocessor + -k, --keep-video Keep the video file on disk after the + post-processing; the video is erased by + default + --no-post-overwrites Do not overwrite post-processed files; + the post-processed files are + overwritten by default + --embed-subs Embed subtitles in the video (only for + mp4, webm and mkv videos) + --embed-thumbnail Embed thumbnail in the audio as cover + art + --add-metadata Write metadata to the video file + --metadata-from-title FORMAT Parse additional metadata like song + title / artist from the video title. + The format syntax is the same as + --output. Regular expression with named + capture groups may also be used. The + parsed parameters replace existing + values. Example: --metadata-from-title + "%(artist)s - %(title)s" matches a + title like "Coldplay - Paradise". + Example (regex): --metadata-from-title + "(?P<artist>.+?) - (?P<title>.+)" + --xattrs Write metadata to the video file's + xattrs (using dublin core and xdg + standards) + --fixup POLICY Automatically correct known faults of + the file. One of never (do nothing), + warn (only emit a warning), + detect_or_warn (the default; fix file + if we can, warn otherwise) + --prefer-avconv Prefer avconv over ffmpeg for running + the postprocessors + --prefer-ffmpeg Prefer ffmpeg over avconv for running + the postprocessors (default) + --ffmpeg-location PATH Location of the ffmpeg/avconv binary; + either the path to the binary or its + containing directory. + --exec CMD Execute a command on the file after + downloading and post-processing, + similar to find's -exec syntax. + Example: --exec 'adb push {} + /sdcard/Music/ && rm {}' + --convert-subs FORMAT Convert the subtitles to other format + (currently supported: srt|ass|vtt|lrc) @@ -684,7 +721,8 @@ Each aforementioned sequence when referenced in an output template will be replaced by the actual value corresponding to the sequence name. Note that some of the sequences are not guaranteed to be present since they depend on the metadata obtained by a particular extractor. Such -sequences will be replaced with NA. +sequences will be replaced with placeholder value provided with +--output-na-placeholder (NA by default). For example for -o %(title)s-%(id)s.%(ext)s and an mp4 video with title youtube-dl test video and id BaW_jenozKcj, this will result in a diff --git a/docs/supportedsites.md b/docs/supportedsites.md index aa8026a3..13bac6e2 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -46,10 +46,11 @@ - **Amara** - **AMCNetworks** - **AmericasTestKitchen** + - **AmericasTestKitchenSeason** - **anderetijden**: npo.nl, ntr.nl, omroepwnl.nl, zapp.nl and npo3.nl - **AnimeOnDemand** - **Anvato** - - **aol.com** + - **aol.com**: Yahoo screen and movies - **APA** - **Aparat** - **AppleConnect** @@ -192,8 +193,6 @@ - **CNNArticle** - **CNNBlogs** - **ComedyCentral** - - **ComedyCentralFullEpisodes** - - **ComedyCentralShortname** - **ComedyCentralTV** - **CondeNast**: Condé Nast media group: Allure, Architectural Digest, Ars Technica, Bon Appétit, Brides, Condé Nast, Condé Nast Traveler, Details, Epicurious, GQ, Glamour, Golf Digest, SELF, Teen Vogue, The New Yorker, Vanity Fair, Vogue, W Magazine, WIRED - **CONtv** @@ -506,6 +505,9 @@ - **Mgoon** - **MGTV**: 芒果TV - **MiaoPai** + - **minds** + - **minds:channel** + - **minds:group** - **MinistryGrid** - **Minoto** - **miomio.tv** @@ -859,6 +861,8 @@ - **Sport5** - **SportBox** - **SportDeutschland** + - **spotify** + - **spotify:show** - **Spreaker** - **SpreakerPage** - **SpreakerShow** @@ -940,12 +944,13 @@ - **TNAFlixNetworkEmbed** - **toggle** - **ToonGoggles** - - **Tosh**: Tosh.0 - **tou.tv** - **Toypics**: Toypics video - **ToypicsUser**: Toypics user profile - **TrailerAddict** (Currently broken) - **Trilulilu** + - **Trovo** + - **TrovoVod** - **TruNews** - **TruTV** - **Tube8** diff --git a/test/test_YoutubeDL.py b/test/test_YoutubeDL.py index 4d62ba14..a35effe0 100644 --- a/test/test_YoutubeDL.py +++ b/test/test_YoutubeDL.py @@ -633,13 +633,20 @@ def test_prepare_filename(self): 'title2': '%PATH%', } - def fname(templ): - ydl = YoutubeDL({'outtmpl': templ}) + def fname(templ, na_placeholder='NA'): + params = {'outtmpl': templ} + if na_placeholder != 'NA': + params['outtmpl_na_placeholder'] = na_placeholder + ydl = YoutubeDL(params) return ydl.prepare_filename(info) self.assertEqual(fname('%(id)s.%(ext)s'), '1234.mp4') self.assertEqual(fname('%(id)s-%(width)s.%(ext)s'), '1234-NA.mp4') - # Replace missing fields with 'NA' - self.assertEqual(fname('%(uploader_date)s-%(id)s.%(ext)s'), 'NA-1234.mp4') + NA_TEST_OUTTMPL = '%(uploader_date)s-%(width)d-%(id)s.%(ext)s' + # Replace missing fields with 'NA' by default + self.assertEqual(fname(NA_TEST_OUTTMPL), 'NA-NA-1234.mp4') + # Or by provided placeholder + self.assertEqual(fname(NA_TEST_OUTTMPL, na_placeholder='none'), 'none-none-1234.mp4') + self.assertEqual(fname(NA_TEST_OUTTMPL, na_placeholder=''), '--1234.mp4') self.assertEqual(fname('%(height)d.%(ext)s'), '1080.mp4') self.assertEqual(fname('%(height)6d.%(ext)s'), ' 1080.mp4') self.assertEqual(fname('%(height)-6d.%(ext)s'), '1080 .mp4') diff --git a/youtube-dl b/youtube-dl index 404047a7ab12cd61222cdeba0e51b7846922a006..89fc034cc52cb7ba7c1af953808a1dfc12bca780 100755 GIT binary patch delta 95937 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 delta 89223 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 Hd_&<sTDYCz diff --git a/youtube-dl.1 b/youtube-dl.1 index d9e3a2d7..6482eae4 100644 --- a/youtube-dl.1 +++ b/youtube-dl.1 @@ -70,7 +70,7 @@ Force extraction to use the generic extractor .B \-\-default\-search \f[I]PREFIX\f[] Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for -youtube\-dl "large apple". +youtube\- dl "large apple". Use the value "auto" to let youtube\-dl guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. @@ -82,7 +82,7 @@ if this is not possible instead of searching. .B \-\-ignore\-config Do not read configuration files. When given in the global configuration file /etc/youtube\-dl.conf: Do -not read the user configuration in ~/.config/youtube\- dl/config +not read the user configuration in ~/.config/youtube\-dl/config (%APPDATA%/youtube\-dl/config.txt on Windows) .RS .RE @@ -187,9 +187,9 @@ Playlist video to end at (default is last) .B \-\-playlist\-items \f[I]ITEM_SPEC\f[] Playlist video items to download. Specify indices of the videos in the playlist separated by commas like: -"\-\-playlist\-items 1,2,5,8" if you want to download videos indexed 1, +"\-\- playlist\-items 1,2,5,8" if you want to download videos indexed 1, 2, 5, 8 in the playlist. -You can specify range: "\-\-playlist\-items 1\-3,7,10\-13", it will +You can specify range: " \-\-playlist\-items 1\-3,7,10\-13", it will download the videos at index 1, 2, 3, 7, 10, 11, 12 and 13. .RS .RE @@ -380,7 +380,7 @@ while downloading (some players may not be able to play it) .TP .B \-\-external\-downloader \f[I]COMMAND\f[] Use the specified external downloader. -Currently supports aria2c,avconv,axel,curl,ffmpeg,httpie,wget +Currently supports aria2c,avconv,axel,c url,ffmpeg,httpie,wget .RS .RE .TP @@ -408,6 +408,12 @@ Output filename template, see the "OUTPUT TEMPLATE" for all the info .RS .RE .TP +.B \-\-output\-na\-placeholder \f[I]PLACEHOLDER\f[] +Placeholder value for unavailable meta fields in output filename +template (default is "NA") +.RS +.RE +.TP .B \-\-autonumber\-start \f[I]NUMBER\f[] Specify the start value for %(autonumber)s (default is 1) .RS @@ -462,7 +468,7 @@ Write video annotations to a .annotations.xml file .TP .B \-\-load\-info\-json \f[I]FILE\f[] JSON file containing the video information (created with the -"\-\-write\-info\-json" option) +"\-\-write\- info\-json" option) .RS .RE .TP @@ -686,7 +692,7 @@ lower bound of a range for randomized sleep before each download .B \-\-max\-sleep\-interval \f[I]SECONDS\f[] Upper bound of a range for randomized sleep before each download (maximum possible number of seconds to sleep). -Must only be used along with \-\-min\-sleep\-interval. +Must only be used along with \-\-min\- sleep\-interval. .RS .RE .SS Video Format Options: @@ -753,7 +759,7 @@ Subtitle format, accepts formats preference, for example: "srt" or .TP .B \-\-sub\-lang \f[I]LANGS\f[] Languages of the subtitles to download (optional) separated by commas, -use \-\-list\- subs for available language tags +use \-\-list\-subs for available language tags .RS .RE .SS Authentication Options: @@ -809,8 +815,8 @@ List all supported multiple\-system operators .SS Post\-processing Options: .TP .B \-x, \-\-extract\-audio -Convert video files to audio\-only files (requires ffmpeg or avconv and -ffprobe or avprobe) +Convert video files to audio\-only files (requires ffmpeg/avconv and +ffprobe/avprobe) .RS .RE .TP @@ -838,7 +844,7 @@ Give these arguments to the postprocessor .RE .TP .B \-k, \-\-keep\-video -Keep the video file on disk after the post\- processing; the video is +Keep the video file on disk after the post\-processing; the video is erased by default .RS .RE @@ -869,7 +875,7 @@ Parse additional metadata like song title / artist from the video title. The format syntax is the same as \-\-output. Regular expression with named capture groups may also be used. The parsed parameters replace existing values. -Example: \-\-metadata\-from\- title "%(artist)s \- %(title)s" matches a +Example: \-\-metadata\-from\-title "%(artist)s \- %(title)s" matches a title like "Coldplay \- Paradise". Example (regex): \-\-metadata\-from\-title "(?P.+?) \- (?P .RS @@ -1219,7 +1225,8 @@ Each aforementioned sequence when referenced in an output template will be replaced by the actual value corresponding to the sequence name. Note that some of the sequences are not guaranteed to be present since they depend on the metadata obtained by a particular extractor. -Such sequences will be replaced with \f[C]NA\f[]. +Such sequences will be replaced with placeholder value provided with +\f[C]\-\-output\-na\-placeholder\f[] (\f[C]NA\f[] by default). .PP For example for \f[C]\-o\ %(title)s\-%(id)s.%(ext)s\f[] and an mp4 video with title \f[C]youtube\-dl\ test\ video\f[] and id diff --git a/youtube-dl.bash-completion b/youtube-dl.bash-completion index 1fc0982a..85f6e02c 100644 --- a/youtube-dl.bash-completion +++ b/youtube-dl.bash-completion @@ -4,7 +4,7 @@ __youtube_dl() COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" - opts="--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --force-generic-extractor --default-search --ignore-config --config-location --flat-playlist --mark-watched --no-mark-watched --no-color --proxy --socket-timeout --source-address --force-ipv4 --force-ipv6 --geo-verification-proxy --cn-verification-proxy --geo-bypass --no-geo-bypass --geo-bypass-country --geo-bypass-ip-block --playlist-start --playlist-end --playlist-items --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --match-filter --no-playlist --yes-playlist --age-limit --download-archive --include-ads --limit-rate --retries --fragment-retries --skip-unavailable-fragments --abort-on-unavailable-fragment --keep-fragments --buffer-size --no-resize-buffer --http-chunk-size --test --playlist-reverse --playlist-random --xattr-set-filesize --hls-prefer-native --hls-prefer-ffmpeg --hls-use-mpegts --external-downloader --external-downloader-args --batch-file --id --output --autonumber-size --autonumber-start --restrict-filenames --auto-number --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --load-info-json --cookies --cache-dir --no-cache-dir --rm-cache-dir --write-thumbnail --write-all-thumbnails --list-thumbnails --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --sleep-interval --max-sleep-interval --format --all-formats --prefer-free-formats --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --ap-mso --ap-username --ap-password --ap-list-mso --extract-audio --audio-format --audio-quality --recode-video --postprocessor-args --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --metadata-from-title --xattrs --fixup --prefer-avconv --prefer-ffmpeg --ffmpeg-location --exec --convert-subs" + opts="--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --force-generic-extractor --default-search --ignore-config --config-location --flat-playlist --mark-watched --no-mark-watched --no-color --proxy --socket-timeout --source-address --force-ipv4 --force-ipv6 --geo-verification-proxy --cn-verification-proxy --geo-bypass --no-geo-bypass --geo-bypass-country --geo-bypass-ip-block --playlist-start --playlist-end --playlist-items --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --match-filter --no-playlist --yes-playlist --age-limit --download-archive --include-ads --limit-rate --retries --fragment-retries --skip-unavailable-fragments --abort-on-unavailable-fragment --keep-fragments --buffer-size --no-resize-buffer --http-chunk-size --test --playlist-reverse --playlist-random --xattr-set-filesize --hls-prefer-native --hls-prefer-ffmpeg --hls-use-mpegts --external-downloader --external-downloader-args --batch-file --id --output --output-na-placeholder --autonumber-size --autonumber-start --restrict-filenames --auto-number --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --load-info-json --cookies --cache-dir --no-cache-dir --rm-cache-dir --write-thumbnail --write-all-thumbnails --list-thumbnails --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --sleep-interval --max-sleep-interval --format --all-formats --prefer-free-formats --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --ap-mso --ap-username --ap-password --ap-list-mso --extract-audio --audio-format --audio-quality --recode-video --postprocessor-args --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --metadata-from-title --xattrs --fixup --prefer-avconv --prefer-ffmpeg --ffmpeg-location --exec --convert-subs" keywords=":ytfavorites :ytrecommended :ytsubscriptions :ytwatchlater :ythistory" fileopts="-a|--batch-file|--download-archive|--cookies|--load-info" diropts="--cache-dir" diff --git a/youtube-dl.fish b/youtube-dl.fish index d429be55..63c17bfc 100644 --- a/youtube-dl.fish +++ b/youtube-dl.fish @@ -66,6 +66,7 @@ complete --command youtube-dl --long-option external-downloader-args --descripti complete --command youtube-dl --long-option batch-file --short-option a --description 'File containing URLs to download ('"'"'-'"'"' for stdin), one URL per line. Lines starting with '"'"'#'"'"', '"'"';'"'"' or '"'"']'"'"' are considered as comments and ignored.' --require-parameter complete --command youtube-dl --long-option id --description 'Use only video ID in file name' complete --command youtube-dl --long-option output --short-option o --description 'Output filename template, see the "OUTPUT TEMPLATE" for all the info' +complete --command youtube-dl --long-option output-na-placeholder --description 'Placeholder value for unavailable meta fields in output filename template (default is "%default")' complete --command youtube-dl --long-option autonumber-size complete --command youtube-dl --long-option autonumber-start --description 'Specify the start value for %(autonumber)s (default is %default)' complete --command youtube-dl --long-option restrict-filenames --description 'Restrict filenames to only ASCII characters, and avoid "&" and spaces in filenames' @@ -144,7 +145,7 @@ complete --command youtube-dl --long-option ap-mso --description 'Adobe Pass mul complete --command youtube-dl --long-option ap-username --description 'Multiple-system operator account login' complete --command youtube-dl --long-option ap-password --description 'Multiple-system operator account password. If this option is left out, youtube-dl will ask interactively.' complete --command youtube-dl --long-option ap-list-mso --description 'List all supported multiple-system operators' -complete --command youtube-dl --long-option extract-audio --short-option x --description 'Convert video files to audio-only files (requires ffmpeg or avconv and ffprobe or avprobe)' +complete --command youtube-dl --long-option extract-audio --short-option x --description 'Convert video files to audio-only files (requires ffmpeg/avconv and ffprobe/avprobe)' complete --command youtube-dl --long-option audio-format --description 'Specify audio format: "best", "aac", "flac", "mp3", "m4a", "opus", "vorbis", or "wav"; "%default" by default; No effect without -x' complete --command youtube-dl --long-option audio-quality --description 'Specify ffmpeg/avconv audio quality, insert a value between 0 (better) and 9 (worse) for VBR or a specific bitrate like 128K (default %default)' complete --command youtube-dl --long-option recode-video --description 'Encode the video to another format if necessary (currently supported: mp4|flv|ogg|webm|mkv|avi)' --arguments 'mp4 flv ogg webm mkv' --exclusive diff --git a/youtube-dl.zsh b/youtube-dl.zsh index 9b1e1c0c..9d1a633e 100644 --- a/youtube-dl.zsh +++ b/youtube-dl.zsh @@ -19,7 +19,7 @@ __youtube_dl() { elif [[ ${prev} == "--recode-video" ]]; then _arguments '*: :(mp4 flv ogg webm mkv)' else - _arguments '*: :(--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --force-generic-extractor --default-search --ignore-config --config-location --flat-playlist --mark-watched --no-mark-watched --no-color --proxy --socket-timeout --source-address --force-ipv4 --force-ipv6 --geo-verification-proxy --cn-verification-proxy --geo-bypass --no-geo-bypass --geo-bypass-country --geo-bypass-ip-block --playlist-start --playlist-end --playlist-items --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --match-filter --no-playlist --yes-playlist --age-limit --download-archive --include-ads --limit-rate --retries --fragment-retries --skip-unavailable-fragments --abort-on-unavailable-fragment --keep-fragments --buffer-size --no-resize-buffer --http-chunk-size --test --playlist-reverse --playlist-random --xattr-set-filesize --hls-prefer-native --hls-prefer-ffmpeg --hls-use-mpegts --external-downloader --external-downloader-args --batch-file --id --output --autonumber-size --autonumber-start --restrict-filenames --auto-number --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --load-info-json --cookies --cache-dir --no-cache-dir --rm-cache-dir --write-thumbnail --write-all-thumbnails --list-thumbnails --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --sleep-interval --max-sleep-interval --format --all-formats --prefer-free-formats --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --ap-mso --ap-username --ap-password --ap-list-mso --extract-audio --audio-format --audio-quality --recode-video --postprocessor-args --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --metadata-from-title --xattrs --fixup --prefer-avconv --prefer-ffmpeg --ffmpeg-location --exec --convert-subs)' + _arguments '*: :(--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --force-generic-extractor --default-search --ignore-config --config-location --flat-playlist --mark-watched --no-mark-watched --no-color --proxy --socket-timeout --source-address --force-ipv4 --force-ipv6 --geo-verification-proxy --cn-verification-proxy --geo-bypass --no-geo-bypass --geo-bypass-country --geo-bypass-ip-block --playlist-start --playlist-end --playlist-items --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --match-filter --no-playlist --yes-playlist --age-limit --download-archive --include-ads --limit-rate --retries --fragment-retries --skip-unavailable-fragments --abort-on-unavailable-fragment --keep-fragments --buffer-size --no-resize-buffer --http-chunk-size --test --playlist-reverse --playlist-random --xattr-set-filesize --hls-prefer-native --hls-prefer-ffmpeg --hls-use-mpegts --external-downloader --external-downloader-args --batch-file --id --output --output-na-placeholder --autonumber-size --autonumber-start --restrict-filenames --auto-number --title --literal --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --load-info-json --cookies --cache-dir --no-cache-dir --rm-cache-dir --write-thumbnail --write-all-thumbnails --list-thumbnails --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --encoding --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --sleep-interval --max-sleep-interval --format --all-formats --prefer-free-formats --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --ap-mso --ap-username --ap-password --ap-list-mso --extract-audio --audio-format --audio-quality --recode-video --postprocessor-args --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --metadata-from-title --xattrs --fixup --prefer-avconv --prefer-ffmpeg --ffmpeg-location --exec --convert-subs)' fi ;; esac diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index efd42fa6..ecac31f7 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -163,6 +163,7 @@ class YoutubeDL(object): simulate: Do not download the video files. format: Video format code. See options.py for more information. outtmpl: Template for output names. + outtmpl_na_placeholder: Placeholder for unavailable meta fields. restrictfilenames: Do not allow "&" and spaces in file names ignoreerrors: Do not stop on download errors. force_generic_extractor: Force downloader to use the generic extractor @@ -658,7 +659,7 @@ def prepare_filename(self, info_dict): template_dict = dict((k, v if isinstance(v, compat_numeric_types) else sanitize(k, v)) for k, v in template_dict.items() if v is not None and not isinstance(v, (list, tuple, dict))) - template_dict = collections.defaultdict(lambda: 'NA', template_dict) + template_dict = collections.defaultdict(lambda: self.params.get('outtmpl_na_placeholder', 'NA'), template_dict) outtmpl = self.params.get('outtmpl', DEFAULT_OUTTMPL) @@ -678,8 +679,8 @@ def prepare_filename(self, info_dict): # Missing numeric fields used together with integer presentation types # in format specification will break the argument substitution since - # string 'NA' is returned for missing fields. We will patch output - # template for missing fields to meet string presentation type. + # string NA placeholder is returned for missing fields. We will patch + # output template for missing fields to meet string presentation type. for numeric_field in self._NUMERIC_FIELDS: if numeric_field not in template_dict: # As of [1] format syntax is: diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 9a659fc6..e1bd6791 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -340,6 +340,7 @@ def parse_retries(retries): 'format': opts.format, 'listformats': opts.listformats, 'outtmpl': outtmpl, + 'outtmpl_na_placeholder': opts.outtmpl_na_placeholder, 'autonumber_size': opts.autonumber_size, 'autonumber_start': opts.autonumber_start, 'restrictfilenames': opts.restrictfilenames, diff --git a/youtube_dl/extractor/aenetworks.py b/youtube_dl/extractor/aenetworks.py index 8e496313..a5d88ebb 100644 --- a/youtube_dl/extractor/aenetworks.py +++ b/youtube_dl/extractor/aenetworks.py @@ -256,7 +256,7 @@ class AENetworksShowIE(AENetworksListBaseIE): 'title': 'Ancient Aliens', 'description': 'md5:3f6d74daf2672ff3ae29ed732e37ea7f', }, - 'playlist_mincount': 168, + 'playlist_mincount': 150, }] _RESOURCE = 'series' _ITEMS_KEY = 'episodes' diff --git a/youtube_dl/extractor/aljazeera.py b/youtube_dl/extractor/aljazeera.py index c68be313..c4f915a3 100644 --- a/youtube_dl/extractor/aljazeera.py +++ b/youtube_dl/extractor/aljazeera.py @@ -1,13 +1,16 @@ from __future__ import unicode_literals +import json +import re + from .common import InfoExtractor class AlJazeeraIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?aljazeera\.com/(?:programmes|video)/.*?/(?P<id>[^/]+)\.html' + _VALID_URL = r'https?://(?:www\.)?aljazeera\.com/(?P<type>program/[^/]+|(?:feature|video)s)/\d{4}/\d{1,2}/\d{1,2}/(?P<id>[^/?&#]+)' _TESTS = [{ - 'url': 'http://www.aljazeera.com/programmes/the-slum/2014/08/deliverance-201482883754237240.html', + 'url': 'https://www.aljazeera.com/program/episode/2014/9/19/deliverance', 'info_dict': { 'id': '3792260579001', 'ext': 'mp4', @@ -20,14 +23,34 @@ class AlJazeeraIE(InfoExtractor): 'add_ie': ['BrightcoveNew'], 'skip': 'Not accessible from Travis CI server', }, { - 'url': 'http://www.aljazeera.com/video/news/2017/05/sierra-leone-709-carat-diamond-auctioned-170511100111930.html', + 'url': 'https://www.aljazeera.com/videos/2017/5/11/sierra-leone-709-carat-diamond-to-be-auctioned-off', + 'only_matching': True, + }, { + 'url': 'https://www.aljazeera.com/features/2017/8/21/transforming-pakistans-buses-into-art', 'only_matching': True, }] - BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/665003303001/default_default/index.html?videoId=%s' + BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/%s/%s_default/index.html?videoId=%s' def _real_extract(self, url): - program_name = self._match_id(url) - webpage = self._download_webpage(url, program_name) - brightcove_id = self._search_regex( - r'RenderPagesVideo\(\'(.+?)\'', webpage, 'brightcove id') - return self.url_result(self.BRIGHTCOVE_URL_TEMPLATE % brightcove_id, 'BrightcoveNew', brightcove_id) + post_type, name = re.match(self._VALID_URL, url).groups() + post_type = { + 'features': 'post', + 'program': 'episode', + 'videos': 'video', + }[post_type.split('/')[0]] + video = self._download_json( + 'https://www.aljazeera.com/graphql', name, query={ + 'operationName': 'SingleArticleQuery', + 'variables': json.dumps({ + 'name': name, + 'postType': post_type, + }), + }, headers={ + 'wp-site': 'aje', + })['data']['article']['video'] + video_id = video['id'] + account_id = video.get('accountId') or '665003303001' + player_id = video.get('playerId') or 'BkeSH5BDb' + return self.url_result( + self.BRIGHTCOVE_URL_TEMPLATE % (account_id, player_id, video_id), + 'BrightcoveNew', video_id) diff --git a/youtube_dl/extractor/americastestkitchen.py b/youtube_dl/extractor/americastestkitchen.py index e20f00fc..be960c0f 100644 --- a/youtube_dl/extractor/americastestkitchen.py +++ b/youtube_dl/extractor/americastestkitchen.py @@ -1,13 +1,16 @@ # coding: utf-8 from __future__ import unicode_literals +import json import re from .common import InfoExtractor from ..utils import ( clean_html, + int_or_none, try_get, unified_strdate, + unified_timestamp, ) @@ -22,8 +25,8 @@ class AmericasTestKitchenIE(InfoExtractor): 'ext': 'mp4', 'description': 'md5:64e606bfee910627efc4b5f050de92b3', 'thumbnail': r're:^https?://', - 'timestamp': 1523664000, - 'upload_date': '20180414', + 'timestamp': 1523318400, + 'upload_date': '20180410', 'release_date': '20180410', 'series': "America's Test Kitchen", 'season_number': 18, @@ -33,6 +36,27 @@ class AmericasTestKitchenIE(InfoExtractor): 'params': { 'skip_download': True, }, + }, { + # Metadata parsing behaves differently for newer episodes (705) as opposed to older episodes (582 above) + 'url': 'https://www.americastestkitchen.com/episode/705-simple-chicken-dinner', + 'md5': '06451608c57651e985a498e69cec17e5', + 'info_dict': { + 'id': '5fbe8c61bda2010001c6763b', + 'title': 'Simple Chicken Dinner', + 'ext': 'mp4', + 'description': 'md5:eb68737cc2fd4c26ca7db30139d109e7', + 'thumbnail': r're:^https?://', + 'timestamp': 1610755200, + 'upload_date': '20210116', + 'release_date': '20210116', + 'series': "America's Test Kitchen", + 'season_number': 21, + 'episode': 'Simple Chicken Dinner', + 'episode_number': 3, + }, + 'params': { + 'skip_download': True, + }, }, { 'url': 'https://www.americastestkitchen.com/videos/3420-pan-seared-salmon', 'only_matching': True, @@ -60,7 +84,76 @@ def _real_extract(self, url): 'url': 'https://player.zype.com/embed/%s.js?api_key=jZ9GUhRmxcPvX7M3SlfejB6Hle9jyHTdk2jVxG7wOHPLODgncEKVdPYBhuz9iWXQ' % video['zypeId'], 'ie_key': 'Zype', 'description': clean_html(video.get('description')), + 'timestamp': unified_timestamp(video.get('publishDate')), 'release_date': unified_strdate(video.get('publishDate')), + 'episode_number': int_or_none(episode.get('number')), + 'season_number': int_or_none(episode.get('season')), 'series': try_get(episode, lambda x: x['show']['title']), 'episode': episode.get('title'), } + + +class AmericasTestKitchenSeasonIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?(?P<show>americastestkitchen|cookscountry)\.com/episodes/browse/season_(?P<id>\d+)' + _TESTS = [{ + # ATK Season + 'url': 'https://www.americastestkitchen.com/episodes/browse/season_1', + 'info_dict': { + 'id': 'season_1', + 'title': 'Season 1', + }, + 'playlist_count': 13, + }, { + # Cooks Country Season + 'url': 'https://www.cookscountry.com/episodes/browse/season_12', + 'info_dict': { + 'id': 'season_12', + 'title': 'Season 12', + }, + 'playlist_count': 13, + }] + + def _real_extract(self, url): + show_name, season_number = re.match(self._VALID_URL, url).groups() + season_number = int(season_number) + + slug = 'atk' if show_name == 'americastestkitchen' else 'cco' + + season = 'Season %d' % season_number + + season_search = self._download_json( + 'https://y1fnzxui30-dsn.algolia.net/1/indexes/everest_search_%s_season_desc_production' % slug, + season, headers={ + 'Origin': 'https://www.%s.com' % show_name, + 'X-Algolia-API-Key': '8d504d0099ed27c1b73708d22871d805', + 'X-Algolia-Application-Id': 'Y1FNZXUI30', + }, query={ + 'facetFilters': json.dumps([ + 'search_season_list:' + season, + 'search_document_klass:episode', + 'search_show_slug:' + slug, + ]), + 'attributesToRetrieve': 'description,search_%s_episode_number,search_document_date,search_url,title' % slug, + 'attributesToHighlight': '', + 'hitsPerPage': 1000, + }) + + def entries(): + for episode in (season_search.get('hits') or []): + search_url = episode.get('search_url') + if not search_url: + continue + yield { + '_type': 'url', + 'url': 'https://www.%s.com%s' % (show_name, search_url), + 'id': try_get(episode, lambda e: e['objectID'].split('_')[-1]), + 'title': episode.get('title'), + 'description': episode.get('description'), + 'timestamp': unified_timestamp(episode.get('search_document_date')), + 'season_number': season_number, + 'episode_number': int_or_none(episode.get('search_%s_episode_number' % slug)), + 'ie_key': AmericasTestKitchenIE.ie_key(), + } + + return self.playlist_result( + entries(), 'season_%d' % season_number, season) diff --git a/youtube_dl/extractor/aol.py b/youtube_dl/extractor/aol.py index e87994a6..f6ecb843 100644 --- a/youtube_dl/extractor/aol.py +++ b/youtube_dl/extractor/aol.py @@ -3,7 +3,7 @@ import re -from .common import InfoExtractor +from .yahoo import YahooIE from ..compat import ( compat_parse_qs, compat_urllib_parse_urlparse, @@ -15,9 +15,9 @@ ) -class AolIE(InfoExtractor): +class AolIE(YahooIE): IE_NAME = 'aol.com' - _VALID_URL = r'(?:aol-video:|https?://(?:www\.)?aol\.(?:com|ca|co\.uk|de|jp)/video/(?:[^/]+/)*)(?P<id>[0-9a-f]+)' + _VALID_URL = r'(?:aol-video:|https?://(?:www\.)?aol\.(?:com|ca|co\.uk|de|jp)/video/(?:[^/]+/)*)(?P<id>\d{9}|[0-9a-f]{24}|[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12})' _TESTS = [{ # video with 5min ID @@ -76,10 +76,16 @@ class AolIE(InfoExtractor): }, { 'url': 'https://www.aol.jp/video/playlist/5a28e936a1334d000137da0c/5a28f3151e642219fde19831/', 'only_matching': True, + }, { + # Yahoo video + 'url': 'https://www.aol.com/video/play/991e6700-ac02-11ea-99ff-357400036f61/24bbc846-3e30-3c46-915e-fe8ccd7fcc46/', + 'only_matching': True, }] def _real_extract(self, url): video_id = self._match_id(url) + if '-' in video_id: + return self._extract_yahoo_video(video_id, 'us') response = self._download_json( 'https://feedapi.b2c.on.aol.com/v1.0/app/videos/aolon/%s/details' % video_id, diff --git a/youtube_dl/extractor/ard.py b/youtube_dl/extractor/ard.py index 5b7b2dd6..6bf5b3f1 100644 --- a/youtube_dl/extractor/ard.py +++ b/youtube_dl/extractor/ard.py @@ -187,13 +187,13 @@ def _real_extract(self, url): if doc.tag == 'rss': return GenericIE()._extract_rss(url, video_id, doc) - title = self._html_search_regex( + title = self._og_search_title(webpage, default=None) or self._html_search_regex( [r'<h1(?:\s+class="boxTopHeadline")?>(.*?)</h1>', r'<meta name="dcterms\.title" content="(.*?)"/>', r'<h4 class="headline">(.*?)</h4>', r'<title[^>]*>(.*?)'], webpage, 'title') - description = self._html_search_meta( + description = self._og_search_description(webpage, default=None) or self._html_search_meta( 'dcterms.abstract', webpage, 'description', default=None) if description is None: description = self._html_search_meta( @@ -249,18 +249,18 @@ def _real_extract(self, url): class ARDIE(InfoExtractor): - _VALID_URL = r'(?Phttps?://(www\.)?daserste\.de/[^?#]+/videos(?:extern)?/(?P[^/?#]+)-(?P[0-9]+))\.html' + _VALID_URL = r'(?Phttps?://(?:www\.)?daserste\.de/[^?#]+/videos(?:extern)?/(?P[^/?#]+)-(?:video-?)?(?P[0-9]+))\.html' _TESTS = [{ - # available till 14.02.2019 - 'url': 'http://www.daserste.de/information/talk/maischberger/videos/das-groko-drama-zerlegen-sich-die-volksparteien-video-102.html', - 'md5': '8e4ec85f31be7c7fc08a26cdbc5a1f49', + # available till 7.01.2022 + 'url': 'https://www.daserste.de/information/talk/maischberger/videos/maischberger-die-woche-video100.html', + 'md5': '867d8aa39eeaf6d76407c5ad1bb0d4c1', 'info_dict': { - 'display_id': 'das-groko-drama-zerlegen-sich-die-volksparteien-video', - 'id': '102', + 'display_id': 'maischberger-die-woche', + 'id': '100', 'ext': 'mp4', - 'duration': 4435.0, - 'title': 'Das GroKo-Drama: Zerlegen sich die Volksparteien?', - 'upload_date': '20180214', + 'duration': 3687.0, + 'title': 'maischberger. die woche vom 7. Januar 2021', + 'upload_date': '20210107', 'thumbnail': r're:^https?://.*\.jpg$', }, }, { @@ -315,17 +315,17 @@ def _real_extract(self, url): class ARDBetaMediathekIE(ARDMediathekBaseIE): _VALID_URL = r'https://(?:(?:beta|www)\.)?ardmediathek\.de/(?P[^/]+)/(?:player|live|video)/(?P(?:[^/]+/)*)(?P[a-zA-Z0-9]+)' _TESTS = [{ - 'url': 'https://ardmediathek.de/ard/video/die-robuste-roswita/Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhdG9ydC9mYmM4NGM1NC0xNzU4LTRmZGYtYWFhZS0wYzcyZTIxNGEyMDE', - 'md5': 'dfdc87d2e7e09d073d5a80770a9ce88f', + 'url': 'https://www.ardmediathek.de/mdr/video/die-robuste-roswita/Y3JpZDovL21kci5kZS9iZWl0cmFnL2Ntcy84MWMxN2MzZC0wMjkxLTRmMzUtODk4ZS0wYzhlOWQxODE2NGI/', + 'md5': 'a1dc75a39c61601b980648f7c9f9f71d', 'info_dict': { 'display_id': 'die-robuste-roswita', - 'id': '70153354', + 'id': '78566716', 'title': 'Die robuste Roswita', - 'description': r're:^Der Mord.*trüber ist als die Ilm.', + 'description': r're:^Der Mord.*totgeglaubte Ehefrau Roswita', 'duration': 5316, - 'thumbnail': 'https://img.ardmediathek.de/standard/00/70/15/33/90/-1852531467/16x9/960?mandant=ard', - 'timestamp': 1577047500, - 'upload_date': '20191222', + 'thumbnail': 'https://img.ardmediathek.de/standard/00/78/56/67/84/575672121/16x9/960?mandant=ard', + 'timestamp': 1596658200, + 'upload_date': '20200805', 'ext': 'mp4', }, }, { diff --git a/youtube_dl/extractor/comedycentral.py b/youtube_dl/extractor/comedycentral.py index d08b909a..1bfa912b 100644 --- a/youtube_dl/extractor/comedycentral.py +++ b/youtube_dl/extractor/comedycentral.py @@ -1,142 +1,51 @@ from __future__ import unicode_literals from .mtv import MTVServicesInfoExtractor -from .common import InfoExtractor class ComedyCentralIE(MTVServicesInfoExtractor): - _VALID_URL = r'''(?x)https?://(?:www\.)?cc\.com/ - (video-clips|episodes|cc-studios|video-collections|shows(?=/[^/]+/(?!full-episodes))) - /(?P.*)''' + _VALID_URL = r'https?://(?:www\.)?cc\.com/(?:episodes|video(?:-clips)?)/(?P<id>[0-9a-z]{6})' _FEED_URL = 'http://comedycentral.com/feeds/mrss/' _TESTS = [{ - 'url': 'http://www.cc.com/video-clips/kllhuv/stand-up-greg-fitzsimmons--uncensored---too-good-of-a-mother', - 'md5': 'c4f48e9eda1b16dd10add0744344b6d8', + 'url': 'http://www.cc.com/video-clips/5ke9v2/the-daily-show-with-trevor-noah-doc-rivers-and-steve-ballmer---the-nba-player-strike', + 'md5': 'b8acb347177c680ff18a292aa2166f80', 'info_dict': { - 'id': 'cef0cbb3-e776-4bc9-b62e-8016deccb354', + 'id': '89ccc86e-1b02-4f83-b0c9-1d9592ecd025', 'ext': 'mp4', - 'title': 'CC:Stand-Up|August 18, 2013|1|0101|Uncensored - Too Good of a Mother', - 'description': 'After a certain point, breastfeeding becomes c**kblocking.', - 'timestamp': 1376798400, - 'upload_date': '20130818', + 'title': 'The Daily Show with Trevor Noah|August 28, 2020|25|25149|Doc Rivers and Steve Ballmer - The NBA Player Strike', + 'description': 'md5:5334307c433892b85f4f5e5ac9ef7498', + 'timestamp': 1598670000, + 'upload_date': '20200829', }, }, { - 'url': 'http://www.cc.com/shows/the-daily-show-with-trevor-noah/interviews/6yx39d/exclusive-rand-paul-extended-interview', + 'url': 'http://www.cc.com/episodes/pnzzci/drawn-together--american-idol--parody-clip-show-season-3-ep-314', 'only_matching': True, - }] - - -class ComedyCentralFullEpisodesIE(MTVServicesInfoExtractor): - _VALID_URL = r'''(?x)https?://(?:www\.)?cc\.com/ - (?:full-episodes|shows(?=/[^/]+/full-episodes)) - /(?P<id>[^?]+)''' - _FEED_URL = 'http://comedycentral.com/feeds/mrss/' - - _TESTS = [{ - 'url': 'http://www.cc.com/full-episodes/pv391a/the-daily-show-with-trevor-noah-november-28--2016---ryan-speedo-green-season-22-ep-22028', - 'info_dict': { - 'description': 'Donald Trump is accused of exploiting his president-elect status for personal gain, Cuban leader Fidel Castro dies, and Ryan Speedo Green discusses "Sing for Your Life."', - 'title': 'November 28, 2016 - Ryan Speedo Green', - }, - 'playlist_count': 4, }, { - 'url': 'http://www.cc.com/shows/the-daily-show-with-trevor-noah/full-episodes', - 'only_matching': True, - }] - - def _real_extract(self, url): - playlist_id = self._match_id(url) - webpage = self._download_webpage(url, playlist_id) - mgid = self._extract_triforce_mgid(webpage, data_zone='t2_lc_promo1') - videos_info = self._get_videos_info(mgid) - return videos_info - - -class ToshIE(MTVServicesInfoExtractor): - IE_DESC = 'Tosh.0' - _VALID_URL = r'^https?://tosh\.cc\.com/video-(?:clips|collections)/[^/]+/(?P<videotitle>[^/?#]+)' - _FEED_URL = 'http://tosh.cc.com/feeds/mrss' - - _TESTS = [{ - 'url': 'http://tosh.cc.com/video-clips/68g93d/twitter-users-share-summer-plans', - 'info_dict': { - 'description': 'Tosh asked fans to share their summer plans.', - 'title': 'Twitter Users Share Summer Plans', - }, - 'playlist': [{ - 'md5': 'f269e88114c1805bb6d7653fecea9e06', - 'info_dict': { - 'id': '90498ec2-ed00-11e0-aca6-0026b9414f30', - 'ext': 'mp4', - 'title': 'Tosh.0|June 9, 2077|2|211|Twitter Users Share Summer Plans', - 'description': 'Tosh asked fans to share their summer plans.', - 'thumbnail': r're:^https?://.*\.jpg', - # It's really reported to be published on year 2077 - 'upload_date': '20770610', - 'timestamp': 3390510600, - 'subtitles': { - 'en': 'mincount:3', - }, - }, - }] - }, { - 'url': 'http://tosh.cc.com/video-collections/x2iz7k/just-plain-foul/m5q4fp', + 'url': 'https://www.cc.com/video/k3sdvm/the-daily-show-with-jon-stewart-exclusive-the-fourth-estate', 'only_matching': True, }] class ComedyCentralTVIE(MTVServicesInfoExtractor): - _VALID_URL = r'https?://(?:www\.)?comedycentral\.tv/(?:staffeln|shows)/(?P<id>[^/?#&]+)' + _VALID_URL = r'https?://(?:www\.)?comedycentral\.tv/folgen/(?P<id>[0-9a-z]{6})' _TESTS = [{ - 'url': 'http://www.comedycentral.tv/staffeln/7436-the-mindy-project-staffel-4', + 'url': 'https://www.comedycentral.tv/folgen/pxdpec/josh-investigates-klimawandel-staffel-1-ep-1', 'info_dict': { - 'id': 'local_playlist-f99b626bdfe13568579a', - 'ext': 'flv', - 'title': 'Episode_the-mindy-project_shows_season-4_episode-3_full-episode_part1', - }, - 'params': { - # rtmp download - 'skip_download': True, + 'id': '15907dc3-ec3c-11e8-a442-0e40cf2fc285', + 'ext': 'mp4', + 'title': 'Josh Investigates', + 'description': 'Steht uns das Ende der Welt bevor?', }, - }, { - 'url': 'http://www.comedycentral.tv/shows/1074-workaholics', - 'only_matching': True, - }, { - 'url': 'http://www.comedycentral.tv/shows/1727-the-mindy-project/bonus', - 'only_matching': True, }] - - def _real_extract(self, url): - video_id = self._match_id(url) - - webpage = self._download_webpage(url, video_id) - - mrss_url = self._search_regex( - r'data-mrss=(["\'])(?P<url>(?:(?!\1).)+)\1', - webpage, 'mrss url', group='url') - - return self._get_videos_info_from_url(mrss_url, video_id) - - -class ComedyCentralShortnameIE(InfoExtractor): - _VALID_URL = r'^:(?P<id>tds|thedailyshow|theopposition)$' - _TESTS = [{ - 'url': ':tds', - 'only_matching': True, - }, { - 'url': ':thedailyshow', - 'only_matching': True, - }, { - 'url': ':theopposition', - 'only_matching': True, - }] - - def _real_extract(self, url): - video_id = self._match_id(url) - shortcut_map = { - 'tds': 'http://www.cc.com/shows/the-daily-show-with-trevor-noah/full-episodes', - 'thedailyshow': 'http://www.cc.com/shows/the-daily-show-with-trevor-noah/full-episodes', - 'theopposition': 'http://www.cc.com/shows/the-opposition-with-jordan-klepper/full-episodes', + _FEED_URL = 'http://feeds.mtvnservices.com/od/feed/intl-mrss-player-feed' + _GEO_COUNTRIES = ['DE'] + + def _get_feed_query(self, uri): + return { + 'accountOverride': 'intl.mtvi.com', + 'arcEp': 'web.cc.tv', + 'ep': 'b9032c3a', + 'imageEp': 'web.cc.tv', + 'mgid': uri, } - return self.url_result(shortcut_map[video_id]) diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 57d4d319..ef57f555 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -42,7 +42,10 @@ from .alphaporno import AlphaPornoIE from .amara import AmaraIE from .amcnetworks import AMCNetworksIE -from .americastestkitchen import AmericasTestKitchenIE +from .americastestkitchen import ( + AmericasTestKitchenIE, + AmericasTestKitchenSeasonIE, +) from .animeondemand import AnimeOnDemandIE from .anvato import AnvatoIE from .aol import AolIE @@ -232,11 +235,8 @@ ) from .coub import CoubIE from .comedycentral import ( - ComedyCentralFullEpisodesIE, ComedyCentralIE, - ComedyCentralShortnameIE, ComedyCentralTVIE, - ToshIE, ) from .commonmistakes import CommonMistakesIE, UnicodeBOMIE from .commonprotocols import ( @@ -651,6 +651,11 @@ MicrosoftVirtualAcademyIE, MicrosoftVirtualAcademyCourseIE, ) +from .minds import ( + MindsIE, + MindsChannelIE, + MindsGroupIE, +) from .ministrygrid import MinistryGridIE from .minoto import MinotoIE from .miomio import MioMioIE @@ -1116,6 +1121,10 @@ from .sport5 import Sport5IE from .sportbox import SportBoxIE from .sportdeutschland import SportDeutschlandIE +from .spotify import ( + SpotifyIE, + SpotifyShowIE, +) from .spreaker import ( SpreakerIE, SpreakerPageIE, @@ -1229,6 +1238,10 @@ from .toypics import ToypicsUserIE, ToypicsIE from .traileraddict import TrailerAddictIE from .trilulilu import TriluliluIE +from .trovo import ( + TrovoIE, + TrovoVodIE, +) from .trunews import TruNewsIE from .trutv import TruTVIE from .tube8 import Tube8IE diff --git a/youtube_dl/extractor/franceculture.py b/youtube_dl/extractor/franceculture.py index 306b45fc..14f4cb48 100644 --- a/youtube_dl/extractor/franceculture.py +++ b/youtube_dl/extractor/franceculture.py @@ -11,7 +11,7 @@ class FranceCultureIE(InfoExtractor): _VALID_URL = r'https?://(?:www\.)?franceculture\.fr/emissions/(?:[^/]+/)*(?P<id>[^/?#&]+)' - _TEST = { + _TESTS = [{ 'url': 'http://www.franceculture.fr/emissions/carnet-nomade/rendez-vous-au-pays-des-geeks', 'info_dict': { 'id': 'rendez-vous-au-pays-des-geeks', @@ -20,10 +20,14 @@ class FranceCultureIE(InfoExtractor): 'title': 'Rendez-vous au pays des geeks', 'thumbnail': r're:^https?://.*\.jpg$', 'upload_date': '20140301', - 'timestamp': 1393642916, + 'timestamp': 1393700400, 'vcodec': 'none', } - } + }, { + # no thumbnail + 'url': 'https://www.franceculture.fr/emissions/la-recherche-montre-en-main/la-recherche-montre-en-main-du-mercredi-10-octobre-2018', + 'only_matching': True, + }] def _real_extract(self, url): display_id = self._match_id(url) @@ -36,19 +40,19 @@ def _real_extract(self, url): </h1>| <div[^>]+class="[^"]*?(?:title-zone-diffusion|heading-zone-(?:wrapper|player-button))[^"]*?"[^>]*> ).*? - (<button[^>]+data-asset-source="[^"]+"[^>]+>) + (<button[^>]+data-(?:url|asset-source)="[^"]+"[^>]+>) ''', webpage, 'video data')) - video_url = video_data['data-asset-source'] - title = video_data.get('data-asset-title') or self._og_search_title(webpage) + video_url = video_data.get('data-url') or video_data['data-asset-source'] + title = video_data.get('data-asset-title') or video_data.get('data-diffusion-title') or self._og_search_title(webpage) description = self._html_search_regex( r'(?s)<div[^>]+class="intro"[^>]*>.*?<h2>(.+?)</h2>', webpage, 'description', default=None) thumbnail = self._search_regex( r'(?s)<figure[^>]+itemtype="https://schema.org/ImageObject"[^>]*>.*?<img[^>]+(?:data-dejavu-)?src="([^"]+)"', - webpage, 'thumbnail', fatal=False) + webpage, 'thumbnail', default=None) uploader = self._html_search_regex( r'(?s)<span class="author">(.*?)</span>', webpage, 'uploader', default=None) @@ -64,6 +68,6 @@ def _real_extract(self, url): 'ext': ext, 'vcodec': 'none' if ext == 'mp3' else None, 'uploader': uploader, - 'timestamp': int_or_none(video_data.get('data-asset-created-date')), + 'timestamp': int_or_none(video_data.get('data-start-time')) or int_or_none(video_data.get('data-asset-created-date')), 'duration': int_or_none(video_data.get('data-duration')), } diff --git a/youtube_dl/extractor/lbry.py b/youtube_dl/extractor/lbry.py index 41cc245e..413215a9 100644 --- a/youtube_dl/extractor/lbry.py +++ b/youtube_dl/extractor/lbry.py @@ -5,7 +5,10 @@ import json from .common import InfoExtractor -from ..compat import compat_str +from ..compat import ( + compat_str, + compat_urllib_parse_unquote, +) from ..utils import ( determine_ext, ExtractorError, @@ -131,6 +134,9 @@ class LBRYIE(LBRYBaseIE): }, { 'url': 'https://lbry.tv/$/download/Episode-1/e7d93d772bd87e2b62d5ab993c1c3ced86ebb396', 'only_matching': True, + }, { + 'url': 'https://lbry.tv/@lacajadepandora:a/TRUMP-EST%C3%81-BIEN-PUESTO-con-Pilar-Baselga,-Carlos-Senra,-Luis-Palacios-(720p_30fps_H264-192kbit_AAC):1', + 'only_matching': True, }] def _real_extract(self, url): @@ -139,6 +145,7 @@ def _real_extract(self, url): display_id = display_id.split('/', 2)[-1].replace('/', ':') else: display_id = display_id.replace(':', '#') + display_id = compat_urllib_parse_unquote(display_id) uri = 'lbry://' + display_id result = self._resolve_url(uri, display_id, 'stream') result_value = result['value'] diff --git a/youtube_dl/extractor/minds.py b/youtube_dl/extractor/minds.py new file mode 100644 index 00000000..8e9f0f82 --- /dev/null +++ b/youtube_dl/extractor/minds.py @@ -0,0 +1,196 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..compat import compat_str +from ..utils import ( + clean_html, + int_or_none, + str_or_none, + strip_or_none, +) + + +class MindsBaseIE(InfoExtractor): + _VALID_URL_BASE = r'https?://(?:www\.)?minds\.com/' + + def _call_api(self, path, video_id, resource, query=None): + api_url = 'https://www.minds.com/api/' + path + token = self._get_cookies(api_url).get('XSRF-TOKEN') + return self._download_json( + api_url, video_id, 'Downloading %s JSON metadata' % resource, headers={ + 'Referer': 'https://www.minds.com/', + 'X-XSRF-TOKEN': token.value if token else '', + }, query=query) + + +class MindsIE(MindsBaseIE): + IE_NAME = 'minds' + _VALID_URL = MindsBaseIE._VALID_URL_BASE + r'(?:media|newsfeed|archive/view)/(?P<id>[0-9]+)' + _TESTS = [{ + 'url': 'https://www.minds.com/media/100000000000086822', + 'md5': '215a658184a419764852239d4970b045', + 'info_dict': { + 'id': '100000000000086822', + 'ext': 'mp4', + 'title': 'Minds intro sequence', + 'thumbnail': r're:https?://.+\.png', + 'uploader_id': 'ottman', + 'upload_date': '20130524', + 'timestamp': 1369404826, + 'uploader': 'Bill Ottman', + 'view_count': int, + 'like_count': int, + 'dislike_count': int, + 'tags': ['animation'], + 'comment_count': int, + 'license': 'attribution-cc', + }, + }, { + # entity.type == 'activity' and empty title + 'url': 'https://www.minds.com/newsfeed/798025111988506624', + 'md5': 'b2733a74af78d7fd3f541c4cbbaa5950', + 'info_dict': { + 'id': '798022190320226304', + 'ext': 'mp4', + 'title': '798022190320226304', + 'uploader': 'ColinFlaherty', + 'upload_date': '20180111', + 'timestamp': 1515639316, + 'uploader_id': 'ColinFlaherty', + }, + }, { + 'url': 'https://www.minds.com/archive/view/715172106794442752', + 'only_matching': True, + }, { + # youtube perma_url + 'url': 'https://www.minds.com/newsfeed/1197131838022602752', + 'only_matching': True, + }] + + def _real_extract(self, url): + entity_id = self._match_id(url) + entity = self._call_api( + 'v1/entities/entity/' + entity_id, entity_id, 'entity')['entity'] + if entity.get('type') == 'activity': + if entity.get('custom_type') == 'video': + video_id = entity['entity_guid'] + else: + return self.url_result(entity['perma_url']) + else: + assert(entity['subtype'] == 'video') + video_id = entity_id + # 1080p and webm formats available only on the sources array + video = self._call_api( + 'v2/media/video/' + video_id, video_id, 'video') + + formats = [] + for source in (video.get('sources') or []): + src = source.get('src') + if not src: + continue + formats.append({ + 'format_id': source.get('label'), + 'height': int_or_none(source.get('size')), + 'url': src, + }) + self._sort_formats(formats) + + entity = video.get('entity') or entity + owner = entity.get('ownerObj') or {} + uploader_id = owner.get('username') + + tags = entity.get('tags') + if tags and isinstance(tags, compat_str): + tags = [tags] + + thumbnail = None + poster = video.get('poster') or entity.get('thumbnail_src') + if poster: + urlh = self._request_webpage(poster, video_id, fatal=False) + if urlh: + thumbnail = urlh.geturl() + + return { + 'id': video_id, + 'title': entity.get('title') or video_id, + 'formats': formats, + 'description': clean_html(entity.get('description')) or None, + 'license': str_or_none(entity.get('license')), + 'timestamp': int_or_none(entity.get('time_created')), + 'uploader': strip_or_none(owner.get('name')), + 'uploader_id': uploader_id, + 'uploader_url': 'https://www.minds.com/' + uploader_id if uploader_id else None, + 'view_count': int_or_none(entity.get('play:count')), + 'like_count': int_or_none(entity.get('thumbs:up:count')), + 'dislike_count': int_or_none(entity.get('thumbs:down:count')), + 'tags': tags, + 'comment_count': int_or_none(entity.get('comments:count')), + 'thumbnail': thumbnail, + } + + +class MindsFeedBaseIE(MindsBaseIE): + _PAGE_SIZE = 150 + + def _entries(self, feed_id): + query = {'limit': self._PAGE_SIZE, 'sync': 1} + i = 1 + while True: + data = self._call_api( + 'v2/feeds/container/%s/videos' % feed_id, + feed_id, 'page %s' % i, query) + entities = data.get('entities') or [] + for entity in entities: + guid = entity.get('guid') + if not guid: + continue + yield self.url_result( + 'https://www.minds.com/newsfeed/' + guid, + MindsIE.ie_key(), guid) + query['from_timestamp'] = data['load-next'] + if not (query['from_timestamp'] and len(entities) == self._PAGE_SIZE): + break + i += 1 + + def _real_extract(self, url): + feed_id = self._match_id(url) + feed = self._call_api( + 'v1/%s/%s' % (self._FEED_PATH, feed_id), + feed_id, self._FEED_TYPE)[self._FEED_TYPE] + + return self.playlist_result( + self._entries(feed['guid']), feed_id, + strip_or_none(feed.get('name')), + feed.get('briefdescription')) + + +class MindsChannelIE(MindsFeedBaseIE): + _FEED_TYPE = 'channel' + IE_NAME = 'minds:' + _FEED_TYPE + _VALID_URL = MindsBaseIE._VALID_URL_BASE + r'(?!(?:newsfeed|media|api|archive|groups)/)(?P<id>[^/?&#]+)' + _FEED_PATH = 'channel' + _TEST = { + 'url': 'https://www.minds.com/ottman', + 'info_dict': { + 'id': 'ottman', + 'title': 'Bill Ottman', + 'description': 'Co-creator & CEO @minds', + }, + 'playlist_mincount': 54, + } + + +class MindsGroupIE(MindsFeedBaseIE): + _FEED_TYPE = 'group' + IE_NAME = 'minds:' + _FEED_TYPE + _VALID_URL = MindsBaseIE._VALID_URL_BASE + r'groups/profile/(?P<id>[0-9]+)' + _FEED_PATH = 'groups/group' + _TEST = { + 'url': 'https://www.minds.com/groups/profile/785582576369672204/feed/videos', + 'info_dict': { + 'id': '785582576369672204', + 'title': 'Cooking Videos', + }, + 'playlist_mincount': 1, + } diff --git a/youtube_dl/extractor/mtv.py b/youtube_dl/extractor/mtv.py index df1034fc..f5e30d22 100644 --- a/youtube_dl/extractor/mtv.py +++ b/youtube_dl/extractor/mtv.py @@ -253,6 +253,10 @@ def _extract_triforce_mgid(self, webpage, data_zone=None, video_id=None): return try_get(feed, lambda x: x['result']['data']['id'], compat_str) + @staticmethod + def _extract_child_with_type(parent, t): + return next(c for c in parent['children'] if c.get('type') == t) + def _extract_mgid(self, webpage): try: # the url can be http://media.mtvnservices.com/fb/{mgid}.swf @@ -278,6 +282,13 @@ def _extract_mgid(self, webpage): if not mgid: mgid = self._extract_triforce_mgid(webpage) + if not mgid: + data = self._parse_json(self._search_regex( + r'__DATA__\s*=\s*({.+?});', webpage, 'data'), None) + main_container = self._extract_child_with_type(data, 'MainContainer') + video_player = self._extract_child_with_type(main_container, 'VideoPlayer') + mgid = video_player['props']['media']['video']['config']['uri'] + return mgid def _real_extract(self, url): @@ -349,18 +360,6 @@ class MTVIE(MTVServicesInfoExtractor): 'only_matching': True, }] - @staticmethod - def extract_child_with_type(parent, t): - children = parent['children'] - return next(c for c in children if c.get('type') == t) - - def _extract_mgid(self, webpage): - data = self._parse_json(self._search_regex( - r'__DATA__\s*=\s*({.+?});', webpage, 'data'), None) - main_container = self.extract_child_with_type(data, 'MainContainer') - video_player = self.extract_child_with_type(main_container, 'VideoPlayer') - return video_player['props']['media']['video']['config']['uri'] - class MTVJapanIE(MTVServicesInfoExtractor): IE_NAME = 'mtvjapan' diff --git a/youtube_dl/extractor/ninegag.py b/youtube_dl/extractor/ninegag.py index dc6a27d3..440f865b 100644 --- a/youtube_dl/extractor/ninegag.py +++ b/youtube_dl/extractor/ninegag.py @@ -1,104 +1,125 @@ from __future__ import unicode_literals -import re - from .common import InfoExtractor -from ..utils import str_to_int +from ..utils import ( + determine_ext, + ExtractorError, + int_or_none, + try_get, + url_or_none, +) class NineGagIE(InfoExtractor): IE_NAME = '9gag' - _VALID_URL = r'https?://(?:www\.)?9gag(?:\.com/tv|\.tv)/(?:p|embed)/(?P<id>[a-zA-Z0-9]+)(?:/(?P<display_id>[^?#/]+))?' + _VALID_URL = r'https?://(?:www\.)?9gag\.com/gag/(?P<id>[^/?&#]+)' - _TESTS = [{ - 'url': 'http://9gag.com/tv/p/Kk2X5/people-are-awesome-2013-is-absolutely-awesome', - 'info_dict': { - 'id': 'kXzwOKyGlSA', - 'ext': 'mp4', - 'description': 'This 3-minute video will make you smile and then make you feel untalented and insignificant. Anyway, you should share this awesomeness. (Thanks, Dino!)', - 'title': '\"People Are Awesome 2013\" Is Absolutely Awesome', - 'uploader_id': 'UCdEH6EjDKwtTe-sO2f0_1XA', - 'uploader': 'CompilationChannel', - 'upload_date': '20131110', - 'view_count': int, - }, - 'add_ie': ['Youtube'], - }, { - 'url': 'http://9gag.com/tv/p/aKolP3', + _TEST = { + 'url': 'https://9gag.com/gag/ae5Ag7B', 'info_dict': { - 'id': 'aKolP3', + 'id': 'ae5Ag7B', 'ext': 'mp4', - 'title': 'This Guy Travelled 11 countries In 44 days Just To Make This Amazing Video', - 'description': "I just saw more in 1 minute than I've seen in 1 year. This guy's video is epic!!", - 'uploader_id': 'rickmereki', - 'uploader': 'Rick Mereki', - 'upload_date': '20110803', - 'view_count': int, - }, - 'add_ie': ['Vimeo'], - }, { - 'url': 'http://9gag.com/tv/p/KklwM', - 'only_matching': True, - }, { - 'url': 'http://9gag.tv/p/Kk2X5', - 'only_matching': True, - }, { - 'url': 'http://9gag.com/tv/embed/a5Dmvl', - 'only_matching': True, - }] - - _EXTERNAL_VIDEO_PROVIDER = { - '1': { - 'url': '%s', - 'ie_key': 'Youtube', - }, - '2': { - 'url': 'http://player.vimeo.com/video/%s', - 'ie_key': 'Vimeo', - }, - '3': { - 'url': 'http://instagram.com/p/%s', - 'ie_key': 'Instagram', - }, - '4': { - 'url': 'http://vine.co/v/%s', - 'ie_key': 'Vine', - }, + 'title': 'Capybara Agility Training', + 'upload_date': '20191108', + 'timestamp': 1573237208, + 'categories': ['Awesome'], + 'tags': ['Weimaraner', 'American Pit Bull Terrier'], + 'duration': 44, + 'like_count': int, + 'dislike_count': int, + 'comment_count': int, + } } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - display_id = mobj.group('display_id') or video_id + post_id = self._match_id(url) + post = self._download_json( + 'https://9gag.com/v1/post', post_id, query={ + 'id': post_id + })['data']['post'] + + if post.get('type') != 'Animated': + raise ExtractorError( + 'The given url does not contain a video', + expected=True) + + title = post['title'] + + duration = None + formats = [] + thumbnails = [] + for key, image in (post.get('images') or {}).items(): + image_url = url_or_none(image.get('url')) + if not image_url: + continue + ext = determine_ext(image_url) + image_id = key.strip('image') + common = { + 'url': image_url, + 'width': int_or_none(image.get('width')), + 'height': int_or_none(image.get('height')), + } + if ext in ('jpg', 'png'): + webp_url = image.get('webpUrl') + if webp_url: + t = common.copy() + t.update({ + 'id': image_id + '-webp', + 'url': webp_url, + }) + thumbnails.append(t) + common.update({ + 'id': image_id, + 'ext': ext, + }) + thumbnails.append(common) + elif ext in ('webm', 'mp4'): + if not duration: + duration = int_or_none(image.get('duration')) + common['acodec'] = 'none' if image.get('hasAudio') == 0 else None + for vcodec in ('vp8', 'vp9', 'h265'): + c_url = image.get(vcodec + 'Url') + if not c_url: + continue + c_f = common.copy() + c_f.update({ + 'format_id': image_id + '-' + vcodec, + 'url': c_url, + 'vcodec': vcodec, + }) + formats.append(c_f) + common.update({ + 'ext': ext, + 'format_id': image_id, + }) + formats.append(common) + self._sort_formats(formats) - webpage = self._download_webpage(url, display_id) + section = try_get(post, lambda x: x['postSection']['name']) - post_view = self._parse_json( - self._search_regex( - r'var\s+postView\s*=\s*new\s+app\.PostView\({\s*post:\s*({.+?})\s*,\s*posts:\s*prefetchedCurrentPost', - webpage, 'post view'), - display_id) + tags = None + post_tags = post.get('tags') + if post_tags: + tags = [] + for tag in post_tags: + tag_key = tag.get('key') + if not tag_key: + continue + tags.append(tag_key) - ie_key = None - source_url = post_view.get('sourceUrl') - if not source_url: - external_video_id = post_view['videoExternalId'] - external_video_provider = post_view['videoExternalProvider'] - source_url = self._EXTERNAL_VIDEO_PROVIDER[external_video_provider]['url'] % external_video_id - ie_key = self._EXTERNAL_VIDEO_PROVIDER[external_video_provider]['ie_key'] - title = post_view['title'] - description = post_view.get('description') - view_count = str_to_int(post_view.get('externalView')) - thumbnail = post_view.get('thumbnail_700w') or post_view.get('ogImageUrl') or post_view.get('thumbnail_300w') + get_count = lambda x: int_or_none(post.get(x + 'Count')) return { - '_type': 'url_transparent', - 'url': source_url, - 'ie_key': ie_key, - 'id': video_id, - 'display_id': display_id, + 'id': post_id, 'title': title, - 'description': description, - 'view_count': view_count, - 'thumbnail': thumbnail, + 'timestamp': int_or_none(post.get('creationTs')), + 'duration': duration, + 'formats': formats, + 'thumbnails': thumbnails, + 'like_count': get_count('upVote'), + 'dislike_count': get_count('downVote'), + 'comment_count': get_count('comments'), + 'age_limit': 18 if post.get('nsfw') == 1 else None, + 'categories': [section] if section else None, + 'tags': tags, } diff --git a/youtube_dl/extractor/njpwworld.py b/youtube_dl/extractor/njpwworld.py index 025c5d24..3639d142 100644 --- a/youtube_dl/extractor/njpwworld.py +++ b/youtube_dl/extractor/njpwworld.py @@ -6,30 +6,40 @@ from .common import InfoExtractor from ..compat import compat_urlparse from ..utils import ( - extract_attributes, get_element_by_class, urlencode_postdata, ) class NJPWWorldIE(InfoExtractor): - _VALID_URL = r'https?://njpwworld\.com/p/(?P<id>[a-z0-9_]+)' + _VALID_URL = r'https?://(front\.)?njpwworld\.com/p/(?P<id>[a-z0-9_]+)' IE_DESC = '新日本プロレスワールド' _NETRC_MACHINE = 'njpwworld' - _TEST = { + _TESTS = [{ 'url': 'http://njpwworld.com/p/s_series_00155_1_9/', 'info_dict': { 'id': 's_series_00155_1_9', 'ext': 'mp4', - 'title': '第9試合 ランディ・サベージ vs リック・スタイナー', + 'title': '闘強導夢2000 2000年1月4日 東京ドーム 第9試合 ランディ・サベージ VS リック・スタイナー', 'tags': list, }, 'params': { 'skip_download': True, # AES-encrypted m3u8 }, 'skip': 'Requires login', - } + }, { + 'url': 'https://front.njpwworld.com/p/s_series_00563_16_bs', + 'info_dict': { + 'id': 's_series_00563_16_bs', + 'ext': 'mp4', + 'title': 'WORLD TAG LEAGUE 2020 & BEST OF THE SUPER Jr.27 2020年12月6日 福岡・福岡国際センター バックステージコメント(字幕あり)', + 'tags': ["福岡・福岡国際センター", "バックステージコメント", "2020", "20年代"], + }, + 'params': { + 'skip_download': True, + }, + }] _LOGIN_URL = 'https://front.njpwworld.com/auth/login' @@ -64,35 +74,27 @@ def _real_extract(self, url): webpage = self._download_webpage(url, video_id) formats = [] - for mobj in re.finditer(r'<a[^>]+\bhref=(["\'])/player.+?[^>]*>', webpage): - player = extract_attributes(mobj.group(0)) - player_path = player.get('href') - if not player_path: - continue - kind = self._search_regex( - r'(low|high)$', player.get('class') or '', 'kind', - default='low') + for kind, vid in re.findall(r'if\s+\(\s*imageQualityType\s*==\s*\'([^\']+)\'\s*\)\s*{\s*video_id\s*=\s*"(\d+)"', webpage): + player_path = '/intent?id=%s&type=url' % vid player_url = compat_urlparse.urljoin(url, player_path) - player_page = self._download_webpage( - player_url, video_id, note='Downloading player page') - entries = self._parse_html5_media_entries( - player_url, player_page, video_id, m3u8_id='hls-%s' % kind, - m3u8_entry_protocol='m3u8_native') - kind_formats = entries[0]['formats'] - for f in kind_formats: - f['quality'] = 2 if kind == 'high' else 1 - formats.extend(kind_formats) + formats.append({ + 'url': player_url, + 'format_id': kind, + 'ext': 'mp4', + 'protocol': 'm3u8', + 'quality': 2 if kind == 'high' else 1, + }) self._sort_formats(formats) - post_content = get_element_by_class('post-content', webpage) + tag_block = get_element_by_class('tag-block', webpage) tags = re.findall( - r'<li[^>]+class="tag-[^"]+"><a[^>]*>([^<]+)</a></li>', post_content - ) if post_content else None + r'<a[^>]+class="tag-[^"]+"[^>]*>([^<]+)</a>', tag_block + ) if tag_block else None return { 'id': video_id, - 'title': self._og_search_title(webpage), + 'title': get_element_by_class('article-title', webpage) or self._og_search_title(webpage), 'formats': formats, 'tags': tags, } diff --git a/youtube_dl/extractor/spike.py b/youtube_dl/extractor/spike.py index 4c5e3f7c..5805f3d4 100644 --- a/youtube_dl/extractor/spike.py +++ b/youtube_dl/extractor/spike.py @@ -20,9 +20,6 @@ class BellatorIE(MTVServicesInfoExtractor): _FEED_URL = 'http://www.bellator.com/feeds/mrss/' _GEO_COUNTRIES = ['US'] - def _extract_mgid(self, webpage): - return self._extract_triforce_mgid(webpage) - class ParamountNetworkIE(MTVServicesInfoExtractor): _VALID_URL = r'https?://(?:www\.)?paramountnetwork\.com/[^/]+/[\da-z]{6}(?:[/?#&]|$)' @@ -46,16 +43,6 @@ class ParamountNetworkIE(MTVServicesInfoExtractor): def _get_feed_query(self, uri): return { 'arcEp': 'paramountnetwork.com', + 'imageEp': 'paramountnetwork.com', 'mgid': uri, } - - def _extract_mgid(self, webpage): - root_data = self._parse_json(self._search_regex( - r'window\.__DATA__\s*=\s*({.+})', - webpage, 'data'), None) - - def find_sub_data(data, data_type): - return next(c for c in data['children'] if c.get('type') == data_type) - - c = find_sub_data(find_sub_data(root_data, 'MainContainer'), 'VideoPlayer') - return c['props']['media']['video']['config']['uri'] diff --git a/youtube_dl/extractor/spotify.py b/youtube_dl/extractor/spotify.py new file mode 100644 index 00000000..826f98cf --- /dev/null +++ b/youtube_dl/extractor/spotify.py @@ -0,0 +1,156 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import json +import re + +from .common import InfoExtractor +from ..utils import ( + clean_podcast_url, + float_or_none, + int_or_none, + strip_or_none, + try_get, + unified_strdate, +) + + +class SpotifyBaseIE(InfoExtractor): + _ACCESS_TOKEN = None + _OPERATION_HASHES = { + 'Episode': '8276d4423d709ae9b68ec1b74cc047ba0f7479059a37820be730f125189ac2bf', + 'MinimalShow': '13ee079672fad3f858ea45a55eb109553b4fb0969ed793185b2e34cbb6ee7cc0', + 'ShowEpisodes': 'e0e5ce27bd7748d2c59b4d44ba245a8992a05be75d6fabc3b20753fc8857444d', + } + _VALID_URL_TEMPL = r'https?://open\.spotify\.com/%s/(?P<id>[^/?&#]+)' + + def _real_initialize(self): + self._ACCESS_TOKEN = self._download_json( + 'https://open.spotify.com/get_access_token', None)['accessToken'] + + def _call_api(self, operation, video_id, variables): + return self._download_json( + 'https://api-partner.spotify.com/pathfinder/v1/query', video_id, query={ + 'operationName': 'query' + operation, + 'variables': json.dumps(variables), + 'extensions': json.dumps({ + 'persistedQuery': { + 'sha256Hash': self._OPERATION_HASHES[operation], + }, + }) + }, headers={'authorization': 'Bearer ' + self._ACCESS_TOKEN})['data'] + + def _extract_episode(self, episode, series): + episode_id = episode['id'] + title = episode['name'].strip() + + formats = [] + audio_preview = episode.get('audioPreview') or {} + audio_preview_url = audio_preview.get('url') + if audio_preview_url: + f = { + 'url': audio_preview_url.replace('://p.scdn.co/mp3-preview/', '://anon-podcast.scdn.co/'), + 'vcodec': 'none', + } + audio_preview_format = audio_preview.get('format') + if audio_preview_format: + f['format_id'] = audio_preview_format + mobj = re.match(r'([0-9A-Z]{3})_(?:[A-Z]+_)?(\d+)', audio_preview_format) + if mobj: + f.update({ + 'abr': int(mobj.group(2)), + 'ext': mobj.group(1).lower(), + }) + formats.append(f) + + for item in (try_get(episode, lambda x: x['audio']['items']) or []): + item_url = item.get('url') + if not (item_url and item.get('externallyHosted')): + continue + formats.append({ + 'url': clean_podcast_url(item_url), + 'vcodec': 'none', + }) + + thumbnails = [] + for source in (try_get(episode, lambda x: x['coverArt']['sources']) or []): + source_url = source.get('url') + if not source_url: + continue + thumbnails.append({ + 'url': source_url, + 'width': int_or_none(source.get('width')), + 'height': int_or_none(source.get('height')), + }) + + return { + 'id': episode_id, + 'title': title, + 'formats': formats, + 'thumbnails': thumbnails, + 'description': strip_or_none(episode.get('description')), + 'duration': float_or_none(try_get( + episode, lambda x: x['duration']['totalMilliseconds']), 1000), + 'release_date': unified_strdate(try_get( + episode, lambda x: x['releaseDate']['isoString'])), + 'series': series, + } + + +class SpotifyIE(SpotifyBaseIE): + IE_NAME = 'spotify' + _VALID_URL = SpotifyBaseIE._VALID_URL_TEMPL % 'episode' + _TEST = { + 'url': 'https://open.spotify.com/episode/4Z7GAJ50bgctf6uclHlWKo', + 'md5': '74010a1e3fa4d9e1ab3aa7ad14e42d3b', + 'info_dict': { + 'id': '4Z7GAJ50bgctf6uclHlWKo', + 'ext': 'mp3', + 'title': 'From the archive: Why time management is ruining our lives', + 'description': 'md5:b120d9c4ff4135b42aa9b6d9cde86935', + 'duration': 2083.605, + 'release_date': '20201217', + 'series': "The Guardian's Audio Long Reads", + } + } + + def _real_extract(self, url): + episode_id = self._match_id(url) + episode = self._call_api('Episode', episode_id, { + 'uri': 'spotify:episode:' + episode_id + })['episode'] + return self._extract_episode( + episode, try_get(episode, lambda x: x['podcast']['name'])) + + +class SpotifyShowIE(SpotifyBaseIE): + IE_NAME = 'spotify:show' + _VALID_URL = SpotifyBaseIE._VALID_URL_TEMPL % 'show' + _TEST = { + 'url': 'https://open.spotify.com/show/4PM9Ke6l66IRNpottHKV9M', + 'info_dict': { + 'id': '4PM9Ke6l66IRNpottHKV9M', + 'title': 'The Story from the Guardian', + 'description': 'The Story podcast is dedicated to our finest audio documentaries, investigations and long form stories', + }, + 'playlist_mincount': 36, + } + + def _real_extract(self, url): + show_id = self._match_id(url) + podcast = self._call_api('ShowEpisodes', show_id, { + 'limit': 1000000000, + 'offset': 0, + 'uri': 'spotify:show:' + show_id, + })['podcast'] + podcast_name = podcast.get('name') + + entries = [] + for item in (try_get(podcast, lambda x: x['episodes']['items']) or []): + episode = item.get('episode') + if not episode: + continue + entries.append(self._extract_episode(episode, podcast_name)) + + return self.playlist_result( + entries, show_id, podcast_name, podcast.get('description')) diff --git a/youtube_dl/extractor/trovo.py b/youtube_dl/extractor/trovo.py new file mode 100644 index 00000000..43745213 --- /dev/null +++ b/youtube_dl/extractor/trovo.py @@ -0,0 +1,193 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import json + +from .common import InfoExtractor +from ..utils import ( + ExtractorError, + int_or_none, + str_or_none, + try_get, +) + + +class TrovoBaseIE(InfoExtractor): + _VALID_URL_BASE = r'https?://(?:www\.)?trovo\.live/' + + def _extract_streamer_info(self, data): + streamer_info = data.get('streamerInfo') or {} + username = streamer_info.get('userName') + return { + 'uploader': streamer_info.get('nickName'), + 'uploader_id': str_or_none(streamer_info.get('uid')), + 'uploader_url': 'https://trovo.live/' + username if username else None, + } + + +class TrovoIE(TrovoBaseIE): + _VALID_URL = TrovoBaseIE._VALID_URL_BASE + r'(?!(?:clip|video)/)(?P<id>[^/?&#]+)' + + def _real_extract(self, url): + username = self._match_id(url) + live_info = self._download_json( + 'https://gql.trovo.live/', username, query={ + 'query': '''{ + getLiveInfo(params: {userName: "%s"}) { + isLive + programInfo { + coverUrl + id + streamInfo { + desc + playUrl + } + title + } + streamerInfo { + nickName + uid + userName + } + } +}''' % username, + })['data']['getLiveInfo'] + if live_info.get('isLive') == 0: + raise ExtractorError('%s is offline' % username, expected=True) + program_info = live_info['programInfo'] + program_id = program_info['id'] + title = self._live_title(program_info['title']) + + formats = [] + for stream_info in (program_info.get('streamInfo') or []): + play_url = stream_info.get('playUrl') + if not play_url: + continue + format_id = stream_info.get('desc') + formats.append({ + 'format_id': format_id, + 'height': int_or_none(format_id[:-1]) if format_id else None, + 'url': play_url, + }) + self._sort_formats(formats) + + info = { + 'id': program_id, + 'title': title, + 'formats': formats, + 'thumbnail': program_info.get('coverUrl'), + 'is_live': True, + } + info.update(self._extract_streamer_info(live_info)) + return info + + +class TrovoVodIE(TrovoBaseIE): + _VALID_URL = TrovoBaseIE._VALID_URL_BASE + r'(?:clip|video)/(?P<id>[^/?&#]+)' + _TESTS = [{ + 'url': 'https://trovo.live/video/ltv-100095501_100095501_1609596043', + 'info_dict': { + 'id': 'ltv-100095501_100095501_1609596043', + 'ext': 'mp4', + 'title': 'Spontaner 12 Stunden Stream! - Ok Boomer!', + 'uploader': 'Exsl', + 'timestamp': 1609640305, + 'upload_date': '20210103', + 'uploader_id': '100095501', + 'duration': 43977, + 'view_count': int, + 'like_count': int, + 'comment_count': int, + 'comments': 'mincount:8', + 'categories': ['Grand Theft Auto V'], + }, + }, { + 'url': 'https://trovo.live/clip/lc-5285890810184026005', + 'only_matching': True, + }] + + def _real_extract(self, url): + vid = self._match_id(url) + resp = self._download_json( + 'https://gql.trovo.live/', vid, data=json.dumps([{ + 'query': '''{ + batchGetVodDetailInfo(params: {vids: ["%s"]}) { + VodDetailInfos + } +}''' % vid, + }, { + 'query': '''{ + getCommentList(params: {appInfo: {postID: "%s"}, pageSize: 1000000000, preview: {}}) { + commentList { + author { + nickName + uid + } + commentID + content + createdAt + parentID + } + } +}''' % vid, + }]).encode(), headers={ + 'Content-Type': 'application/json', + }) + vod_detail_info = resp[0]['data']['batchGetVodDetailInfo']['VodDetailInfos'][vid] + vod_info = vod_detail_info['vodInfo'] + title = vod_info['title'] + + language = vod_info.get('languageName') + formats = [] + for play_info in (vod_info.get('playInfos') or []): + play_url = play_info.get('playUrl') + if not play_url: + continue + format_id = play_info.get('desc') + formats.append({ + 'ext': 'mp4', + 'filesize': int_or_none(play_info.get('fileSize')), + 'format_id': format_id, + 'height': int_or_none(format_id[:-1]) if format_id else None, + 'language': language, + 'protocol': 'm3u8_native', + 'tbr': int_or_none(play_info.get('bitrate')), + 'url': play_url, + }) + self._sort_formats(formats) + + category = vod_info.get('categoryName') + get_count = lambda x: int_or_none(vod_info.get(x + 'Num')) + + comment_list = try_get(resp, lambda x: x[1]['data']['getCommentList']['commentList'], list) or [] + comments = [] + for comment in comment_list: + content = comment.get('content') + if not content: + continue + author = comment.get('author') or {} + parent = comment.get('parentID') + comments.append({ + 'author': author.get('nickName'), + 'author_id': str_or_none(author.get('uid')), + 'id': str_or_none(comment.get('commentID')), + 'text': content, + 'timestamp': int_or_none(comment.get('createdAt')), + 'parent': 'root' if parent == 0 else str_or_none(parent), + }) + + info = { + 'id': vid, + 'title': title, + 'formats': formats, + 'thumbnail': vod_info.get('coverUrl'), + 'timestamp': int_or_none(vod_info.get('publishTs')), + 'duration': int_or_none(vod_info.get('duration')), + 'view_count': get_count('watch'), + 'like_count': get_count('like'), + 'comment_count': get_count('comment'), + 'comments': comments, + 'categories': [category] if category else None, + } + info.update(self._extract_streamer_info(vod_detail_info)) + return info diff --git a/youtube_dl/extractor/wat.py b/youtube_dl/extractor/wat.py index 8ef3e090..f6940b37 100644 --- a/youtube_dl/extractor/wat.py +++ b/youtube_dl/extractor/wat.py @@ -1,12 +1,9 @@ # coding: utf-8 from __future__ import unicode_literals -import re - from .common import InfoExtractor from ..compat import compat_str from ..utils import ( - ExtractorError, unified_strdate, HEADRequest, int_or_none, @@ -46,15 +43,6 @@ class WatIE(InfoExtractor): }, ] - _FORMATS = ( - (200, 416, 234), - (400, 480, 270), - (600, 640, 360), - (1200, 640, 360), - (1800, 960, 540), - (2500, 1280, 720), - ) - def _real_extract(self, url): video_id = self._match_id(url) video_id = video_id if video_id.isdigit() and len(video_id) > 6 else compat_str(int(video_id, 36)) @@ -97,46 +85,20 @@ def extract_url(path_template, url_type): return red_url return None - def remove_bitrate_limit(manifest_url): - return re.sub(r'(?:max|min)_bitrate=\d+&?', '', manifest_url) - formats = [] - try: - alt_urls = lambda manifest_url: [re.sub(r'(?:wdv|ssm)?\.ism/', repl + '.ism/', manifest_url) for repl in ('', 'ssm')] - manifest_urls = self._download_json( - 'http://www.wat.tv/get/webhtml/' + video_id, video_id) - m3u8_url = manifest_urls.get('hls') - if m3u8_url: - m3u8_url = remove_bitrate_limit(m3u8_url) - for m3u8_alt_url in alt_urls(m3u8_url): - formats.extend(self._extract_m3u8_formats( - m3u8_alt_url, video_id, 'mp4', - 'm3u8_native', m3u8_id='hls', fatal=False)) - formats.extend(self._extract_f4m_formats( - m3u8_alt_url.replace('ios', 'web').replace('.m3u8', '.f4m'), - video_id, f4m_id='hds', fatal=False)) - mpd_url = manifest_urls.get('mpd') - if mpd_url: - mpd_url = remove_bitrate_limit(mpd_url) - for mpd_alt_url in alt_urls(mpd_url): - formats.extend(self._extract_mpd_formats( - mpd_alt_url, video_id, mpd_id='dash', fatal=False)) - self._sort_formats(formats) - except ExtractorError: - abr = 64 - for vbr, width, height in self._FORMATS: - tbr = vbr + abr - format_id = 'http-%s' % tbr - fmt_url = 'http://dnl.adv.tf1.fr/2/USP-0x0/%s/%s/%s/ssm/%s-%s-64k.mp4' % (video_id[-4:-2], video_id[-2:], video_id, video_id, vbr) - if self._is_valid_url(fmt_url, video_id, format_id): - formats.append({ - 'format_id': format_id, - 'url': fmt_url, - 'vbr': vbr, - 'abr': abr, - 'width': width, - 'height': height, - }) + manifest_urls = self._download_json( + 'http://www.wat.tv/get/webhtml/' + video_id, video_id) + m3u8_url = manifest_urls.get('hls') + if m3u8_url: + formats.extend(self._extract_m3u8_formats( + m3u8_url, video_id, 'mp4', + 'm3u8_native', m3u8_id='hls', fatal=False)) + mpd_url = manifest_urls.get('mpd') + if mpd_url: + formats.extend(self._extract_mpd_formats( + mpd_url.replace('://das-q1.tf1.fr/', '://das-q1-ssl.tf1.fr/'), + video_id, mpd_id='dash', fatal=False)) + self._sort_formats(formats) date_diffusion = first_chapter.get('date_diffusion') or video_data.get('configv4', {}).get('estatS4') upload_date = unified_strdate(date_diffusion) if date_diffusion else None diff --git a/youtube_dl/extractor/yahoo.py b/youtube_dl/extractor/yahoo.py index e4615376..a17b10d6 100644 --- a/youtube_dl/extractor/yahoo.py +++ b/youtube_dl/extractor/yahoo.py @@ -177,46 +177,9 @@ class YahooIE(InfoExtractor): 'only_matching': True, }] - def _real_extract(self, url): - url, country, display_id = re.match(self._VALID_URL, url).groups() - if not country: - country = 'us' - else: - country = country.split('-')[0] - api_base = 'https://%s.yahoo.com/_td/api/resource/' % country - - for i, uuid in enumerate(['url=' + url, 'ymedia-alias=' + display_id]): - content = self._download_json( - api_base + 'content;getDetailView=true;uuids=["%s"]' % uuid, - display_id, 'Downloading content JSON metadata', fatal=i == 1) - if content: - item = content['items'][0] - break - - if item.get('type') != 'video': - entries = [] - - cover = item.get('cover') or {} - if cover.get('type') == 'yvideo': - cover_url = cover.get('url') - if cover_url: - entries.append(self.url_result( - cover_url, 'Yahoo', cover.get('uuid'))) - - for e in item.get('body', []): - if e.get('type') == 'videoIframe': - iframe_url = e.get('url') - if not iframe_url: - continue - entries.append(self.url_result(iframe_url)) - - return self.playlist_result( - entries, item.get('uuid'), - item.get('title'), item.get('summary')) - - video_id = item['uuid'] + def _extract_yahoo_video(self, video_id, country): video = self._download_json( - api_base + 'VideoService.videos;view=full;video_ids=["%s"]' % video_id, + 'https://%s.yahoo.com/_td/api/resource/VideoService.videos;view=full;video_ids=["%s"]' % (country, video_id), video_id, 'Downloading video JSON metadata')[0] title = video['title'] @@ -298,7 +261,6 @@ def _real_extract(self, url): 'id': video_id, 'title': self._live_title(title) if is_live else title, 'formats': formats, - 'display_id': display_id, 'thumbnails': thumbnails, 'description': clean_html(video.get('description')), 'timestamp': parse_iso8601(video.get('publish_time')), @@ -311,6 +273,44 @@ def _real_extract(self, url): 'episode_number': int_or_none(series_info.get('episode_number')), } + def _real_extract(self, url): + url, country, display_id = re.match(self._VALID_URL, url).groups() + if not country: + country = 'us' + else: + country = country.split('-')[0] + + item = self._download_json( + 'https://%s.yahoo.com/caas/content/article' % country, display_id, + 'Downloading content JSON metadata', query={ + 'url': url + })['items'][0]['data']['partnerData'] + + if item.get('type') != 'video': + entries = [] + + cover = item.get('cover') or {} + if cover.get('type') == 'yvideo': + cover_url = cover.get('url') + if cover_url: + entries.append(self.url_result( + cover_url, 'Yahoo', cover.get('uuid'))) + + for e in (item.get('body') or []): + if e.get('type') == 'videoIframe': + iframe_url = e.get('url') + if not iframe_url: + continue + entries.append(self.url_result(iframe_url)) + + return self.playlist_result( + entries, item.get('uuid'), + item.get('title'), item.get('summary')) + + info = self._extract_yahoo_video(item['uuid'], country) + info['display_id'] = display_id + return info + class YahooSearchIE(SearchInfoExtractor): IE_DESC = 'Yahoo screen search' diff --git a/youtube_dl/options.py b/youtube_dl/options.py index 3000ba41..241cf110 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -689,6 +689,10 @@ def _comma_separated_values_options_callback(option, opt_str, value, parser): '-o', '--output', dest='outtmpl', metavar='TEMPLATE', help=('Output filename template, see the "OUTPUT TEMPLATE" for all the info')) + filesystem.add_option( + '--output-na-placeholder', + dest='outtmpl_na_placeholder', metavar='PLACEHOLDER', default='NA', + help=('Placeholder value for unavailable meta fields in output filename template (default is "%default")')) filesystem.add_option( '--autonumber-size', dest='autonumber_size', metavar='NUMBER', type=int, @@ -782,7 +786,7 @@ def _comma_separated_values_options_callback(option, opt_str, value, parser): postproc.add_option( '-x', '--extract-audio', action='store_true', dest='extractaudio', default=False, - help='Convert video files to audio-only files (requires ffmpeg or avconv and ffprobe or avprobe)') + help='Convert video files to audio-only files (requires ffmpeg/avconv and ffprobe/avprobe)') postproc.add_option( '--audio-format', metavar='FORMAT', dest='audioformat', default='best', help='Specify audio format: "best", "aac", "flac", "mp3", "m4a", "opus", "vorbis", or "wav"; "%default" by default; No effect without -x') diff --git a/youtube_dl/version.py b/youtube_dl/version.py index ac7242ab..c52f1d9c 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = '2021.01.16' +__version__ = '2021.01.24.1'