[shahid] Add new extractor

This commit is contained in:
remitamine 2015-07-18 22:10:57 +01:00
parent e58066e244
commit 114ed20e64
2 changed files with 57 additions and 0 deletions

View file

@ -502,6 +502,7 @@
from .servingsys import ServingSysIE from .servingsys import ServingSysIE
from .sexu import SexuIE from .sexu import SexuIE
from .sexykarma import SexyKarmaIE from .sexykarma import SexyKarmaIE
from .shahid import ShahidIE
from .shared import SharedIE from .shared import SharedIE
from .sharesix import ShareSixIE from .sharesix import ShareSixIE
from .sina import SinaIE from .sina import SinaIE

View file

@ -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<id>\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,
}