Browse Source
Merge pull request #7681 from remitamine/skynewarabia
Merge pull request #7681 from remitamine/skynewarabia
[skynewsarabia] Add new extractormaster
2 changed files with 121 additions and 0 deletions
Split View
Diff Options
@ -0,0 +1,117 @@ |
|||
# coding: utf-8 |
|||
from __future__ import unicode_literals |
|||
|
|||
from .common import InfoExtractor |
|||
from ..compat import compat_str |
|||
from ..utils import ( |
|||
parse_iso8601, |
|||
parse_duration, |
|||
) |
|||
|
|||
|
|||
class SkyNewArabiaBaseIE(InfoExtractor): |
|||
_IMAGE_BASE_URL = 'http://www.skynewsarabia.com/web/images' |
|||
|
|||
def _call_api(self, path, value): |
|||
return self._download_json('http://api.skynewsarabia.com/web/rest/v2/%s/%s.json' % (path, value), value) |
|||
|
|||
def _get_limelight_media_id(self, url): |
|||
return self._search_regex(r'/media/[^/]+/([a-z0-9]{32})', url, 'limelight media id') |
|||
|
|||
def _get_image_url(self, image_path_template, width='1600', height='1200'): |
|||
return self._IMAGE_BASE_URL + image_path_template.format(width=width, height=height) |
|||
|
|||
def _extract_video_info(self, video_data): |
|||
video_id = compat_str(video_data['id']) |
|||
topic = video_data.get('topicTitle') |
|||
return { |
|||
'_type': 'url_transparent', |
|||
'url': 'limelight:media:%s' % self._get_limelight_media_id(video_data['videoUrl'][0]['url']), |
|||
'id': video_id, |
|||
'title': video_data['headline'], |
|||
'description': video_data.get('summary'), |
|||
'thumbnail': self._get_image_url(video_data['mediaAsset']['imageUrl']), |
|||
'timestamp': parse_iso8601(video_data.get('date')), |
|||
'duration': parse_duration(video_data.get('runTime')), |
|||
'tags': video_data.get('tags', []), |
|||
'categories': [topic] if topic else [], |
|||
'webpage_url': 'http://www.skynewsarabia.com/web/video/%s' % video_id, |
|||
'ie_key': 'LimelightMedia', |
|||
} |
|||
|
|||
|
|||
class SkyNewsArabiaIE(SkyNewArabiaBaseIE): |
|||
IE_NAME = 'skynewsarabia:video' |
|||
_VALID_URL = r'https?://(?:www\.)?skynewsarabia\.com/web/video/(?P<id>[0-9]+)' |
|||
_TEST = { |
|||
'url': 'http://www.skynewsarabia.com/web/video/794902/%D9%86%D8%B5%D9%81-%D9%85%D9%84%D9%8A%D9%88%D9%86-%D9%85%D8%B5%D8%A8%D8%A7%D8%AD-%D8%B4%D8%AC%D8%B1%D8%A9-%D9%83%D8%B1%D9%8A%D8%B3%D9%85%D8%A7%D8%B3', |
|||
'info_dict': { |
|||
'id': '794902', |
|||
'ext': 'flv', |
|||
'title': 'نصف مليون مصباح على شجرة كريسماس', |
|||
'description': 'md5:22f1b27f0850eeb10c7e59b1f16eb7c6', |
|||
'upload_date': '20151128', |
|||
'timestamp': 1448697198, |
|||
'duration': 2119, |
|||
}, |
|||
'params': { |
|||
# rtmp download |
|||
'skip_download': True, |
|||
}, |
|||
} |
|||
|
|||
def _real_extract(self, url): |
|||
video_id = self._match_id(url) |
|||
video_data = self._call_api('video', video_id) |
|||
return self._extract_video_info(video_data) |
|||
|
|||
|
|||
class SkyNewsArabiaArticleIE(SkyNewArabiaBaseIE): |
|||
IE_NAME = 'skynewsarabia:video' |
|||
_VALID_URL = r'https?://(?:www\.)?skynewsarabia\.com/web/article/(?P<id>[0-9]+)' |
|||
_TESTS = [{ |
|||
'url': 'http://www.skynewsarabia.com/web/article/794549/%D8%A7%D9%94%D8%AD%D8%AF%D8%A7%D8%AB-%D8%A7%D9%84%D8%B4%D8%B1%D9%82-%D8%A7%D9%84%D8%A7%D9%94%D9%88%D8%B3%D8%B7-%D8%AE%D8%B1%D9%8A%D8%B7%D8%A9-%D8%A7%D9%84%D8%A7%D9%94%D9%84%D8%B9%D8%A7%D8%A8-%D8%A7%D9%84%D8%B0%D9%83%D9%8A%D8%A9', |
|||
'info_dict': { |
|||
'id': '794549', |
|||
'ext': 'flv', |
|||
'title': 'بالفيديو.. ألعاب ذكية تحاكي واقع المنطقة', |
|||
'description': 'md5:0c373d29919a851e080ee4edd0c5d97f', |
|||
'upload_date': '20151126', |
|||
'timestamp': 1448559336, |
|||
'duration': 281.6, |
|||
}, |
|||
'params': { |
|||
# rtmp download |
|||
'skip_download': True, |
|||
}, |
|||
}, { |
|||
'url': 'http://www.skynewsarabia.com/web/article/794844/%D8%A7%D8%B3%D8%AA%D9%87%D8%AF%D8%A7%D9%81-%D9%82%D9%88%D8%A7%D8%B1%D8%A8-%D8%A7%D9%94%D8%B3%D9%84%D8%AD%D8%A9-%D9%84%D9%85%D9%8A%D9%84%D9%8A%D8%B4%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D9%88%D8%AB%D9%8A-%D9%88%D8%B5%D8%A7%D9%84%D8%AD', |
|||
'info_dict': { |
|||
'id': '794844', |
|||
'title': 'إحباط تهريب أسلحة لميليشيات الحوثي وصالح بجنوب اليمن', |
|||
'description': 'md5:5c927b8b2e805796e7f693538d96fc7e', |
|||
}, |
|||
'playlist_mincount': 2, |
|||
}] |
|||
|
|||
def _real_extract(self, url): |
|||
article_id = self._match_id(url) |
|||
article_data = self._call_api('article', article_id) |
|||
media_asset = article_data['mediaAsset'] |
|||
if media_asset['type'] == 'VIDEO': |
|||
topic = article_data.get('topicTitle') |
|||
return { |
|||
'_type': 'url_transparent', |
|||
'url': 'limelight:media:%s' % self._get_limelight_media_id(media_asset['videoUrl'][0]['url']), |
|||
'id': article_id, |
|||
'title': article_data['headline'], |
|||
'description': article_data.get('summary'), |
|||
'thumbnail': self._get_image_url(media_asset['imageUrl']), |
|||
'timestamp': parse_iso8601(article_data.get('date')), |
|||
'tags': article_data.get('tags', []), |
|||
'categories': [topic] if topic else [], |
|||
'webpage_url': url, |
|||
'ie_key': 'LimelightMedia', |
|||
} |
|||
entries = [self._extract_video_info(item) for item in article_data.get('inlineItems', []) if item['type'] == 'VIDEO'] |
|||
return self.playlist_result(entries, article_id, article_data['headline'], article_data.get('summary')) |
Write
Preview
Loading…
Cancel
Save