]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/eporner.py
[ie/youtube] Extract upload timestamp if available (#9856)
[yt-dlp.git] / yt_dlp / extractor / eporner.py
index a2337979b845aef0ba5c0d52c20fa94ba8fcf7fb..b18a76c7c177de808e7845e5c7ef23007179f546 100644 (file)
@@ -1,8 +1,10 @@
 from .common import InfoExtractor
 from ..utils import (
-    encode_base_n,
     ExtractorError,
+    encode_base_n,
+    get_elements_by_class,
     int_or_none,
+    join_nonempty,
     merge_dicts,
     parse_duration,
     str_to_int,
@@ -52,7 +54,7 @@ def _real_extract(self, url):
 
         webpage, urlh = self._download_webpage_handle(url, display_id)
 
-        video_id = self._match_id(urlh.geturl())
+        video_id = self._match_id(urlh.url)
 
         hash = self._search_regex(
             r'hash\s*[:=]\s*["\']([\da-f]{32})', webpage, 'hash')
@@ -81,6 +83,7 @@ def calc_hash(s):
         sources = video['sources']
 
         formats = []
+        has_av1 = bool(get_elements_by_class('download-av1', webpage))
         for kind, formats_dict in sources.items():
             if not isinstance(formats_dict, dict):
                 continue
@@ -106,6 +109,14 @@ def calc_hash(s):
                         'height': height,
                         'fps': fps,
                     })
+                    if has_av1:
+                        formats.append({
+                            'url': src.replace('.mp4', '-av1.mp4'),
+                            'format_id': join_nonempty('av1', format_id),
+                            'height': height,
+                            'fps': fps,
+                            'vcodec': 'av1',
+                        })
 
         json_ld = self._search_json_ld(webpage, display_id, default={})