|
@@ -227,13 +227,20 @@ class PornHubIE(InfoExtractor):
|
|
|
|
|
|
class PornHubPlaylistBaseIE(InfoExtractor):
|
|
|
def _extract_entries(self, webpage):
|
|
|
+ # Only process container div with main playlist content skipping
|
|
|
+ # drop-down menu that uses similar pattern for videos (see
|
|
|
+ # https://github.com/rg3/youtube-dl/issues/11594).
|
|
|
+ container = self._search_regex(
|
|
|
+ r'(?s)(<div[^>]+class=["\']container.+)', webpage,
|
|
|
+ 'container', default=webpage)
|
|
|
+
|
|
|
return [
|
|
|
self.url_result(
|
|
|
'http://www.pornhub.com/%s' % video_url,
|
|
|
PornHubIE.ie_key(), video_title=title)
|
|
|
for video_url, title in orderedSet(re.findall(
|
|
|
r'href="/?(view_video\.php\?.*\bviewkey=[\da-z]+[^"]*)"[^>]*\s+title="([^"]+)"',
|
|
|
- webpage))
|
|
|
+ container))
|
|
|
]
|
|
|
|
|
|
def _real_extract(self, url):
|
|
@@ -241,14 +248,7 @@ class PornHubPlaylistBaseIE(InfoExtractor):
|
|
|
|
|
|
webpage = self._download_webpage(url, playlist_id)
|
|
|
|
|
|
- # Only process container div with main playlist content skipping
|
|
|
- # drop-down menu that uses similar pattern for videos (see
|
|
|
- # https://github.com/rg3/youtube-dl/issues/11594).
|
|
|
- container = self._search_regex(
|
|
|
- r'(?s)(<div[^>]+class=["\']container.+)', webpage,
|
|
|
- 'container', default=webpage)
|
|
|
-
|
|
|
- entries = self._extract_entries(container)
|
|
|
+ entries = self._extract_entries(webpage)
|
|
|
|
|
|
playlist = self._parse_json(
|
|
|
self._search_regex(
|