mirror of
https://github.com/yt-dlp/yt-dlp
synced 2025-12-16 06:05:41 +07:00
Compare commits
4 Commits
4433b3a217
...
017d76edcf
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
017d76edcf | ||
|
|
56ea3a00ea | ||
|
|
2a777ecbd5 | ||
|
|
023e4db9af |
@@ -598,7 +598,8 @@ def _real_extract(self, url):
|
|||||||
'props', 'pageProps', 'bootstrapEnvelope', 'pageBootstrap', 'campaign', 'data', 'id', {str}))
|
'props', 'pageProps', 'bootstrapEnvelope', 'pageBootstrap', 'campaign', 'data', 'id', {str}))
|
||||||
if not campaign_id:
|
if not campaign_id:
|
||||||
campaign_id = traverse_obj(self._search_nextjs_v13_data(webpage, vanity), (
|
campaign_id = traverse_obj(self._search_nextjs_v13_data(webpage, vanity), (
|
||||||
lambda _, v: v['type'] == 'campaign', 'id', {str}, any, {require('campaign ID')}))
|
((..., 'value', 'campaign', 'data'), lambda _, v: v['type'] == 'campaign'),
|
||||||
|
'id', {str}, any, {require('campaign ID')}))
|
||||||
|
|
||||||
params = {
|
params = {
|
||||||
'json-api-use-default-includes': 'false',
|
'json-api-use-default-includes': 'false',
|
||||||
|
|||||||
@@ -182,13 +182,13 @@ def _entries(self, show_url, playlist_id, selected_season):
|
|||||||
webpage = self._download_webpage(show_url, playlist_id)
|
webpage = self._download_webpage(show_url, playlist_id)
|
||||||
|
|
||||||
data = self._search_json(
|
data = self._search_json(
|
||||||
r'window\.__data\s*=', webpage, 'data', playlist_id,
|
r'window\.__REACT_QUERY_STATE__\s*=', webpage, 'data', playlist_id,
|
||||||
transform_source=js_to_json)['video']
|
transform_source=js_to_json)['queries'][0]['state']['data']
|
||||||
|
|
||||||
# v['number'] is already a decimal string, but stringify to protect against API changes
|
# v['number'] is already a decimal string, but stringify to protect against API changes
|
||||||
path = [lambda _, v: str(v['number']) == selected_season] if selected_season else [..., {dict}]
|
path = [lambda _, v: str(v['number']) == selected_season] if selected_season else [..., {dict}]
|
||||||
|
|
||||||
for season in traverse_obj(data, ('byId', lambda _, v: v['type'] == 's', 'seasons', *path)):
|
for season in traverse_obj(data, ('seasons', *path)):
|
||||||
season_number = int_or_none(season.get('number'))
|
season_number = int_or_none(season.get('number'))
|
||||||
for episode in traverse_obj(season, ('episodes', lambda _, v: v['id'])):
|
for episode in traverse_obj(season, ('episodes', lambda _, v: v['id'])):
|
||||||
episode_id = episode['id']
|
episode_id = episode['id']
|
||||||
|
|||||||
Reference in New Issue
Block a user