youtube-dl
19 months ago[downloader] Let _ffmpeg_ handle DASH segments
dirkf [Sat, 11 Mar 2023 12:09:55 +0000 (12:09 +0000)]
[downloader] Let _ffmpeg_ handle DASH segments

Fixes https://github.com/ytdl-org/youtube-dl/issues/31792 after 3da1783.

19 months ago[doc] Improve "guidance" on bug reporting
dirkf [Thu, 9 Mar 2023 16:40:30 +0000 (16:40 +0000)]
[doc] Improve "guidance" on bug reporting

19 months ago[doc] Recommend "Get cookies.txt LOCALLY" extension in README.md (#31763)
Sophira [Tue, 7 Mar 2023 15:49:31 +0000 (15:49 +0000)]
[doc] Recommend "Get cookies.txt LOCALLY" extension in README.md (#31763)

* remove link to suspect "Get cookies.txt" extension, dropped from Chrome store
* link to new Manifest V3-compatible open-source "Get cookies.txt LOCALLY" extension.

Fixes #31465.

19 months ago[jsinterp] Fix regexp parsing and .replace[All] method
dirkf [Sun, 5 Mar 2023 23:07:07 +0000 (23:07 +0000)]
[jsinterp] Fix regexp parsing and .replace[All] method

 * For performance, make regexp object instantiation lazy
 * Other small performance improvements

19 months ago[jsinterp] Handle `Date` at epoch 0
pukkandan [Fri, 3 Mar 2023 11:18:54 +0000 (16:48 +0530)]
[jsinterp] Handle `Date` at epoch 0

See yt-dlp/yt_dlp#6400

19 months ago[Youtube] Construct dash formats with `range` query
pukkandan [Tue, 28 Feb 2023 17:33:44 +0000 (23:03 +0530)]
[Youtube] Construct dash formats with `range` query

See yt-dlp/yt_dlp#6369

19 months ago[YouTube] Support @owner format in uploader_id etc
dirkf [Fri, 24 Feb 2023 02:48:37 +0000 (02:48 +0000)]
[YouTube] Support @owner format in uploader_id etc

* implement https://github.com/ytdl-org/youtube-dl/issues/31530#issuecomment-1435734719
* update affected tests
* misc clean-ups

19 months ago[test] Support test-case with volatile ID (eg live show)
dirkf [Fri, 24 Feb 2023 02:32:40 +0000 (02:32 +0000)]
[test] Support test-case with volatile ID (eg live show)

Signalled by regexp ID value, eg: `'id': r're:[\da-zA-Z_-]{8,}'`

19 months agoEscape URLs in `sanitized_Request`, not `sanitize_url` d2558234cf5dd12d6896eed5427b7d...
pukkandan [Tue, 1 Jun 2021 12:35:41 +0000 (18:05 +0530)]
Escape URLs in `sanitized_Request`, not `sanitize_url` d2558234cf5dd12d6896eed5427b7dcdb3ab7b5a added escaping of URLs while sanitizing. However, `sanitize_url` may not always receive an actual URL. Eg: When using `youtube-dl "search query" --default-search ytsearch`, `search query` gets escaped to `search%20query` before being prefixed with `ytsearch:` which is not the intended behavior. So the escaping is moved to `sanitized_Request` instead.

19 months ago[Vimeo] Fix e19ec52 for tween-age Pythons
df [Mon, 20 Feb 2023 01:41:46 +0000 (01:41 +0000)]
[Vimeo] Fix e19ec52 for tween-age Pythons

* a check in older Pythons in the 2.7 and earlier, 3.3, 3.4 series caused "sre_constants.error: nothing to repeat"
* satisfy the check by avoiding nested qualifiers that can match empty string

Resolves #31597

19 months ago[jsinterp] Fix dict comprehension for Py2.6
dirkf [Sun, 19 Feb 2023 13:47:49 +0000 (13:47 +0000)]
[jsinterp] Fix dict comprehension for Py2.6

Resolves #31600

19 months ago[YouTube] Avoid crash if uploader_id extraction fails
dirkf [Fri, 17 Feb 2023 11:16:54 +0000 (11:16 +0000)]
[YouTube] Avoid crash if uploader_id extraction fails

See #31530.

20 months ago[test] Avoid name TestIE which causes a pytest warning
dirkf [Tue, 14 Feb 2023 16:33:01 +0000 (16:33 +0000)]
[test] Avoid name TestIE which causes a pytest warning

See: https://github.com/yt-dlp/yt-dlp/commit/060ac76257a8c1f7370a8a571821c1d73377701f

20 months ago[InfoExtractor] Handle unquoted values in OpenGraph searches
dirkf [Tue, 14 Feb 2023 02:47:09 +0000 (02:47 +0000)]
[InfoExtractor] Handle unquoted values in OpenGraph searches

20 months ago[StreamsbIE] Add extractor for streamsb.com (viewsb.com) (#31517)
fonkap [Sat, 11 Feb 2023 02:54:45 +0000 (03:54 +0100)]
[StreamsbIE] Add extractor for streamsb.com (viewsb.com) (#31517)

* Add extractor for streamsb.com (viewsb.com)

* make data url using app.js version

---------

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[KommunetvIE] Add extractor for kommunetv.no (#31516)
fonkap [Sat, 11 Feb 2023 02:47:43 +0000 (03:47 +0100)]
[KommunetvIE] Add extractor for kommunetv.no (#31516)

* Add extractor for kommunetv.no
* Using utils.update_url instead of regex

---------

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[FileMoonIE] Add extractor for filemoon.sx (#31515)
fonkap [Sat, 11 Feb 2023 02:37:45 +0000 (03:37 +0100)]
[FileMoonIE] Add extractor for filemoon.sx (#31515)

---------

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[feat]: Add support to external downloader aria2p (#31500)
teddy171 [Thu, 9 Feb 2023 20:19:27 +0000 (04:19 +0800)]
[feat]: Add support to external downloader aria2p (#31500)

* feat: add class Aria2pFD

* feat: create call_downloader function

* feat: a colorful download interface to aria2pFD

* feat: change value name

* Apply suggestions from code review

Co-authored-by: dirkf <fieldhouse@gmx.net>
* Typo in suggestion

* fix: remove unused value

* fix: add not function to return value(0 is normal); add total_seconds to download.eta(timedelta object); add waiting status when hook progress

* fix: remove unuse method ..utils.format_bytes

* fix: be up to flake8

* fix: be up to flake8

* Apply suggestions from code review

* [feat] test external downloader aria2p

* [feat] test external downloader aria2p

* [fix] test_external_downloader.py

* Apply suggestions from code review

Co-authored-by: dirkf <fieldhouse@gmx.net>
* Apply suggestions from code review

Co-authored-by: dirkf <fieldhouse@gmx.net>
* Update test/test_external_downloader.py

Co-authored-by: dirkf <fieldhouse@gmx.net>
* Update test/test_external_downloader.py

Co-authored-by: dirkf <fieldhouse@gmx.net>
* Update youtube_dl/downloader/external.py

Co-authored-by: dirkf <fieldhouse@gmx.net>
* refactoring code and fix bugs

* Apply suggestions from code review

* Rename test_external_downloader.py to test_downloader_external.py

---------

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[rbgtum] Add new extractor (#31305)
Valentin Metz [Thu, 9 Feb 2023 11:25:28 +0000 (12:25 +0100)]
[rbgtum] Add new extractor (#31305)

* [rbgtum] Add new extractor

* Small update, force CI

---------

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[YouTube] Fix tests
dirkf [Wed, 8 Feb 2023 18:16:51 +0000 (18:16 +0000)]
[YouTube] Fix tests

20 months ago[YouTube] Refresh compat/utils usage
dirkf [Mon, 6 Feb 2023 16:19:21 +0000 (16:19 +0000)]
[YouTube] Refresh compat/utils usage
* import parse_qs()
* import parse_qs in lazy_extractors (clears old TODO)
* clean up old compiled lazy_extractors for Py2
* use update_url()

20 months ago[compat] Update test_compat
dirkf [Mon, 6 Feb 2023 15:50:28 +0000 (15:50 +0000)]
[compat] Update test_compat

[skip ci]

20 months ago[utils] Add parse_qs, update_url
dirkf [Sun, 5 Feb 2023 13:46:43 +0000 (13:46 +0000)]
[utils] Add parse_qs, update_url

[skip ci]

20 months ago[compat] Systematise compat_ naming
dirkf [Sun, 5 Feb 2023 15:43:43 +0000 (15:43 +0000)]
[compat] Systematise compat_ naming

[skip ci]

20 months ago[test] Fix TestAgeRestriction
dirkf [Sat, 4 Feb 2023 23:18:24 +0000 (23:18 +0000)]
[test] Fix TestAgeRestriction

* age restriction may cause DownloadError
* update obsolete test URLs
[skip ci]

20 months ago[YouTube] Add `signatureTimestamp` for age-gate bypass
dirkf [Mon, 20 Jun 2022 22:15:20 +0000 (23:15 +0100)]
[YouTube] Add `signatureTimestamp` for age-gate bypass

20 months ago[YouTube] Bypass age-gating for certain restricted videos
dirkf [Mon, 31 Jan 2022 04:28:54 +0000 (04:28 +0000)]
[YouTube] Bypass age-gating for certain restricted videos

* Use TVHTML5_SIMPLY_EMBEDDED_PLAYER client

* Also add and fix tests

* Introduce and use new utility function `update_url()`

20 months ago[Vimeo] Support /user{video_id}/{slug} URL format
dirkf [Sat, 11 Feb 2023 03:25:14 +0000 (03:25 +0000)]
[Vimeo] Support /user{video_id}/{slug} URL format

20 months ago[Vimeo] Fix `Unable to extract info section` redux
dirkf [Sat, 4 Feb 2023 00:21:35 +0000 (00:21 +0000)]
[Vimeo] Fix `Unable to extract info section` redux
* as reported in yt-dlp/yt-dlp#6149
* also allow newline in target JSON object

20 months ago[jsinterp] Nits
dirkf [Sat, 4 Feb 2023 01:53:47 +0000 (01:53 +0000)]
[jsinterp] Nits

20 months ago[IGN] Overhaul extractor to avoid URL redirection loop
dirkf [Sat, 4 Feb 2023 00:19:48 +0000 (00:19 +0000)]
[IGN] Overhaul extractor to avoid URL redirection loop

Consequently/also:
* centralise video data extraction
* detect 404 and 503 expected errors
* handle the test video in IGNVideo
* handle two additional page formats for the tests in IGNArticle

20 months ago[ITV] Overhaul ITV extractor (#30266)
dirkf [Fri, 3 Feb 2023 21:10:07 +0000 (21:10 +0000)]
[ITV] Overhaul ITV extractor (#30266)

* support ITVX URLs (thanks Vangelis66)
* support legacy ITV Hub URLs
* include extraction fix 4c57dd2 from sleaux-meaux 3 May 2021
* include extraction fix 6fbcc16, fix by staubichsauger & pukkandan
* work-around duration parsing pending fix to utils.parse_duration
* apply default vanilla UA for pages and media to avoid site blocking
* also detect and report `Episode not found` instead of generic 404
* rework ITVBTCCIE with geo-block detection, best effort geo-restriction handling, news article support
* fix tests

20 months ago[myvideoge] Add new extractor (#31360)
dirkf [Thu, 2 Feb 2023 23:25:44 +0000 (23:25 +0000)]
[myvideoge] Add new extractor (#31360)

NB download tests on CI servers blocked

Co-authored-by: Alfonso Solbes <fonk666@gmail.com>
20 months ago[xhamster] add support for new domain xhvid.com (#31370)
afterdelight [Thu, 2 Feb 2023 23:20:14 +0000 (06:20 +0700)]
[xhamster] add support for new domain xhvid.com (#31370)

20 months ago[FIFA] Back-port extractor from yt-dlp (#31385)
dirkf [Thu, 2 Feb 2023 23:19:03 +0000 (23:19 +0000)]
[FIFA] Back-port extractor from yt-dlp (#31385)

20 months ago[Blerp] Add new extractor (#31398)
Epsilonator [Thu, 2 Feb 2023 17:33:09 +0000 (23:03 +0530)]
[Blerp] Add new extractor (#31398)

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[YouTube] Fix not finding videos listed under a channel's "shorts" subpage. (#31409)
zhangeric-15 [Thu, 2 Feb 2023 17:26:31 +0000 (12:26 -0500)]
[YouTube] Fix not finding videos listed under a channel's "shorts" subpage.  (#31409)

Resolves #31336

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[Callin] Add new extractor (#31414)
Ruowang Sun [Thu, 2 Feb 2023 17:21:05 +0000 (12:21 -0500)]
[Callin] Add new extractor (#31414)

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[pr0gramm] implement InfoExtractor, Resolves #31433 (#31434)
Leon Etienne [Thu, 2 Feb 2023 17:13:39 +0000 (18:13 +0100)]
[pr0gramm] implement InfoExtractor, Resolves #31433 (#31434)

* [pr0gramm] implement infoextractor

* [pr0gramm] remove misplaced comment, uncapture regex-group

* [pr0gramm]: specify utf-8 coding

* [pr0gramm]: add trailing comma to lists for maintainability

* [pr0gramm]: ie only sets upload_date attribute

* [pr0gramm]: add video_id to title

* [pr0gramm]: more forgiving _valid_url regex

* [pr0gramm]: add uploader to title, if set

* Discriminate URL pattern

---------

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[cammodels] fix and improve extractor (#31453)
JChris246 [Thu, 2 Feb 2023 17:12:36 +0000 (13:12 -0400)]
[cammodels] fix and improve extractor (#31453)

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[doc] Fixed typo appearing to promise an example (#31489)
Rodrigo Dias [Thu, 2 Feb 2023 17:10:09 +0000 (17:10 +0000)]
[doc] Fixed typo appearing to promise an example (#31489)

Resolves #31425

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[americastestkitchen] Add support for downloading entire series (#31493)
Brian Marks [Thu, 2 Feb 2023 16:58:21 +0000 (11:58 -0500)]
[americastestkitchen] Add support for downloading entire series (#31493)

Also
* support new sites and URL patterns
* back-port from yt-dlp

Co-authored-by: dirkf <fieldhouse@gmx.net>
20 months ago[jsinterp] Improve parsing
dirkf [Thu, 2 Feb 2023 14:28:32 +0000 (14:28 +0000)]
[jsinterp] Improve parsing
* support subset `... else if ...`
* support `while`
* add `RegExp` class
* generalise `new` support
* limited more debug strings
* matching test changes

20 months agoSupport `if` statements
pukkandan [Wed, 1 Feb 2023 04:09:49 +0000 (09:39 +0530)]
Support `if` statements

Fix for yt-dlp/yt_dlp#6131
Closes #31509

23 months ago[generic] Improve KVS (etc) extraction
dirkf [Sun, 13 Nov 2022 15:09:29 +0000 (15:09 +0000)]
[generic] Improve KVS (etc) extraction

23 months ago[generic] Improve KVS (etc) extraction
dirkf [Sun, 13 Nov 2022 14:59:30 +0000 (14:59 +0000)]
[generic] Improve KVS (etc) extraction

* detect kt_player('kt_player', 'https://.../kt_player.swf?v=5...
* detect age limit if 18 USC 2257 is mentioned
* test with shooshtime.com

Partially resolves #31332.

23 months agoAdded ThisVid.com support (#29187)
FraFraFra-LongD [Sun, 13 Nov 2022 13:22:04 +0000 (14:22 +0100)]
Added ThisVid.com support (#29187)

* add ThisVidIE, ThisVidMemberIE, ThisVidPlaylistIE
* redirect embed to main page for more metadata
* use KVS extraction newly added to GenericIE and remove duplicate tests
* also add MrDeepFake etc compat to GenericIE
(closes #22390)

Co-authored-by: dirkf <fieldhouse@gmx.net>
23 months ago[generic] Add KVS player extraction
dirkf [Sat, 12 Nov 2022 11:55:05 +0000 (11:55 +0000)]
[generic] Add KVS player extraction

23 months ago[common:jwplayer] Improve jwplayer extraction and parsing (#31000)
dirkf [Fri, 11 Nov 2022 00:49:13 +0000 (00:49 +0000)]
[common:jwplayer] Improve jwplayer extraction and parsing (#31000)

* don't crash parser if jwplayer_data is invalid (empty, or no formats)
* use `label` in `sources[n]` as `format_id`
* relax `jwplayer().setup(...)` RE (also rework PR #27274 enhancement)
* detect more manifest formats in _parse_jwplayer_formats() (from PR #29596)
* improve metadata extraction (from PR #25433)
* remember URLs in a set
* use parse_resolution() in format
* extract filesize in format (from yt-dlp)

Co-authored-by: kikuyan <kikuyan@users.noreply.github.com>
Co-authored-by: martin54 <martin54@users.noreply.github.com>
23 months ago[PeekVids, PlayVids] Add new extractor (#29765)
Moises Lima [Wed, 9 Nov 2022 20:26:30 +0000 (17:26 -0300)]
[PeekVids, PlayVids] Add new extractor (#29765)

* Merge back-port from yt-dlp
* Merge features from PR #29798
* Improve metadata extraction

Co-authored-by: dirkf <fieldhouse@gmx.net>
Co-authored by: AXDOOMER

23 months ago[extractor/ceskatelevize] Back-port extractor from yt-dlp, etc (#30713)
dirkf [Fri, 4 Nov 2022 10:13:07 +0000 (10:13 +0000)]
[extractor/ceskatelevize] Back-port extractor from yt-dlp, etc (#30713)

* back-port extractor, removing CeskaTelevizePoradyIE
* follow redirect URL
* support liveBroadcast and videobonusDetail in __NEXT__ data
* return single video for singleton playlist
* fix/add tests

23 months ago[utils] Backport traverse_obj (etc) from yt-dlp (#31156)
Andrei Lebedev [Thu, 3 Nov 2022 10:09:37 +0000 (11:09 +0100)]
[utils] Backport traverse_obj (etc) from yt-dlp (#31156)

* Backport traverse_obj and closely related function from yt-dlp (code by pukkandan)
* Backport LazyList, variadic(), try_call (code by pukkandan)
* Recast using yt-dlp's newer traverse_obj() implementation and tests (code by grub4k)
* Add tests for Unicode case folding support matching Py3.5+ (requires f102e3d)
* Improve/add tests for variadic, try_call, join_nonempty

Co-authored-by: dirkf <fieldhouse@gmx.net>
23 months ago[compat] Work around in case folding for narrow Python build
dirkf [Wed, 2 Nov 2022 11:56:26 +0000 (11:56 +0000)]
[compat] Work around in case folding for narrow Python build

Resolves #31324.

23 months ago[compat] Add test for compat_casefold()
dirkf [Tue, 1 Nov 2022 22:47:02 +0000 (22:47 +0000)]
[compat] Add test for compat_casefold()

23 months ago[compat] Add test for compat_casefold()
dirkf [Tue, 1 Nov 2022 21:33:39 +0000 (21:33 +0000)]
[compat] Add test for compat_casefold()

23 months ago[compat] Reformat casefold.py for easier updating
dirkf [Tue, 1 Nov 2022 19:25:59 +0000 (19:25 +0000)]
[compat] Reformat casefold.py for easier updating

23 months ago[compat] Unify unicode/str compat and move up
dirkf [Tue, 1 Nov 2022 12:40:23 +0000 (12:40 +0000)]
[compat] Unify unicode/str compat and move up

23 months ago[compat] Add compat_casefold and compat_re_Match, for traverse_obj() port
dirkf [Mon, 31 Oct 2022 21:27:14 +0000 (21:27 +0000)]
[compat] Add compat_casefold and compat_re_Match, for traverse_obj() port

23 months ago[compat] Add Python 2 Unicode casefold using a trivial wrapper around icu/CaseFolding.txt
dirkf [Mon, 31 Oct 2022 21:18:36 +0000 (21:18 +0000)]
[compat] Add Python 2 Unicode casefold using a trivial wrapper around icu/CaseFolding.txt

23 months ago[netease] Support urls shared from mobile app (#31304)
Xie Yanbo [Sun, 30 Oct 2022 11:48:44 +0000 (19:48 +0800)]
[netease] Support urls shared from mobile app (#31304)

Co-authored-by: dirkf <fieldhouse@gmx.net>
23 months ago[netease] Impove error handling (#31303)
Xie Yanbo [Sun, 30 Oct 2022 11:46:46 +0000 (19:46 +0800)]
[netease] Impove error handling (#31303)

* add warnings for users outside of China
* skip empty song urls

Co-authored-by: dirkf <fieldhouse@gmx.net>
23 months ago[Vimeo] Update variable name in hydration JSON pattern
dirkf [Thu, 27 Oct 2022 14:33:00 +0000 (14:33 +0000)]
[Vimeo] Update variable name in hydration JSON pattern

Fixes #31311

23 months ago[BongaCams] Support new .net domain
dirkf [Thu, 20 Oct 2022 11:06:44 +0000 (11:06 +0000)]
[BongaCams] Support new .net domain

Resolves #31262.

23 months agoFix ADN extractor (#31275)
ache [Tue, 18 Oct 2022 15:06:27 +0000 (15:06 +0000)]
Fix ADN extractor (#31275)

* Rename Anime Digital Network to Animation Digital Network, animationdigitalnetwork.fr
* Update the test to an available video
* Update the decoding key of subtitles
* Keep the support of old URLs
* Add a test to match the old URL
* Reduce redundancy of the URL name
* Fix md5 ^^"
* Fix undefined _BASE
* Process HTTP error text (eg geo-block) correctly and uniformly in Py3, Py2
* Skip test for CI since geo-blocked

Signed-off-by: ache <ache@ache.one>
Co-authored-by: dirkf <fieldhouse@gmx.net>
2 years ago[ManyVids] Support new single-page app structure
dirkf [Thu, 13 Oct 2022 02:42:49 +0000 (02:42 +0000)]
[ManyVids] Support new single-page app structure

2 years ago[ManyVids] Support new single-page app structure
dirkf [Thu, 13 Oct 2022 01:59:01 +0000 (01:59 +0000)]
[ManyVids] Support new single-page app structure

See https://github.com/yt-dlp/yt-dlp/issues/5210#issuecomment-1276919962.

2 years ago[Motherless] Pull from yt-dlp, etc
dirkf [Wed, 12 Oct 2022 00:09:55 +0000 (01:09 +0100)]
[Motherless] Pull from yt-dlp, etc

* use username field
* loosen regexes
* warn on page count 0 in group
* avoid reloading group page 1
Closes #29626

2 years ago[netease] Get netease music download url through player api (#31235)
Xie Yanbo [Tue, 11 Oct 2022 12:55:09 +0000 (20:55 +0800)]
[netease] Get netease music download url through player api (#31235)

* remove unplayable song from test
* compatible with python 2
* using standard User_Agent, fix imports
* use hash instead of long description
* fix lint
* fix hash

2 years ago[Common:JWPlayer] Fix x1000 scaling error
dirkf [Tue, 11 Oct 2022 12:36:44 +0000 (12:36 +0000)]
[Common:JWPlayer] Fix x1000 scaling error

See https://github.com/yt-dlp/yt-dlp/issues/5106#issuecomment-1264625161

2 years ago[utils] Sanitize look-alike Unicode glyphs in non-ID filename fields when --restrict...
dirkf [Tue, 11 Oct 2022 12:18:12 +0000 (12:18 +0000)]
[utils] Sanitize look-alike Unicode glyphs in non-ID filename fields when --restrict-filenames

Implements https://github.com/ytdl-org/youtube-dl/issues/31216#issuecomment-1236102822, which has a test.

2 years ago[JSInterp] Improve separation logic
dirkf [Tue, 11 Oct 2022 04:58:10 +0000 (05:58 +0100)]
[JSInterp] Improve separation logic

Based on https://github.com/yt-dlp/yt-dlp/commit/0468a3b3253957bfbeb98b4a7c71542ff80e9e06

2 years ago[ZDF] Overhaul ZDF extractors
dirkf [Tue, 9 Aug 2022 18:37:58 +0000 (19:37 +0100)]
[ZDF] Overhaul ZDF extractors
* pull some yt-dlp changes into ZDFBaseIE._extract_format()
* add test cases from yt-dlp to ZDFIE
* fix crash in ZDFIE._extract_mobile() when object had no `formitaeten`
* improve title extraction in ZDFChannelIE (remove trailing station ident)
* avoid extracting non-video playlist items (fixes #31149)

2 years ago[test] Implement string "lambda x: condition(x)" as an expected value
dirkf [Tue, 9 Aug 2022 18:34:34 +0000 (19:34 +0100)]
[test] Implement string "lambda x: condition(x)" as an expected value

Semantics equivalent to `assert condition(got)`

2 years ago[motherless] Fixed the broken uploader_id in the extractor (#31243)
Xiyue [Mon, 10 Oct 2022 22:52:48 +0000 (09:52 +1100)]
[motherless] Fixed the broken uploader_id in the extractor (#31243)

* Fixed the broken uploader_id in the extractor.
* Make uploader_id RE looser
* Fix uploader_id in test Motherless_3
* Fix group pagination
* # coding: utf-8

Co-authored-by: Andy Xuming <xuminic@gmail.com>
Co-authored-by: dirkf <fieldhouse@gmx.net>
2 years ago[manyvids] Improve extraction (#31172)
dirkf [Mon, 10 Oct 2022 18:26:32 +0000 (19:26 +0100)]
[manyvids] Improve extraction (#31172)

* extract all formats from page
* extract description, uploader, views, likes
* downrate previews
* fix tests
* use txt_or_none()

2 years ago[NRK] Remove explicit Accept-Encoding header that invites Brotli
dirkf [Mon, 10 Oct 2022 17:41:40 +0000 (17:41 +0000)]
[NRK] Remove explicit Accept-Encoding header that invites Brotli

Fixes #31285

2 years ago[Telegraaf] Use mobile GraphQL API endpoint
coletdjnz [Fri, 23 Sep 2022 00:10:35 +0000 (12:10 +1200)]
[Telegraaf] Use mobile GraphQL API endpoint

Workaround for Cloudflare 403
Fixes https://github.com/yt-dlp/yt-dlp/issues/5000
Authored by: coletdjnz

2 years ago[test] Use windows-2019 for tests
dirkf [Mon, 3 Oct 2022 23:42:15 +0000 (00:42 +0100)]
[test] Use windows-2019 for tests
(At least for now) resolves #31249

2 years ago[jsinterp] Workaround operator associativity issue
pukkandan [Fri, 2 Sep 2022 15:11:39 +0000 (20:41 +0530)]
[jsinterp] Workaround operator associativity issue
* temporary fix for player 5a3b6271 [1]

1. https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1235384480

2 years ago[cache] Add cache validation by program version, based on yt-dlp
dirkf [Thu, 1 Sep 2022 12:28:30 +0000 (13:28 +0100)]
[cache] Add cache validation by program version, based on yt-dlp

2 years ago[jsinterp] Handle new YT players 113ca41c, c57c113c
dirkf [Wed, 31 Aug 2022 22:22:48 +0000 (23:22 +0100)]
[jsinterp] Handle new YT players 113ca41cc57c113c
* add NaN
* allow any white-space character for `after_op`
* align with yt-dlp f26af78a8ac11d9d617ed31ea5282cfaa5bcbcfa (charcodeAt and bitwise overflow)
* allow escaping in regex, fixing player c57c113c

2 years ago[options] Document that postprocessing is not forced by --postprocessor-args
dirkf [Mon, 29 Aug 2022 12:02:17 +0000 (13:02 +0100)]
[options] Document that postprocessing is not forced by --postprocessor-args

Resolves #30307

2 years ago[compat] Replace deficient ChainMap class in Py3.3 and earlier
dirkf [Fri, 26 Aug 2022 11:22:01 +0000 (12:22 +0100)]
[compat] Replace deficient ChainMap class in Py3.3 and earlier
* fix version check

2 years ago[compat] Replace deficient ChainMap class in Py3.3 and earlier
dirkf [Fri, 26 Aug 2022 09:17:56 +0000 (10:17 +0100)]
[compat] Replace deficient ChainMap class in Py3.3 and earlier

2 years ago[jsinterp] Improve try/catch/finally support
dirkf [Fri, 26 Aug 2022 07:17:54 +0000 (08:17 +0100)]
[jsinterp] Improve try/catch/finally support

2 years ago[jsinterp] Fix bug in operator precedence
dirkf [Thu, 25 Aug 2022 11:16:10 +0000 (12:16 +0100)]
[jsinterp] Fix bug in operator precedence
* from https://github.com/yt-dlp/yt-dlp/commit/164b03c4864b0d44cfee5e7702f7c2317164a6cf
* added tests

2 years ago[YouTube] Improve error check for n-sig processing
dirkf [Thu, 25 Aug 2022 11:14:59 +0000 (12:14 +0100)]
[YouTube] Improve error check for n-sig processing

2 years ago[core] Avoid processing empty format list after removing bad formats
dirkf [Sat, 20 Aug 2022 23:21:02 +0000 (00:21 +0100)]
[core] Avoid processing empty format list after removing bad formats
* also ensure compat encoding of error strings

2 years ago[utils] Ensure RFC3986 encoding result is unicode
dirkf [Sat, 20 Aug 2022 23:19:19 +0000 (00:19 +0100)]
[utils] Ensure RFC3986 encoding result is unicode

2 years ago[infoq] Avoid crash if the page has no `mp3Form`
gudata [Fri, 19 Aug 2022 20:00:21 +0000 (23:00 +0300)]
[infoq] Avoid crash if the page has no `mp3Form`

* proposed fix for issue #31131, aligns with yt-dlp

Co-authored-by: dirkf <fieldhouse@gmx.net>
2 years ago[uktvplay] Support domain without .uktv
dirkf [Fri, 19 Aug 2022 18:11:08 +0000 (19:11 +0100)]
[uktvplay] Support domain without .uktv

2 years ago[jsinterp] Clean up and pull yt-dlp style
dirkf [Fri, 19 Aug 2022 14:34:33 +0000 (15:34 +0100)]
[jsinterp] Clean up and pull yt-dlp style
* add compat_re_Pattern
* improve compat_collections_chain_map
* use class JS_Undefined
* remove unused code

2 years ago[jsinterp] Handle regexp literals and throw/catch execution (#31182)
dirkf [Fri, 19 Aug 2022 10:45:04 +0000 (11:45 +0100)]
[jsinterp] Handle regexp literals and throw/catch execution (#31182)

* based on https://github.com/yt-dlp/yt-dlp/commit/f6ca640b122239d5ab215f8c2564efb7ac3e8c65, thanks pukkandan
* adds parse support for regexp flags

2 years ago[jsinterp] Improve JS language support (#31175)
dirkf [Wed, 17 Aug 2022 13:22:02 +0000 (14:22 +0100)]
[jsinterp] Improve JS language support (#31175)

* operator ??
* operator ?.
* operator **
* accurate operator functions
* `undefined` handling
* object literals {a: 1, "b": expr}
* more tests for weird JS comparisons: see https://github.com/ytdl-org/youtube-dl/issues/31173#issuecomment-1217854397.

2 years ago[postprocessor] Don't replace existing value with null metadata parsed from title
dirkf [Mon, 15 Aug 2022 15:45:04 +0000 (16:45 +0100)]
[postprocessor] Don't replace existing value with null metadata parsed from title

2 years ago[jsinterp] Overhaul JSInterp to handle new YT players 4c3f79c5, 324f67b9 (#31170)
dirkf [Sun, 14 Aug 2022 17:45:45 +0000 (18:45 +0100)]
[jsinterp] Overhaul JSInterp to handle new YT players 4c3f79c5324f67b9 (#31170)

* back-port from yt-dlp 8f53dc44a0cc1c2d98c35740b9293462c080f5d0, thanks pukkandan
* also support void, improve <</>> precedence, improve expressions in comma-list
* add more tests

2 years ago[core] Make `--max-downloads ...` stop immediately on reaching the limit
dirkf [Wed, 10 Aug 2022 14:37:59 +0000 (15:37 +0100)]
[core] Make `--max-downloads ...` stop immediately on reaching the limit

Based on and closes #26638.

2 years ago[test, etc] Improve download test logs; also clean up some new flake8 issues (#31153)
dirkf [Tue, 9 Aug 2022 20:05:00 +0000 (21:05 +0100)]
[test, etc] Improve download test logs; also clean up some new flake8 issues (#31153)

* [test] Identify testcase errors better
* [test] Identify download errors better
* [extractor/minds] Linter
* [extractor/aes] Linter

2 years ago[aenetworks] Update _THEPLATFORM_KEY and _THEPLATFORM_SECRET (#29749)
Wes [Sat, 30 Jul 2022 01:10:00 +0000 (20:10 -0500)]
[aenetworks] Update _THEPLATFORM_KEY and _THEPLATFORM_SECRET (#29749)

Fixes ytdl-org/youtube-dl#29300

2 years ago[VVVVID] Support video/dash types (#31060)
Kyraminol Endyeran [Mon, 11 Jul 2022 23:35:40 +0000 (01:35 +0200)]
[VVVVID] Support video/dash types (#31060)

Resolves #31030.