yt-dlp 2025.11.12__py3-none-any.whl → 2025.11.14.235840.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
yt_dlp/extractor/jtbc.py CHANGED
@@ -98,7 +98,7 @@ class JTBCIE(InfoExtractor):
98
98
 
99
99
  formats = []
100
100
  for stream_url in traverse_obj(playback_data, ('sources', 'HLS', ..., 'file', {url_or_none})):
101
- stream_url = re.sub(r'/playlist(?:_pd\d+)?\.m3u8', '/index.m3u8', stream_url)
101
+ stream_url = re.sub(r'/playlist_pd\d+\.m3u8', '/playlist.m3u8', stream_url)
102
102
  formats.extend(self._extract_m3u8_formats(stream_url, video_id, fatal=False))
103
103
 
104
104
  metadata = self._download_json(
@@ -3,12 +3,14 @@ from ..utils import (
3
3
  MEDIA_EXTENSIONS,
4
4
  determine_ext,
5
5
  parse_iso8601,
6
- traverse_obj,
7
6
  url_or_none,
8
7
  )
8
+ from ..utils.traversal import traverse_obj
9
9
 
10
10
 
11
11
  class RinseFMBaseIE(InfoExtractor):
12
+ _API_BASE = 'https://rinse.fm/api/query/v1'
13
+
12
14
  @staticmethod
13
15
  def _parse_entry(entry):
14
16
  return {
@@ -45,8 +47,10 @@ class RinseFMIE(RinseFMBaseIE):
45
47
 
46
48
  def _real_extract(self, url):
47
49
  display_id = self._match_id(url)
48
- webpage = self._download_webpage(url, display_id)
49
- entry = self._search_nextjs_data(webpage, display_id)['props']['pageProps']['entry']
50
+
51
+ entry = self._download_json(
52
+ f'{self._API_BASE}/episodes/{display_id}', display_id,
53
+ note='Downloading episode data from API')['entry']
50
54
 
51
55
  return self._parse_entry(entry)
52
56
 
@@ -58,32 +62,35 @@ class RinseFMArtistPlaylistIE(RinseFMBaseIE):
58
62
  'info_dict': {
59
63
  'id': 'resources',
60
64
  'title': '[re]sources',
61
- 'description': '[re]sources est un label parisien piloté par le DJ et producteur Tommy Kid.',
65
+ 'description': 'md5:fd6a7254e8273510e6d49fbf50edf392',
62
66
  },
63
67
  'playlist_mincount': 40,
64
68
  }, {
65
- 'url': 'https://rinse.fm/shows/ivy/',
69
+ 'url': 'https://www.rinse.fm/shows/esk',
66
70
  'info_dict': {
67
- 'id': 'ivy',
68
- 'title': '[IVY]',
69
- 'description': 'A dedicated space for DNB/Turbo House and 4x4.',
71
+ 'id': 'esk',
72
+ 'title': 'Esk',
73
+ 'description': 'md5:5893d7c1d411ae8dea7fba12f109aa98',
70
74
  },
71
- 'playlist_mincount': 7,
75
+ 'playlist_mincount': 139,
72
76
  }]
73
77
 
74
78
  def _entries(self, data):
75
79
  for episode in traverse_obj(data, (
76
- 'props', 'pageProps', 'episodes', lambda _, v: determine_ext(v['fileUrl']) in MEDIA_EXTENSIONS.audio),
80
+ 'episodes', lambda _, v: determine_ext(v['fileUrl']) in MEDIA_EXTENSIONS.audio),
77
81
  ):
78
82
  yield self._parse_entry(episode)
79
83
 
80
84
  def _real_extract(self, url):
81
85
  playlist_id = self._match_id(url)
82
- webpage = self._download_webpage(url, playlist_id)
83
- title = self._og_search_title(webpage) or self._html_search_meta('title', webpage)
84
- description = self._og_search_description(webpage) or self._html_search_meta(
85
- 'description', webpage)
86
- data = self._search_nextjs_data(webpage, playlist_id)
86
+
87
+ api_data = self._download_json(
88
+ f'{self._API_BASE}/shows/{playlist_id}', playlist_id,
89
+ note='Downloading show data from API')
87
90
 
88
91
  return self.playlist_result(
89
- self._entries(data), playlist_id, title, description=description)
92
+ self._entries(api_data), playlist_id,
93
+ **traverse_obj(api_data, ('entry', {
94
+ 'title': ('title', {str}),
95
+ 'description': ('description', {str}),
96
+ })))
yt_dlp/version.py CHANGED
@@ -1,15 +1,15 @@
1
1
  # Autogenerated by devscripts/update-version.py
2
2
 
3
- __version__ = '2025.11.12'
3
+ __version__ = '2025.11.14.235840'
4
4
 
5
- RELEASE_GIT_HEAD = '335653be82d5ef999cfc2879d005397402eebec1'
5
+ RELEASE_GIT_HEAD = 'd6aa8c235d2e7d9374f79ec73af23a3859c76bea'
6
6
 
7
7
  VARIANT = 'pip'
8
8
 
9
9
  UPDATE_HINT = 'You installed yt-dlp with pip or using the wheel from PyPi; Use that to update'
10
10
 
11
- CHANNEL = 'stable'
11
+ CHANNEL = 'nightly'
12
12
 
13
- ORIGIN = 'yt-dlp/yt-dlp'
13
+ ORIGIN = 'yt-dlp/yt-dlp-nightly-builds'
14
14
 
15
- _pkg_version = '2025.11.12'
15
+ _pkg_version = '2025.11.14.235840dev'
@@ -408,7 +408,7 @@ General Options:
408
408
  --no-update Do not check for updates (default)
409
409
  --update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version.
410
410
  CHANNEL can be a repository as well. CHANNEL
411
- and TAG default to "stable" and "latest"
411
+ and TAG default to "nightly" and "latest"
412
412
  respectively if omitted; See "UPDATE" for
413
413
  details. Supported channels: stable,
414
414
  nightly, master
@@ -3,7 +3,7 @@ complete --command yt-dlp --long-option help --short-option h --description 'Pri
3
3
  complete --command yt-dlp --long-option version --description 'Print program version and exit'
4
4
  complete --command yt-dlp --long-option update --short-option U --description 'Check if updates are available. You installed yt-dlp from a manual build or with a package manager; Use that to update'
5
5
  complete --command yt-dlp --long-option no-update --description 'Do not check for updates (default)'
6
- complete --command yt-dlp --long-option update-to --description 'Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "stable" and "latest" respectively if omitted; See "UPDATE" for details. Supported channels: stable, nightly, master'
6
+ complete --command yt-dlp --long-option update-to --description 'Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "nightly" and "latest" respectively if omitted; See "UPDATE" for details. Supported channels: stable, nightly, master'
7
7
  complete --command yt-dlp --long-option ignore-errors --short-option i --description 'Ignore download and postprocessing errors. The download will be considered successful even if the postprocessing fails'
8
8
  complete --command yt-dlp --long-option no-abort-on-error --description 'Continue with next video on download errors; e.g. to skip unavailable videos in a playlist (default)'
9
9
  complete --command yt-dlp --long-option abort-on-error --description 'Abort downloading of further videos if an error occurs (Alias: --no-ignore-errors)'
@@ -48,7 +48,7 @@ Do not check for updates (default)
48
48
  --update-to \f[I][CHANNEL]\[at][TAG]\f[R]
49
49
  Upgrade/downgrade to a specific version.
50
50
  CHANNEL can be a repository as well.
51
- CHANNEL and TAG default to \[dq]stable\[dq] and \[dq]latest\[dq]
51
+ CHANNEL and TAG default to \[dq]nightly\[dq] and \[dq]latest\[dq]
52
52
  respectively if omitted; See \[dq]UPDATE\[dq] for details.
53
53
  Supported channels: stable, nightly, master
54
54
  .TP
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yt-dlp
3
- Version: 2025.11.12
3
+ Version: 2025.11.14.235840.dev0
4
4
  Summary: A feature-rich command-line audio/video downloader
5
5
  Project-URL: Documentation, https://github.com/yt-dlp/yt-dlp#readme
6
6
  Project-URL: Repository, https://github.com/yt-dlp/yt-dlp
@@ -383,7 +383,7 @@ Tip: Use `CTRL`+`F` (or `Command`+`F`) to search by keywords
383
383
  --no-update Do not check for updates (default)
384
384
  --update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version.
385
385
  CHANNEL can be a repository as well. CHANNEL
386
- and TAG default to "stable" and "latest"
386
+ and TAG default to "nightly" and "latest"
387
387
  respectively if omitted; See "UPDATE" for
388
388
  details. Supported channels: stable,
389
389
  nightly, master
@@ -11,7 +11,7 @@ yt_dlp/options.py,sha256=Icc0JRiKOzITWoMujE_ihEmkCS-uCcie42XhIh8LvS4,100388
11
11
  yt_dlp/plugins.py,sha256=EGmR0ydaahNspGrgszTNX4-YjHe93WOOhcw1gf6PZSs,8215
12
12
  yt_dlp/socks.py,sha256=oAuAfWM6jxI8A5hHDLEKq2U2-k9NyMB_z6nrKzNE9fg,8936
13
13
  yt_dlp/update.py,sha256=sY7gNFBQorzs7sEjRrqL5QOsTBNmGGa_FnpTtbxY1vA,25280
14
- yt_dlp/version.py,sha256=xZk8jSGCofYUrJbYacysnaWQqi7WQT8zXNpsmqfA3EU,327
14
+ yt_dlp/version.py,sha256=nvgsm8Mz1dAhSNPZGonCnZW1Db6mcYKfDS6jFiRhcrI,360
15
15
  yt_dlp/webvtt.py,sha256=ONkXaaNCZcX8pQhJn3iwIKyaQ34BtVDrMEdG6wRNZwM,11451
16
16
  yt_dlp/__pyinstaller/__init__.py,sha256=-c4Zo8nQGKAm8wc_LDscxMtK7zr_YhZwRnC9CMruUBE,72
17
17
  yt_dlp/__pyinstaller/hook-yt_dlp.py,sha256=5Rd0zV2pDskjY1KtT0wsjxv4hStx67sLCjUexsFvFus,1339
@@ -428,7 +428,7 @@ yt_dlp/extractor/jixie.py,sha256=NT41naouD4h1XlxGIcJ4YbNF1p4XnSo7FRByt212OQo,219
428
428
  yt_dlp/extractor/joj.py,sha256=2MKpBdjlgIIQgpEHrJBW35Y_RXyDzMdQ5EhE6NCaQJo,4190
429
429
  yt_dlp/extractor/jove.py,sha256=fR0ym8u_9_p6kFv_muRDHU0WfRB0hP3VN9-nNbGHuFQ,3009
430
430
  yt_dlp/extractor/jstream.py,sha256=GLu3a_mBCtTLKpBnsYkgDwzRnULZ-CyIG-qlbJ_rp6U,3341
431
- yt_dlp/extractor/jtbc.py,sha256=sZ-QYae5R5oGPMjJnINFPwQKPhnNxM_JtLL3Vxh_nYk,6333
431
+ yt_dlp/extractor/jtbc.py,sha256=nRTU_gLBgVynDkjprVHRnyMfaR-QSE4AF8gdbEvqozg,6331
432
432
  yt_dlp/extractor/jwplatform.py,sha256=afgH2yCk4zMFSCMf9oUk34FefTrZTWFGhl6X6ezC2FY,4268
433
433
  yt_dlp/extractor/kakao.py,sha256=K8IqmEXqnrfedR5lSiawMpfbGFGp0ccSnsQLKmSqnSU,5914
434
434
  yt_dlp/extractor/kaltura.py,sha256=75Xq0EIqawDQ0_G4IUjPjW6rB2XGG3yPLhCO_WTTjzs,25253
@@ -729,7 +729,7 @@ yt_dlp/extractor/reuters.py,sha256=JE6MCTD7YLIBcS0xcI-xpxtTf6bl1BloA6-G9wcHjoA,2
729
729
  yt_dlp/extractor/reverbnation.py,sha256=OhIpWMAfsjA65qFgENApV4J6CafxU6Nc-YcNs25XzDA,1583
730
730
  yt_dlp/extractor/rheinmaintv.py,sha256=EOt626snVJe7DjuHn4KzRS2F_Z8DdntSEOppiCtrwVI,4653
731
731
  yt_dlp/extractor/ridehome.py,sha256=dtg74YRBL2Hm5bKLEXQr5lQLAG-U1MUmlSRKDk42qgU,4419
732
- yt_dlp/extractor/rinsefm.py,sha256=ax99cDirBdEWvcvgnuqWHSEHz-UnA2u5DpUV4Kalcn0,3199
732
+ yt_dlp/extractor/rinsefm.py,sha256=PVfA-u_CYk65fgx_B03C0zOjKNhMfLD7XcNgonMdbvs,3181
733
733
  yt_dlp/extractor/rmcdecouverte.py,sha256=IYGKdgsUj8wSL1Lf1AWTvKPrWoiiRXWqBxmqdHSW9aw,2736
734
734
  yt_dlp/extractor/rockstargames.py,sha256=_yV0LaqybuCnXCpY0s801bTgiazwHFj9GUtHSGAQ3Hs,2160
735
735
  yt_dlp/extractor/rokfin.py,sha256=CSrmNOaUo9b73Cs1y1USyMod1uMhHorAPKGAbLIVXHo,21052
@@ -1116,13 +1116,13 @@ yt_dlp/utils/progress.py,sha256=t9kVvJ0oWuEqRzo9fdFbIhHUBtO_8mg348QwZ1faqLo,3261
1116
1116
  yt_dlp/utils/traversal.py,sha256=64E3RcZ56iSX50RI_HbKdDNftkETMLBaEPX791_b7yQ,18265
1117
1117
  yt_dlp/utils/jslib/__init__.py,sha256=CbdJiRA7Eh5PnjF2V4lDTcg0J0XjBMaaq0H4pCfq9Tk,87
1118
1118
  yt_dlp/utils/jslib/devalue.py,sha256=7DCGK_zUN0ZeV5hwPT06zaRMUxX_hyUyFWqs79rxw24,5621
1119
- yt_dlp-2025.11.12.data/data/share/bash-completion/completions/yt-dlp,sha256=b0pb9GLseKD27CjnLE6LlhVxhfmQjmyqV6r_CRbd6ko,5989
1120
- yt_dlp-2025.11.12.data/data/share/doc/yt_dlp/README.txt,sha256=HlfIUV5eXIDl3zifSNk85dFWTwxmEWX8wC6mflaKLpU,164661
1121
- yt_dlp-2025.11.12.data/data/share/fish/vendor_completions.d/yt-dlp.fish,sha256=1zS0p90dPrTaNex5s-4Pss_eIX2g-qVOF2vos85rxjI,51487
1122
- yt_dlp-2025.11.12.data/data/share/man/man1/yt-dlp.1,sha256=QQovfAUiq_zuaygexuWSlCfZMufQJBPC10-m_ti1vh0,159124
1123
- yt_dlp-2025.11.12.data/data/share/zsh/site-functions/_yt-dlp,sha256=pNhu8tT4ZKrksLRI2mXLqarzGGhnOlm_hkCBVhSxLzg,5985
1124
- yt_dlp-2025.11.12.dist-info/METADATA,sha256=0Mj6zGRKjyvppzrYrirmRzyQWlGTS1nATxpKDYqcigI,180041
1125
- yt_dlp-2025.11.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1126
- yt_dlp-2025.11.12.dist-info/entry_points.txt,sha256=vWfetvzYgZIwDfMW6BjCe0Cy4pmTZEXRNzxAkfYlRJA,103
1127
- yt_dlp-2025.11.12.dist-info/licenses/LICENSE,sha256=fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM-U6Fw,1211
1128
- yt_dlp-2025.11.12.dist-info/RECORD,,
1119
+ yt_dlp-2025.11.14.235840.dev0.data/data/share/bash-completion/completions/yt-dlp,sha256=b0pb9GLseKD27CjnLE6LlhVxhfmQjmyqV6r_CRbd6ko,5989
1120
+ yt_dlp-2025.11.14.235840.dev0.data/data/share/doc/yt_dlp/README.txt,sha256=1p-zv2tZPh1gscLG3ceL7GGCzC4TQU8mS9wiqPS-oXE,164662
1121
+ yt_dlp-2025.11.14.235840.dev0.data/data/share/fish/vendor_completions.d/yt-dlp.fish,sha256=hLa6lZnm7keENpNCjml9A88hbvefdsdoOpAiaNCVyHo,51488
1122
+ yt_dlp-2025.11.14.235840.dev0.data/data/share/man/man1/yt-dlp.1,sha256=C33_xKvu5DD5SScnivPeV2EJEYSeJ1tPXYZnlJBDayc,159125
1123
+ yt_dlp-2025.11.14.235840.dev0.data/data/share/zsh/site-functions/_yt-dlp,sha256=pNhu8tT4ZKrksLRI2mXLqarzGGhnOlm_hkCBVhSxLzg,5985
1124
+ yt_dlp-2025.11.14.235840.dev0.dist-info/METADATA,sha256=3_KYCMCyc_VhbHvbK3Nk_MWjJ1Khz5jUDoO4MmG7me4,180054
1125
+ yt_dlp-2025.11.14.235840.dev0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1126
+ yt_dlp-2025.11.14.235840.dev0.dist-info/entry_points.txt,sha256=vWfetvzYgZIwDfMW6BjCe0Cy4pmTZEXRNzxAkfYlRJA,103
1127
+ yt_dlp-2025.11.14.235840.dev0.dist-info/licenses/LICENSE,sha256=fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM-U6Fw,1211
1128
+ yt_dlp-2025.11.14.235840.dev0.dist-info/RECORD,,