diff --git a/youtube_dl/extractor/alaa.py b/youtube_dl/extractor/alaa.py new file mode 100644 index 000000000..148889ef6 --- /dev/null +++ b/youtube_dl/extractor/alaa.py @@ -0,0 +1,81 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor + +from ..utils import ( + int_or_none, + url_or_none, + parse_filesize, + parse_duration, +) + + +class AlaaIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?alaatv\.com/c/(?P[0-9]+)' + + _TEST = { + 'url': 'https://alaatv.com/c/19680', + 'info_dict': { + 'id': '19680', + 'ext': 'mp4', + 'title': 'مجموعه، الگو و دنباله (قسمت ششم)، تست های 48 الی 55', + 'thumbnail': 'https://nodes.alaatv.com/media/thumbnails/582/582070sevt.jpg', + 'duration': 1800 + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + + video_details = self._download_json('https://alaatv.com/api/v2/c/{0}'.format(video_id), video_id) + video_details = video_details['data'] + + video_image = video_details.get('photo') + + def map_formats(v): + return { + 'url': v.get('link'), + 'filesize': parse_filesize(v.get('size')), + 'format_id': v.get('res'), + 'ext': v.get('ext'), + } + + formats = list(map(map_formats, video_details['file']['video'])) + + return { + 'id': video_id, + 'title': video_details['title'], + 'formats': formats, + 'thumbnail': url_or_none(video_image), + 'duration': int_or_none(parse_duration(video_details.get('duration') + ':00')) + } + + +class AlaaPlaylistIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?alaatv.com/set/(?P[0-9]+)' + + _TEST = { + 'url': 'https://alaatv.com/set/181', + 'info_dict': { + 'title': 'صفر تا صد فیزیک یازدهم - فرشید داداشی', + 'id': '181', + }, + 'playlist_count': 81, + } + + def _real_extract(self, url): + set_id = self._match_id(url) + set_data = self._download_json('https://alaatv.com/api/v2/set/{0}'.format(set_id), set_id) + set_title = set_data['data']['title'] + + def map_formats(v): + return { + 'id': str(v['id']), + 'title': v['title'], + 'url': v['url']['web'], + } + + set_content = list(map(map_formats, set_data['data']['contents'])) + + return self.playlist_result(set_content, set_id, set_title) diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index a56a7c52f..e2c4b1225 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -39,6 +39,10 @@ from .aenetworks import ( from .afreecatv import AfreecaTVIE from .airmozilla import AirMozillaIE from .aljazeera import AlJazeeraIE +from .alaa import ( + AlaaIE, + AlaaPlaylistIE +) from .alphaporno import AlphaPornoIE from .amara import AmaraIE from .amcnetworks import AMCNetworksIE