]> jfr.im git - yt-dlp.git/commitdiff
[ie/litv] Fix premium content extraction (#8842)
authorbashonly <redacted>
Sun, 24 Dec 2023 16:33:16 +0000 (10:33 -0600)
committerGitHub <redacted>
Sun, 24 Dec 2023 16:33:16 +0000 (16:33 +0000)
Closes #8654
Authored by: bashonly

yt_dlp/extractor/litv.py

index 2c7c7175eafee40530b2dc37659cbb3bf42aa8c2..1003fb2fd41011fff7c4e74ba563b49b6f6b7063 100644 (file)
@@ -6,6 +6,7 @@
     int_or_none,
     smuggle_url,
     traverse_obj,
+    try_call,
     unsmuggle_url,
 )
 
@@ -96,13 +97,22 @@ def _real_extract(self, url):
             r'uiHlsUrl\s*=\s*testBackendData\(([^;]+)\);',
             webpage, 'video data', default='{}'), video_id)
         if not video_data:
-            payload = {
-                'assetId': program_info['assetId'],
-                'watchDevices': program_info['watchDevices'],
-                'contentType': program_info['contentType'],
-            }
+            payload = {'assetId': program_info['assetId']}
+            puid = try_call(lambda: self._get_cookies('https://www.litv.tv/')['PUID'].value)
+            if puid:
+                payload.update({
+                    'type': 'auth',
+                    'puid': puid,
+                })
+                endpoint = 'getUrl'
+            else:
+                payload.update({
+                    'watchDevices': program_info['watchDevices'],
+                    'contentType': program_info['contentType'],
+                })
+                endpoint = 'getMainUrlNoAuth'
             video_data = self._download_json(
-                'https://www.litv.tv/vod/ajax/getMainUrlNoAuth', video_id,
+                f'https://www.litv.tv/vod/ajax/{endpoint}', video_id,
                 data=json.dumps(payload).encode('utf-8'),
                 headers={'Content-Type': 'application/json'})