]> jfr.im git - yt-dlp.git/commitdiff
[extractor/pornhub] Extract `uploader_id` field (#4104)
authorLesmiscore <redacted>
Sat, 18 Jun 2022 15:06:12 +0000 (00:06 +0900)
committerGitHub <redacted>
Sat, 18 Jun 2022 15:06:12 +0000 (00:06 +0900)
Authored by: Lesmiscore

yt_dlp/extractor/pornhub.py

index 1d58876e88e7e921789b958f771a914f3d3f73b5..023b5f3b9701738e7790cf681c242056ed67cf63 100644 (file)
@@ -21,6 +21,7 @@
     NO_DEFAULT,
     orderedSet,
     remove_quotes,
+    remove_start,
     str_to_int,
     update_url_query,
     urlencode_postdata,
@@ -198,6 +199,16 @@ class PornHubIE(PornHubBaseIE):
             'skip_download': True,
         },
         'skip': 'This video has been disabled',
+    }, {
+        'url': 'http://www.pornhub.com/view_video.php?viewkey=ph601dc30bae19a',
+        'info_dict': {
+            'id': 'ph601dc30bae19a',
+            'uploader': 'Projekt Melody',
+            'uploader_id': 'projekt-melody',
+            'upload_date': '20210205',
+            'title': '"Welcome to My Pussy Mansion" - CB Stream (02/03/21)',
+            'thumbnail': r're:https?://.+',
+        },
     }, {
         'url': 'http://www.pornhub.com/view_video.php?viewkey=ph557bbb6676d2d',
         'only_matching': True,
@@ -457,9 +468,11 @@ def add_format(format_url, height=None):
         self._sort_formats(
             formats, field_preference=('height', 'width', 'fps', 'format_id'))
 
+        model_profile = self._search_json(
+            r'var\s+MODEL_PROFILE\s*=', webpage, 'model profile', video_id, fatal=False)
         video_uploader = self._html_search_regex(
             r'(?s)From:&nbsp;.+?<(?:a\b[^>]+\bhref=["\']/(?:(?:user|channel)s|model|pornstar)/|span\b[^>]+\bclass=["\']username)[^>]+>(.+?)<',
-            webpage, 'uploader', default=None)
+            webpage, 'uploader', default=None) or model_profile.get('username')
 
         def extract_vote_count(kind, name):
             return self._extract_count(
@@ -488,6 +501,7 @@ def extract_list(meta_key):
         return merge_dicts({
             'id': video_id,
             'uploader': video_uploader,
+            'uploader_id': remove_start(model_profile.get('modelProfileLink'), '/model/'),
             'upload_date': upload_date,
             'title': title,
             'thumbnail': thumbnail,