aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/extractor
diff options
context:
space:
mode:
authorThomas Christlieb <thomaschristlieb@hotmail.com>2017-02-08 13:53:39 +0100
committerSergey M․ <dstftw@gmail.com>2017-02-10 00:56:12 +0700
commite64b0fca147c1512c8d31d02aedefed78411bbd9 (patch)
tree507b1b09edbcc894f317296fc55f0715c4bcec87 /youtube_dl/extractor
parent78ef214d2d8010f2fc7ab451c9b4ae137c2569dd (diff)
[pornhub] Fix extraction (closes #12007)
Diffstat (limited to 'youtube_dl/extractor')
-rw-r--r--youtube_dl/extractor/pornhub.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/youtube_dl/extractor/pornhub.py b/youtube_dl/extractor/pornhub.py
index 017f6c552..5e930f45e 100644
--- a/youtube_dl/extractor/pornhub.py
+++ b/youtube_dl/extractor/pornhub.py
@@ -156,11 +156,24 @@ class PornHubIE(InfoExtractor):
comment_count = self._extract_count(
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 = []
- 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:
password = compat_urllib_parse_unquote_plus(