diff --git a/yt_dlp/extractor/espn.py b/yt_dlp/extractor/espn.py index e45025b2b..7aa454063 100644 --- a/yt_dlp/extractor/espn.py +++ b/yt_dlp/extractor/espn.py @@ -322,7 +322,7 @@ def _real_extract(self, url): video_id)['playbackState'] # ESPN+ subscription required, through cookies - if video_data.get('sourceId') == 'ESPN_DTC': + if 'DTC' in video_data.get('sourceId'): cookie = self._get_cookies(url).get('ESPN-ONESITE.WEB-PROD.token') if not cookie: self.raise_login_required(method='cookies') @@ -366,6 +366,13 @@ def _real_extract(self, url): }) m3u8_url, headers = playback['stream']['complete'][0]['url'], {'authorization': token} + # No login required + elif video_data.get('sourceId') == 'ESPN_FREE': + asset = self._download_json( + f'https://watch.auth.api.espn.com/video/auth/media/{video_id}/asset?apikey=uiqlbgzdwuru14v627vdusswb', + video_id) + m3u8_url, headers = asset['stream'], {} + # TV Provider required else: resource = self._get_mvpd_resource('ESPN', video_data['name'], video_id, None)