Merge pull request #11 from gschizas/bugfix/youtube/chapters-fix-extractor

Bugfix/youtube/chapters fix extractor
This commit is contained in:
Tom-Oliver Heidel 2020-08-31 23:38:33 +02:00 committed by GitHub
commit ba304106de
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1661,21 +1661,15 @@ def extract_id(cls, url):
def _extract_chapters_from_json(self, webpage, video_id, duration): def _extract_chapters_from_json(self, webpage, video_id, duration):
if not webpage: if not webpage:
return return
player = self._parse_json( initial_data = self._parse_json(
self._search_regex( self._search_regex(
r'RELATED_PLAYER_ARGS["\']\s*:\s*({.+})\s*,?\s*\n', webpage, r'window\["ytInitialData"\] = (.+);\n', webpage,
'player args', default='{}'), 'player args', default='{}'),
video_id, fatal=False) video_id, fatal=False)
if not player or not isinstance(player, dict): if not initial_data or not isinstance(initial_data, dict):
return
watch_next_response = player.get('watch_next_response')
if not isinstance(watch_next_response, compat_str):
return
response = self._parse_json(watch_next_response, video_id, fatal=False)
if not response or not isinstance(response, dict):
return return
chapters_list = try_get( chapters_list = try_get(
response, initial_data,
lambda x: x['playerOverlays'] lambda x: x['playerOverlays']
['playerOverlayRenderer'] ['playerOverlayRenderer']
['decoratedPlayerBarRenderer'] ['decoratedPlayerBarRenderer']