]> jfr.im git - yt-dlp.git/commitdiff
Bugfix for bae4834245a708fff97219849ec880c319c88bc6
authorbashonly <redacted>
Mon, 4 Sep 2023 16:18:59 +0000 (11:18 -0500)
committerbashonly <redacted>
Mon, 4 Sep 2023 16:18:59 +0000 (11:18 -0500)
Authored by: bashonly

yt_dlp/extractor/noodlemagazine.py

index 1cea0dbda90627e6def45f92af3aa255d7bcb6c6..1c1a763dc22ffc7579648732cd1ea9c9e38d136b 100644 (file)
@@ -1,7 +1,5 @@
 from .common import InfoExtractor
 from ..utils import (
-    extract_attributes,
-    get_element_html_by_id,
     int_or_none,
     parse_count,
     parse_duration,
@@ -42,27 +40,36 @@ def _real_extract(self, url):
         like_count = parse_count(self._html_search_meta('ya:ovs:likes', webpage, default=None))
         upload_date = unified_strdate(self._html_search_meta('ya:ovs:upload_date', webpage, default=''))
 
-        player_path = extract_attributes(get_element_html_by_id('iplayer', webpage) or '')['src']
+        def build_url(url_or_path):
+            return urljoin('https://adult.noodlemagazine.com', url_or_path)
+
+        headers = {'Referer': url}
+        player_path = self._html_search_regex(
+            r'<iframe[^>]+\bid="iplayer"[^>]+\bsrc="([^"]+)"', webpage, 'player path')
         player_iframe = self._download_webpage(
-            urljoin('https://adult.noodlemagazine.com', player_path), video_id, 'Downloading iframe page')
+            build_url(player_path), video_id, 'Downloading iframe page', headers=headers)
         playlist_url = self._search_regex(
             r'window\.playlistUrl\s*=\s*["\']([^"\']+)["\']', player_iframe, 'playlist url')
-        playlist_info = self._download_json(
-            urljoin('https://adult.noodlemagazine.com', playlist_url), video_id, headers={'Referer': url})
+        playlist_info = self._download_json(build_url(playlist_url), video_id, headers=headers)
 
-        thumbnail = self._og_search_property('image', webpage, default=None) or playlist_info.get('image')
-        formats = traverse_obj(playlist_info, ('sources', lambda _, v: v['file'], {
-            'url': 'file',
-            'format_id': 'label',
-            'height': ('label', {int_or_none}),
-            'ext': 'type',
-        }))
+        formats = []
+        for source in traverse_obj(playlist_info, ('sources', lambda _, v: v['file'])):
+            if source.get('type') == 'hls':
+                formats.extend(self._extract_m3u8_formats(
+                    build_url(source['file']), video_id, 'mp4', fatal=False, m3u8_id='hls'))
+            else:
+                formats.append(traverse_obj(source, {
+                    'url': ('file', {build_url}),
+                    'format_id': 'label',
+                    'height': ('label', {int_or_none}),
+                    'ext': 'type',
+                }))
 
         return {
             'id': video_id,
             'formats': formats,
             'title': title,
-            'thumbnail': thumbnail,
+            'thumbnail': self._og_search_property('image', webpage, default=None) or playlist_info.get('image'),
             'duration': duration,
             'description': description,
             'tags': tags,