From 114ed20e6435f9a68eb757f2d6e26e7ea941afbf Mon Sep 17 00:00:00 2001 From: remitamine Date: Sat, 18 Jul 2015 22:10:57 +0100 Subject: [PATCH] [shahid] Add new extractor --- youtube_dl/extractor/__init__.py | 1 + youtube_dl/extractor/shahid.py | 56 ++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 youtube_dl/extractor/shahid.py diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 06f21064b..6c1d4f08a 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -502,6 +502,7 @@ from .senateisvp import SenateISVPIE from .servingsys import ServingSysIE from .sexu import SexuIE from .sexykarma import SexyKarmaIE +from .shahid import ShahidIE from .shared import SharedIE from .sharesix import ShareSixIE from .sina import SinaIE diff --git a/youtube_dl/extractor/shahid.py b/youtube_dl/extractor/shahid.py new file mode 100644 index 000000000..d492070da --- /dev/null +++ b/youtube_dl/extractor/shahid.py @@ -0,0 +1,56 @@ +from .common import InfoExtractor +from ..utils import get_element_by_id + +class ShahidIE(InfoExtractor): + _VALID_URL = r'https?://shahid\.mbc\.net/ar/episode/(?P\d+)/?' + _TESTS = [ + { + 'url': 'https://shahid.mbc.net/ar/episode/108084/%D8%AE%D9%88%D8%A7%D8%B7%D8%B1-%D8%A7%D9%84%D9%85%D9%88%D8%B3%D9%85-11-%D8%A7%D9%84%D8%AD%D9%84%D9%82%D8%A9-1.html', + 'info_dict': { + 'id': '108084', + 'ext': 'm3u8', + 'title': 'بسم الله', + 'description': 'بسم الله' + }, + 'params': { + # m3u8 download + 'skip_download': True, + } + }, + { + #shahid plus subscriber only + 'url': 'https://shahid.mbc.net/ar/series/90497/%D9%85%D8%B1%D8%A7%D9%8A%D8%A7-2011.html', + 'only_matching': True + } + ] + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + json_data = self._parse_json( + get_element_by_id('jsonld', webpage), + video_id + ) + title = json_data['name'] + thumbnail = json_data['image'] + categories = json_data['genre'] + description = json_data['description'] + player_json_data = self._download_json( + 'https://shahid.mbc.net/arContent/getPlayerContent-param-.id-'+video_id+'.type-player.html', + video_id + )['data'] + if 'url' in player_json_data: + m3u8_url = player_json_data['url'] + else: + for error in json_data['error'].values(): + self.report_warning(error) + return + formats = self._extract_m3u8_formats(m3u8_url, video_id) + return { + 'id': video_id, + 'title': title, + 'thumbnail': thumbnail, + 'categories': categories, + 'description': description, + 'formats': formats, + }