1
0
mirror of https://github.com/ytdl-org/youtube-dl synced 2025-12-04 10:33:48 +00:00

18977 Commits

Author SHA1 Message Date
dirkf
956b8c5855 [YouTube] Bug-fix for c1f5c3274a 2025-11-26 03:02:36 +00:00
dirkf
d5f561166b [core] Re-work format_note display in format list with abbreviated codec name 2025-11-26 03:02:36 +00:00
dirkf
d0283f5385 [YouTube] Revert forcing player JS by default
* still leaving the parameters in place

thx bashonly for confirming this suggestion
2025-11-21 01:52:11 +00:00
dirkf
6315f4b1df [utils] Support additional codecs and dynamic_range 2025-11-21 01:52:11 +00:00
dirkf
aeb1254fcf [YouTube] Fix playlist thumbnail extraction
Thx seproDev, yt-dlp/yt-dlp#11615
2025-11-21 01:52:11 +00:00
dirkf
25890f2ad1 [YouTube] Improve detection of geo-restriction
Thx yt-dlp
2025-11-21 01:52:11 +00:00
dirkf
d65882a022 [YouTube] Improve mark_watched()
Thx: Brett824, yt-dlp/yt-dlp#4146
2025-11-21 01:52:11 +00:00
dirkf
39378f7b5c [YouTube] Fix incorrect chapter extraction
* align `_get_text()` with yt-dlp (thx, passim) at last
2025-11-21 01:52:11 +00:00
dirkf
6f5d4c3289 [YouTube] Improve targeting of pre-roll wait
Experimental for now.
Thx: yt-dlp/yt-dlp#14646
2025-11-21 01:52:11 +00:00
dirkf
5d445f8c5f [YouTube] Re-work client selection
* use `android_sdkless` by default
* use `web_safari` (HLS only) if logged in
* skip any non-HLS format with n-challenge
2025-11-21 01:52:11 +00:00
dirkf
a1e2c7d90b [YouTube] Add further InnerTube clients
FWIW: android-sdkless, tv_downgraded, web_creator
Thx yt-dlp passim
2025-11-21 01:52:11 +00:00
dirkf
c55ace3c50 [YouTube] Use insertion-order-preserving dict for InnerTube client data 2025-11-21 01:52:11 +00:00
dirkf
43e3121020 [utils] Align parse_duration() behaviour with yt-dlp
* handle comma-separated long-form durations
* support : as millisecond separator.
2025-11-21 01:52:11 +00:00
dirkf
7a488f7fae [utils] Stabilise traversal results using compat_dict
In `traverse_obj()`, use `compat_dict` to construct dicts,
ensuring insertion order sort, but`compat_builtin_dict`
to test for dict-iness...
2025-11-21 01:52:11 +00:00
dirkf
5585d76da6 [compat] Add compat_dict
A dict that preserves insertion order and otherwise resembles the
dict builtin (if it isn't it) rather than `collections.OrderedDict`.

Also:
* compat_builtins_dict: the built-in definition in case `compat_dict`
  was imported as `dict`
* compat_dict_items: use instead of `dict.items` to get items from
  a `compat_dict` in insertion order, if you didn't define `dict` as
  `compat_dict`.
2025-11-21 01:52:11 +00:00
dirkf
931e15621c [compat] Add compat_abc_ABC
Base class for abstract classes
2025-11-21 01:52:11 +00:00
dirkf
27867cc814 [compat] Add compat_thread 2025-11-21 01:52:11 +00:00
dirkf
70b40dd1ef [utils] Add subs_list_to_dict() traversal helper
Thx: yt-dlp/yt-dlp#10653, etc
2025-11-21 01:52:11 +00:00
dirkf
a9b4649d92 [utils] Apply partial_application decorator to existing functions
Thx: yt-dlp/yt-dlp#10653 (etc)
2025-11-21 01:52:11 +00:00
dirkf
23a848c314 [utils] Add partial_application decorator function
Thx: yt-dlp/yt-dlp#10653
2025-11-21 01:52:11 +00:00
dirkf
a96a778750 [core] Fix housekeeping for available_at 2025-11-21 01:52:11 +00:00
dirkf
68fe8c1781 [utils] Support traversal helper functions require, value, unpack
Thx: yt-dlp/yt-dlp#10653
2025-11-21 01:52:11 +00:00
dirkf
96419fa706 [utils] Support filter traversal key
Thx yt-dlp/yt-dlp#10653
2025-11-21 01:52:11 +00:00
dirkf
cca41c9d2c [test] Move dict_get() traversal test to its own class
Matches yt-dlp/yt-dlp#9426
2025-11-21 01:52:11 +00:00
dirkf
bc39e5e678 [test] Fix test_traversal_morsel for Py 3.14+
Thx: yt-dlp/yt-dlp#13471
2025-11-21 01:52:11 +00:00
dirkf
014ae63a11 [test] Support additional args and kwargs in report_warning() mocks 2025-11-21 01:52:11 +00:00
dirkf
1e109aaee1 [workflows/ci] Avoid installing wheel and setuptools with pip
Works around dependent wheel installation failure with Py 3.4 from 2025-10
2025-10-18 11:02:28 +01:00
dirkf
efb4011211 [YouTube] Introduce _extract_and_report_alerts() per yt-dlp
Fixes #33196.

Also removing previous `_extract_alerts()` method.
2025-10-18 11:02:28 +01:00
dirkf
c1f5c3274a [YouTube] Improve some traversals
Pending full alignment with yt-dlp ...
2025-10-18 11:02:28 +01:00
dirkf
e21ff28f6f [YouTube] Misc clean-ups from linter, etc 2025-10-18 11:02:28 +01:00
dirkf
82552faba6 [workflows/ci] Update to windows-2022 runner
FFS
2025-09-29 02:15:05 +01:00
dirkf
617d4e6466 [core] Support explicit --no-list-formats option 2025-09-29 02:15:05 +01:00
dirkf
9223fcc48a [YouTube] Support LOCKUP_CONTENT_TYPE_VIDEO in subscriptions feed extraction
From yt-dlp/yt-dlp#13665), thx bashonly
2025-09-29 02:15:05 +01:00
dirkf
4222c6d78b [YouTube] Extract fallback title and description from initial data
Based on yt-dlp/yt-dlp#14078, thx bashonly
2025-09-29 02:15:05 +01:00
dirkf
2735d1bf1d [YouTube] Extract srt subtitles
From yt-dlp/yt-dlp#13411, thx gamer191
2025-09-29 02:15:05 +01:00
dirkf
f2a774cb9d [YouTube] Fix subtitles extraction
From yt-dlp/yt-dlp#13659, thx bashonly
2025-09-29 02:15:05 +01:00
dirkf
92680b127f [YouTube] Handle required preroll waiting period
* Based on yt-dlp/yt-dlp#14081, thx bashonly
* Uses internal `youtube_preroll_sleep` param, default 6s
2025-09-29 02:15:05 +01:00
dirkf
40ab920354 [downloader] Delay download according to available_at format key 2025-09-29 02:15:05 +01:00
dirkf
0739f58f90 [YouTube] Implement player JS override for player 0004de42
* based on yt-dlp/yt-dlp#14398, thx seproDev
* adds --youtube-player-js-variant option
* adds --youtube-player-js-version option
* sets defaults to main variant of player `0004de42`
* fixes #33187, for now
2025-09-29 02:15:05 +01:00
dirkf
aac0148b89 [YouTube] Force WEB user agent for video page download
Fixes #33142, until default UAs work.
2025-09-29 02:15:05 +01:00
dirkf
7f7b3881aa [YouTube] Handle Web Safari formats
From yt-dlp/yt-dlp#14168, thx bashonly.
2025-09-29 02:15:05 +01:00
dirkf
0c41b03114 [YouTube] Update player client details 2025-09-29 02:15:05 +01:00
dirkf
7c6630bfdd [YouTube] Miscellaneous clean-ups 2025-09-29 02:15:05 +01:00
dirkf
a084c80f7b [YouTube] Fix 680069a, excess min_ver
Resolves #33125.
2025-05-04 12:51:54 +01:00
dirkf
e102b9993a [workflows/ci.yml] Move pinned Ubuntu runner images from withdrawn 20.4 to 22.04
* fix consequent missing `python-is-python2` package
2025-05-03 18:33:39 +01:00
dirkf
680069a149 [YouTube] Improve n-sig function extraction for player aa3fc80b
Resolves #33123
2025-05-03 00:09:21 +01:00
dirkf
4a31290ae1 [YouTube] Delete cached problem nsig cache data on descrambling error
* inspired by yt-dlp/yt-dlp#12750
2025-05-03 00:09:21 +01:00
dirkf
3a42f6ad37 [YouTube] Cache signature timestamp from player JS
* if the YT webpage can't be loaded, getting the `sts` requires loading the
player JS: this caches it
* based on yt-dlp/yt-dlp#13047, thx bashonly
2025-05-03 00:09:21 +01:00
dirkf
ec75141bf0 [Cache] Add clear function 2025-05-03 00:09:20 +01:00
dirkf
c052a16f72 [JSInterp] Add tests and relevant functionality from yt-dlp
* thx seproDev, bashonly: yt-dlp/yt-dlp#12760, yt-dlp/yt-dlp#12761:
  - Improve nested attribute support
  - Pass global stack when extracting objects
  - interpret_statement: Match attribute before indexing
  - Fix assignment to array elements with nested brackets
  - Add new signature tests
  - Invalidate JS function cache
  - Avoid testdata dupes now that we cache by URL

* rework nsig function name search
* fully fixes #33102
* update cache required versions
* update program version
2025-04-08 01:59:00 +01:00