diff options
author | Sergey M․ <[email protected]> | 2020-12-26 21:58:26 +0700 |
---|---|---|
committer | Sergey M․ <[email protected]> | 2020-12-26 21:58:26 +0700 |
commit | 8bc4c6350e0a9c54e79ac3bd28ce97054d8c000d (patch) | |
tree | 63f37185dedc154fc6d27694eb94dc3f9c35367a /youtube_dl/extractor/spankbang.py | |
parent | cfa4ffa23b96df7ee3ffbe0dd35ec5c80e17590f (diff) | |
download | youtube-dl-8bc4c6350e0a9c54e79ac3bd28ce97054d8c000d.tar.gz youtube-dl-8bc4c6350e0a9c54e79ac3bd28ce97054d8c000d.zip |
[spangbang:playlist] Fix extraction (closes #24087)
Diffstat (limited to 'youtube_dl/extractor/spankbang.py')
-rw-r--r-- | youtube_dl/extractor/spankbang.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/youtube_dl/extractor/spankbang.py b/youtube_dl/extractor/spankbang.py index e3ec8602d..8a7102d0c 100644 --- a/youtube_dl/extractor/spankbang.py +++ b/youtube_dl/extractor/spankbang.py @@ -13,6 +13,7 @@ from ..utils import ( str_to_int, url_or_none, urlencode_postdata, + urljoin, ) @@ -166,30 +167,33 @@ class SpankBangIE(InfoExtractor): class SpankBangPlaylistIE(InfoExtractor): - _VALID_URL = r'https?://(?:[^/]+\.)?spankbang\.com/(?P<id>[\da-z]+)/playlist/[^/]+' + _VALID_URL = r'https?://(?:[^/]+\.)?spankbang\.com/(?P<id>[\da-z]+)/playlist/(?P<display_id>[^/]+)' _TEST = { 'url': 'https://spankbang.com/ug0k/playlist/big+ass+titties', 'info_dict': { 'id': 'ug0k', 'title': 'Big Ass Titties', }, - 'playlist_mincount': 50, + 'playlist_mincount': 40, } def _real_extract(self, url): - playlist_id = self._match_id(url) + mobj = re.match(self._VALID_URL, url) + playlist_id = mobj.group('id') + display_id = mobj.group('display_id') webpage = self._download_webpage( url, playlist_id, headers={'Cookie': 'country=US; mobile=on'}) entries = [self.url_result( - 'https://spankbang.com/%s/video' % video_id, - ie=SpankBangIE.ie_key(), video_id=video_id) - for video_id in orderedSet(re.findall( - r'<a[^>]+\bhref=["\']/?([\da-z]+)/play/', webpage))] + urljoin(url, mobj.group('path')), + ie=SpankBangIE.ie_key(), video_id=mobj.group('id')) + for mobj in re.finditer( + r'<a[^>]+\bhref=(["\'])(?P<path>/?[\da-z]+-(?P<id>[\da-z]+)/playlist/%s(?:(?!\1).)*)\1' + % re.escape(display_id), webpage)] title = self._html_search_regex( - r'<h1>([^<]+)\s+playlist</h1>', webpage, 'playlist title', + r'<h1>([^<]+)\s+playlist\s*<', webpage, 'playlist title', fatal=False) return self.playlist_result(entries, playlist_id, title) |