1
1
mirror of https://github.com/ytdl-org/youtube-dl synced 2024-12-01 01:32:54 +01:00

[pornhub:user:videos] Add extractor (Closes #8548)

This commit is contained in:
Sergey M․ 2016-02-18 22:29:17 +06:00
parent f3f9cd9234
commit 40e146aa1e
2 changed files with 40 additions and 16 deletions

View File

@ -555,6 +555,7 @@ from .pornhd import PornHdIE
from .pornhub import ( from .pornhub import (
PornHubIE, PornHubIE,
PornHubPlaylistIE, PornHubPlaylistIE,
PornHubUserVideosIE,
) )
from .pornotube import PornotubeIE from .pornotube import PornotubeIE
from .pornovoisines import PornoVoisinesIE from .pornovoisines import PornoVoisinesIE

View File

@ -129,7 +129,31 @@ class PornHubIE(InfoExtractor):
} }
class PornHubPlaylistIE(InfoExtractor): class PornHubPlaylistBaseIE(InfoExtractor):
def _extract_entries(self, webpage):
return [
self.url_result('http://www.pornhub.com/%s' % video_url, 'PornHub')
for video_url in set(re.findall(
r'href="/?(view_video\.php\?.*\bviewkey=[\da-z]+[^"]*)"', webpage))
]
def _real_extract(self, url):
playlist_id = self._match_id(url)
webpage = self._download_webpage(url, playlist_id)
entries = self._extract_entries(webpage)
playlist = self._parse_json(
self._search_regex(
r'playlistObject\s*=\s*({.+?});', webpage, 'playlist'),
playlist_id)
return self.playlist_result(
entries, playlist_id, playlist.get('title'), playlist.get('description'))
class PornHubPlaylistIE(PornHubPlaylistBaseIE):
_VALID_URL = r'https?://(?:www\.)?pornhub\.com/playlist/(?P<id>\d+)' _VALID_URL = r'https?://(?:www\.)?pornhub\.com/playlist/(?P<id>\d+)'
_TESTS = [{ _TESTS = [{
'url': 'http://www.pornhub.com/playlist/6201671', 'url': 'http://www.pornhub.com/playlist/6201671',
@ -140,21 +164,20 @@ class PornHubPlaylistIE(InfoExtractor):
'playlist_mincount': 35, 'playlist_mincount': 35,
}] }]
class PornHubUserVideosIE(PornHubPlaylistBaseIE):
_VALID_URL = r'https?://(?:www\.)?pornhub\.com/users/(?P<id>[^/]+)/videos'
_TESTS = [{
'url': 'http://www.pornhub.com/users/rushandlia/videos',
'info_dict': {
'id': 'rushandlia',
},
'playlist_mincount': 13,
}]
def _real_extract(self, url): def _real_extract(self, url):
playlist_id = self._match_id(url) user_id = self._match_id(url)
webpage = self._download_webpage(url, playlist_id) webpage = self._download_webpage(url, user_id)
entries = [ return self.playlist_result(self._extract_entries(webpage), user_id)
self.url_result('http://www.pornhub.com/%s' % video_url, 'PornHub')
for video_url in set(re.findall(
r'href="/?(view_video\.php\?.*\bviewkey=[\da-z]+[^"]*)"', webpage))
]
playlist = self._parse_json(
self._search_regex(
r'playlistObject\s*=\s*({.+?});', webpage, 'playlist'),
playlist_id)
return self.playlist_result(
entries, playlist_id, playlist.get('title'), playlist.get('description'))