From c58afad3620d45063a21d6f257c23cc63c49f590 Mon Sep 17 00:00:00 2001 From: mimvahedi Date: Tue, 12 Dec 2023 17:13:47 +0330 Subject: [PATCH 1/5] [alaa] Add new extractor --- youtube_dl/extractor/alaa.py | 52 ++++++++++++++++++++++++++++++ youtube_dl/extractor/extractors.py | 1 + 2 files changed, 53 insertions(+) create mode 100644 youtube_dl/extractor/alaa.py diff --git a/youtube_dl/extractor/alaa.py b/youtube_dl/extractor/alaa.py new file mode 100644 index 000000000..27ad73d4e --- /dev/null +++ b/youtube_dl/extractor/alaa.py @@ -0,0 +1,52 @@ +# 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")) + } diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 82221445f..451e20161 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -39,6 +39,7 @@ from .aenetworks import ( from .afreecatv import AfreecaTVIE from .airmozilla import AirMozillaIE from .aljazeera import AlJazeeraIE +from .alaa import AlaaIE from .alphaporno import AlphaPornoIE from .amara import AmaraIE from .amcnetworks import AMCNetworksIE From 42c767c7a542166d55628162e6428d79eb9fd867 Mon Sep 17 00:00:00 2001 From: mimvahedi Date: Wed, 13 Dec 2023 00:24:16 +0330 Subject: [PATCH 2/5] [alaa] Add playlist extractor --- youtube_dl/extractor/alaa.py | 20 ++++++++++++++++++++ youtube_dl/extractor/extractors.py | 5 ++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/alaa.py b/youtube_dl/extractor/alaa.py index 27ad73d4e..ab49d08d7 100644 --- a/youtube_dl/extractor/alaa.py +++ b/youtube_dl/extractor/alaa.py @@ -50,3 +50,23 @@ class AlaaIE(InfoExtractor): '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'] + set_content = map(lambda x: x['url']['web'], set_data['data']['content']) + 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 451e20161..c7686dc90 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -39,7 +39,10 @@ from .aenetworks import ( from .afreecatv import AfreecaTVIE from .airmozilla import AirMozillaIE from .aljazeera import AlJazeeraIE -from .alaa import AlaaIE +from .alaa import ( + AlaaIE, + AlaaPlaylistIE +) from .alphaporno import AlphaPornoIE from .amara import AmaraIE from .amcnetworks import AMCNetworksIE From ce6e7c2271c426cdd545c10815aa672a1be76858 Mon Sep 17 00:00:00 2001 From: mimvahedi Date: Wed, 13 Dec 2023 00:26:34 +0330 Subject: [PATCH 3/5] [alaa] convert " to ' --- youtube_dl/extractor/alaa.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/youtube_dl/extractor/alaa.py b/youtube_dl/extractor/alaa.py index ab49d08d7..11afb9a32 100644 --- a/youtube_dl/extractor/alaa.py +++ b/youtube_dl/extractor/alaa.py @@ -35,10 +35,10 @@ class AlaaIE(InfoExtractor): def map_formats(v): return { - "url": v.get("link"), - "filesize": parse_filesize(v.get("size")), - "format_id": v.get("res"), - "ext": v.get("ext"), + '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'])) @@ -48,7 +48,7 @@ class AlaaIE(InfoExtractor): 'title': video_details['title'], 'formats': formats, 'thumbnail': url_or_none(video_image), - 'duration': int_or_none(parse_duration(video_details.get('duration') + ":00")) + 'duration': int_or_none(parse_duration(video_details.get('duration') + ':00')) } From 5377e4d8afb3ffa061879ad4ce08dd52972ed807 Mon Sep 17 00:00:00 2001 From: mimvahedi Date: Wed, 13 Dec 2023 00:40:23 +0330 Subject: [PATCH 4/5] fix typo --- youtube_dl/extractor/alaa.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/alaa.py b/youtube_dl/extractor/alaa.py index 11afb9a32..bd66d1b34 100644 --- a/youtube_dl/extractor/alaa.py +++ b/youtube_dl/extractor/alaa.py @@ -68,5 +68,5 @@ class AlaaPlaylistIE(InfoExtractor): 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'] - set_content = map(lambda x: x['url']['web'], set_data['data']['content']) + set_content = list(map(lambda x: x['url']['web'], set_data['data']['contents'])) return self.playlist_result(set_content, set_id, set_title) From b4cbc9e7ced65e71eb4c74f3c7eee2894eace1da Mon Sep 17 00:00:00 2001 From: mimvahedi Date: Wed, 13 Dec 2023 01:08:07 +0330 Subject: [PATCH 5/5] [alaa] fix playlist extraction --- youtube_dl/extractor/alaa.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/alaa.py b/youtube_dl/extractor/alaa.py index bd66d1b34..148889ef6 100644 --- a/youtube_dl/extractor/alaa.py +++ b/youtube_dl/extractor/alaa.py @@ -68,5 +68,14 @@ class AlaaPlaylistIE(InfoExtractor): 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'] - set_content = list(map(lambda x: x['url']['web'], set_data['data']['contents'])) + + 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)