diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 03d035a27..0f1b8fc22 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -547,7 +547,10 @@ from .ivi import ( IviCompilationIE ) from .ivideon import IvideonIE -from .iwara import IwaraIE +from .iwara import ( + IwaraIE, + IwaraPlaylistIE, +) from .izlesene import IzleseneIE from .jamendo import ( JamendoIE, diff --git a/youtube_dl/extractor/iwara.py b/youtube_dl/extractor/iwara.py index 907d5fc8b..56e870f7c 100644 --- a/youtube_dl/extractor/iwara.py +++ b/youtube_dl/extractor/iwara.py @@ -1,6 +1,8 @@ # coding: utf-8 from __future__ import unicode_literals +import re + from .common import InfoExtractor from ..compat import compat_urllib_parse_urlparse from ..utils import ( @@ -97,3 +99,40 @@ class IwaraIE(InfoExtractor): 'age_limit': age_limit, 'formats': formats, } + + +class IwaraPlaylistIE(InfoExtractor): + IE_NAME = 'iwara:playlist' + _VALID_URL = r'https?://(?:www\.|ecchi\.)?iwara\.tv/playlist/(?P[a-zA-Z0-9-]+)' + _TEST = { + 'url': 'https://ecchi.iwara.tv/playlist/best-enf', + 'info_dict': { + 'title': 'Best enf', + 'uploader_id': 'Jared98112', + 'id': 'best-enf', + }, + 'playlist_mincount': 50, + } + + def _real_extract(self, url): + playlist_id = self._match_id(url) + + webpage = self._download_webpage(url, playlist_id) + + title = self._html_search_regex(r'

]*?>(.*?)

', webpage, 'title') + uploader_id = self._html_search_regex( + r'
\s*

(.*?)

', + webpage, + 'uploader_id') + urls = re.findall( + r'

\s*', + webpage) + entries = [self.url_result(u) for u in urls] + + return { + '_type': 'playlist', + 'id': playlist_id, + 'uploader_id': uploader_id, + 'title': title, + 'entries': entries, + }