remitamine
8 years ago
2 changed files with 117 additions and 0 deletions
Split View
Diff Options
@ -0,0 +1,113 @@ |
|||
# coding: utf-8 |
|||
from __future__ import unicode_literals |
|||
|
|||
import re |
|||
|
|||
from .common import InfoExtractor |
|||
from ..utils import js_to_json |
|||
|
|||
|
|||
class CBCIE(InfoExtractor): |
|||
_VALID_URL = r'https?://(?:www\.)?cbc\.ca/(?:[^/]+/)+(?P<id>[^/?#]+)' |
|||
_TESTS = [{ |
|||
# with mediaId |
|||
'url': 'http://www.cbc.ca/22minutes/videos/clips-season-23/don-cherry-play-offs', |
|||
'info_dict': { |
|||
'id': '2682904050', |
|||
'ext': 'flv', |
|||
'title': 'Don Cherry – All-Stars', |
|||
'description': 'Don Cherry has a bee in his bonnet about AHL player John Scott because that guy’s got heart.', |
|||
'timestamp': 1454475540, |
|||
'upload_date': '20160203', |
|||
}, |
|||
'params': { |
|||
# rtmp download |
|||
'skip_download': True, |
|||
}, |
|||
}, { |
|||
# with clipId |
|||
'url': 'http://www.cbc.ca/archives/entry/1978-robin-williams-freestyles-on-90-minutes-live', |
|||
'info_dict': { |
|||
'id': '2487345465', |
|||
'ext': 'flv', |
|||
'title': 'Robin Williams freestyles on 90 Minutes Live', |
|||
'description': 'Wacky American comedian Robin Williams shows off his infamous "freestyle" comedic talents while being interviewed on CBC\'s 90 Minutes Live.', |
|||
'upload_date': '19700101', |
|||
}, |
|||
'params': { |
|||
# rtmp download |
|||
'skip_download': True, |
|||
}, |
|||
}, { |
|||
# multiple iframes |
|||
'url': 'http://www.cbc.ca/natureofthings/blog/birds-eye-view-from-vancouvers-burrard-street-bridge-how-we-got-the-shot', |
|||
'playlist': [{ |
|||
'info_dict': { |
|||
'id': '2680832926', |
|||
'ext': 'flv', |
|||
'title': 'An Eagle\'s-Eye View Off Burrard Bridge', |
|||
'description': 'Hercules the eagle flies from Vancouver\'s Burrard Bridge down to a nearby park with a mini-camera strapped to his back.', |
|||
'upload_date': '19700101', |
|||
}, |
|||
}, { |
|||
'info_dict': { |
|||
'id': '2658915080', |
|||
'ext': 'flv', |
|||
'title': 'Fly like an eagle!', |
|||
'description': 'Eagle equipped with a mini camera flies from the world\'s tallest tower', |
|||
'upload_date': '19700101', |
|||
}, |
|||
}], |
|||
'params': { |
|||
# rtmp download |
|||
'skip_download': True, |
|||
}, |
|||
}] |
|||
|
|||
@classmethod |
|||
def suitable(cls, url): |
|||
return False if CBCPlayerIE.suitable(url) else super(CBCIE, cls).suitable(url) |
|||
|
|||
def _real_extract(self, url): |
|||
display_id = self._match_id(url) |
|||
webpage = self._download_webpage(url, display_id) |
|||
player_init = self._search_regex( |
|||
r'CBC\.APP\.Caffeine\.initInstance\(({.+?})\);', webpage, 'player init', |
|||
default=None) |
|||
if player_init: |
|||
player_info = self._parse_json(player_init, display_id, js_to_json) |
|||
media_id = player_info.get('mediaId') |
|||
if not media_id: |
|||
clip_id = player_info['clipId'] |
|||
media_id = self._download_json( |
|||
'http://feed.theplatform.com/f/h9dtGB/punlNGjMlc1F?fields=id&byContent=byReleases%3DbyId%253D' + clip_id, |
|||
clip_id)['entries'][0]['id'].split('/')[-1] |
|||
return self.url_result('cbcplayer:%s' % media_id, 'CBCPlayer', media_id) |
|||
else: |
|||
entries = [self.url_result('cbcplayer:%s' % media_id, 'CBCPlayer', media_id) for media_id in re.findall(r'<iframe[^>]+src="[^"]+?mediaId=(\d+)"', webpage)] |
|||
return self.playlist_result(entries) |
|||
|
|||
|
|||
class CBCPlayerIE(InfoExtractor): |
|||
_VALID_URL = r'(?:cbcplayer:|https?://(?:www\.)?cbc\.ca/(?:player/play/|i/caffeine/syndicate/\?mediaId=))(?P<id>\d+)' |
|||
_TEST = { |
|||
'url': 'http://www.cbc.ca/player/play/2683190193', |
|||
'info_dict': { |
|||
'id': '2683190193', |
|||
'ext': 'flv', |
|||
'title': 'Gerry Runs a Sweat Shop', |
|||
'description': 'md5:b457e1c01e8ff408d9d801c1c2cd29b0', |
|||
'timestamp': 1455067800, |
|||
'upload_date': '20160210', |
|||
}, |
|||
'params': { |
|||
# rtmp download |
|||
'skip_download': True, |
|||
}, |
|||
} |
|||
|
|||
def _real_extract(self, url): |
|||
video_id = self._match_id(url) |
|||
return self.url_result( |
|||
'http://feed.theplatform.com/f/ExhSPC/vms_5akSXx4Ng_Zn?byGuid=%s' % video_id, |
|||
'ThePlatformFeed', video_id) |
Write
Preview
Loading…
Cancel
Save