Skip to content

Commit

Permalink
[extractor/goplay] Fix extractor (#6654)
Browse files Browse the repository at this point in the history
Authored by: alard
Closes #6235
  • Loading branch information
alard committed Feb 19, 2024
1 parent 4ce57d3 commit 7e90e34
Showing 1 changed file with 43 additions and 4 deletions.
47 changes: 43 additions & 4 deletions yt_dlp/extractor/goplay.py
Expand Up @@ -40,6 +40,22 @@ class GoPlayIE(InfoExtractor):
'title': 'A Family for the Holidays',
},
'skip': 'This video is only available for registered users'
}, {
'url': 'https://www.goplay.be/video/de-mol/de-mol-s11/de-mol-s11-aflevering-1#autoplay',
'info_dict': {
'id': '03eb8f2f-153e-41cb-9805-0d3a29dab656',
'ext': 'mp4',
'title': 'S11 - Aflevering 1',
'episode': 'Episode 1',
'series': 'De Mol',
'season_number': 11,
'episode_number': 1,
'season': 'Season 11'
},
'params': {
'skip_download': True
},
'skip': 'This video is only available for registered users'
}]

_id_token = None
Expand Down Expand Up @@ -77,16 +93,39 @@ def _real_extract(self, url):

api = self._download_json(
f'https://api.goplay.be/web/v1/videos/long-form/{video_id}',
video_id, headers={'Authorization': 'Bearer %s' % self._id_token})
video_id, headers={
'Authorization': 'Bearer %s' % self._id_token,
**self.geo_verification_headers(),
})

if 'manifestUrls' in api:
formats, subtitles = self._extract_m3u8_formats_and_subtitles(
api['manifestUrls']['hls'], video_id, ext='mp4', m3u8_id='HLS')

formats, subs = self._extract_m3u8_formats_and_subtitles(
api['manifestUrls']['hls'], video_id, ext='mp4', m3u8_id='HLS')
else:
if 'ssai' not in api:
raise ExtractorError('expecting Google SSAI stream')

ssai_content_source_id = api['ssai']['contentSourceID']
ssai_video_id = api['ssai']['videoID']

dai = self._download_json(
f'https://dai.google.com/ondemand/dash/content/{ssai_content_source_id}/vid/{ssai_video_id}/streams',
video_id, data=b'{"api-key":"null"}',
headers={'content-type': 'application/json'})

periods = self._extract_mpd_periods(dai['stream_manifest'], video_id)

# skip pre-roll and mid-roll ads
periods = [p for p in periods if '-ad-' not in p['id']]

formats, subtitles = self._merge_mpd_periods(periods)

info_dict.update({
'id': video_id,
'formats': formats,
'subtitles': subtitles,
})

return info_dict


Expand Down

0 comments on commit 7e90e34

Please sign in to comment.