X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fustream.py;h=73b05ecab82a10a6c80360b0b980f285dfbb9c45;hb=b25f7533975d7463cc772e9d106802ef29252796;hp=3065c9f31c6e88496967a6a9c70774e498b753b6;hpb=5820c4a29ea3781c47f6249c179a081e28eeeb64;p=youtube-dl diff --git a/youtube_dl/extractor/ustream.py b/youtube_dl/extractor/ustream.py index 3065c9f31..73b05ecab 100644 --- a/youtube_dl/extractor/ustream.py +++ b/youtube_dl/extractor/ustream.py @@ -1,6 +1,5 @@ from __future__ import unicode_literals -import json import re from .common import InfoExtractor @@ -15,7 +14,7 @@ from ..utils import ( class UstreamIE(InfoExtractor): - _VALID_URL = r'https?://www\.ustream\.tv/(?Precorded|embed|embed/recorded)/(?P\d+)' + _VALID_URL = r'https?://www\.ustream\.tv/(?Precorded|embed|embed/recorded)/(?P\d+)' IE_NAME = 'ustream' _TESTS = [{ 'url': 'http://www.ustream.tv/recorded/20274954', @@ -23,8 +22,12 @@ class UstreamIE(InfoExtractor): 'info_dict': { 'id': '20274954', 'ext': 'flv', - 'uploader': 'Young Americans for Liberty', 'title': 'Young Americans for Liberty February 7, 2012 2:28 AM', + 'description': 'Young Americans for Liberty February 7, 2012 2:28 AM', + 'timestamp': 1328577035, + 'upload_date': '20120207', + 'uploader': 'yaliberty', + 'uploader_id': '6780869', }, }, { # From http://sportscanada.tv/canadagames/index.php/week2/figure-skating/444 @@ -36,27 +39,29 @@ class UstreamIE(InfoExtractor): 'ext': 'flv', 'title': '-CG11- Canada Games Figure Skating', 'uploader': 'sportscanadatv', - } + }, + 'skip': 'This Pro Broadcaster has chosen to remove this video from the ustream.tv site.', }] def _real_extract(self, url): m = re.match(self._VALID_URL, url) - video_id = m.group('videoID') + video_id = m.group('id') # some sites use this embed format (see: http://github.com/rg3/youtube-dl/issues/2990) if m.group('type') == 'embed/recorded': - video_id = m.group('videoID') + video_id = m.group('id') desktop_url = 'http://www.ustream.tv/recorded/' + video_id return self.url_result(desktop_url, 'Ustream') if m.group('type') == 'embed': - video_id = m.group('videoID') + video_id = m.group('id') webpage = self._download_webpage(url, video_id) desktop_video_id = self._html_search_regex( r'ContentVideoIds=\["([^"]*?)"\]', webpage, 'desktop_video_id') desktop_url = 'http://www.ustream.tv/recorded/' + desktop_video_id return self.url_result(desktop_url, 'Ustream') - params = self._download_json('https://api.ustream.tv/videos/' + video_id + '.json', video_id) + params = self._download_json( + 'https://api.ustream.tv/videos/%s.json' % video_id, video_id) error = params.get('error') if error: @@ -65,18 +70,20 @@ class UstreamIE(InfoExtractor): video = params['video'] + title = video['title'] + filesize = float_or_none(video.get('file_size')) + formats = [{ - 'id': format_id, + 'id': video_id, 'url': video_url, 'ext': format_id, + 'filesize': filesize, } for format_id, video_url in video['media_urls'].items()] self._sort_formats(formats) - title = video['title'] description = video.get('description') timestamp = int_or_none(video.get('created_at')) duration = float_or_none(video.get('length')) - filesize = float_or_none(video.get('file_size')) view_count = int_or_none(video.get('views')) uploader = video.get('owner', {}).get('username') @@ -94,7 +101,6 @@ class UstreamIE(InfoExtractor): 'thumbnails': thumbnails, 'timestamp': timestamp, 'duration': duration, - 'filesize': filesize, 'view_count': view_count, 'uploader': uploader, 'uploader_id': uploader_id,