瀏覽代碼

[pornhub] Fix extraction (closes #12007)

Thomas Christlieb 8 年之前
父節點
當前提交
e64b0fca14
共有 1 個文件被更改,包括 17 次插入4 次删除
  1. 17 4
      youtube_dl/extractor/pornhub.py

+ 17 - 4
youtube_dl/extractor/pornhub.py

@@ -156,11 +156,24 @@ class PornHubIE(InfoExtractor):
         comment_count = self._extract_count(
         comment_count = self._extract_count(
             r'All Comments\s*<span>\(([\d,.]+)\)', webpage, 'comment')
             r'All Comments\s*<span>\(([\d,.]+)\)', webpage, 'comment')
 
 
+        video_variables = {}
+        for video_variablename, quote, video_variable in re.findall(
+                r'(player_quality_[0-9]{3,4}p[0-9a-z]+?)=\s*(["\'])(.*?)\2;', webpage):
+            video_variables[video_variablename] = video_variable
+
+        encoded_video_urls = []
+        for encoded_video_url in re.findall(
+                r'player_quality_[0-9]{3,4}p\s*=(.*?);', webpage):
+            encoded_video_urls.append(encoded_video_url)
+
+        # Decode the URLs 
         video_urls = []
         video_urls = []
-        for quote, video_url in re.findall(
-                r'player_quality_[0-9]{3,4}p\s*=\s*(["\'])(.+?)\1;', webpage):
-            video_urls.append(compat_urllib_parse_unquote(re.sub(
-                r'{0}\s*\+\s*{0}'.format(quote), '', video_url)))
+        for url in encoded_video_urls:
+            for varname, varval in video_variables.items():
+                url = url.replace(varname, varval)
+            url = url.replace('+', '')
+            url = url.replace(' ', '')
+            video_urls.append(url)
 
 
         if webpage.find('"encrypted":true') != -1:
         if webpage.find('"encrypted":true') != -1:
             password = compat_urllib_parse_unquote_plus(
             password = compat_urllib_parse_unquote_plus(