Browse Source

[shahid] Add new extractor

totalwebcasting
remitamine 9 years ago
parent
commit
114ed20e64
2 changed files with 57 additions and 0 deletions
  1. +1
    -0
      youtube_dl/extractor/__init__.py
  2. +56
    -0
      youtube_dl/extractor/shahid.py

+ 1
- 0
youtube_dl/extractor/__init__.py View File

@ -502,6 +502,7 @@ from .senateisvp import SenateISVPIE
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


+ 56
- 0
youtube_dl/extractor/shahid.py 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,
}

Loading…
Cancel
Save