]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/espn.py
[compat] Remove more functions
[yt-dlp.git] / yt_dlp / extractor / espn.py
index e45025b2b16d329292d461886612282ca06f39d9..44e0c0989db5e6287a7b950f5c5447c2361875f4 100644 (file)
@@ -1,7 +1,7 @@
 import base64
 import json
 import re
-import urllib
+import urllib.parse
 
 from .common import InfoExtractor
 from .adobepass import AdobePassIE
@@ -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)