mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[brightcove:legacy] improve format extraction and extract uploader_id, duration and timestamp
This commit is contained in:
		| @@ -46,6 +46,9 @@ class BrightcoveLegacyIE(InfoExtractor): | ||||
|                 'title': 'Xavier Sala i Martín: “Un banc que no presta és un banc zombi que no serveix per a res”', | ||||
|                 'uploader': '8TV', | ||||
|                 'description': 'md5:a950cc4285c43e44d763d036710cd9cd', | ||||
|                 'timestamp': 1368213670, | ||||
|                 'upload_date': '20130510', | ||||
|                 'uploader_id': 1589608506001, | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
| @@ -57,6 +60,9 @@ class BrightcoveLegacyIE(InfoExtractor): | ||||
|                 'title': 'JVMLS 2012: Arrays 2.0 - Opportunities and Challenges', | ||||
|                 'description': 'John Rose speaks at the JVM Language Summit, August 1, 2012.', | ||||
|                 'uploader': 'Oracle', | ||||
|                 'timestamp': 1344975024, | ||||
|                 'upload_date': '20120814', | ||||
|                 'uploader_id': 1460825906, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
| @@ -68,6 +74,9 @@ class BrightcoveLegacyIE(InfoExtractor): | ||||
|                 'title': 'This Bracelet Acts as a Personal Thermostat', | ||||
|                 'description': 'md5:547b78c64f4112766ccf4e151c20b6a0', | ||||
|                 'uploader': 'Mashable', | ||||
|                 'timestamp': 1382041798, | ||||
|                 'upload_date': '20131017', | ||||
|                 'uploader_id': 1130468786001, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
| @@ -85,14 +94,17 @@ class BrightcoveLegacyIE(InfoExtractor): | ||||
|         { | ||||
|             # test flv videos served by akamaihd.net | ||||
|             # From http://www.redbull.com/en/bike/stories/1331655643987/replay-uci-dh-world-cup-2014-from-fort-william | ||||
|             'url': 'http://c.brightcove.com/services/viewer/htmlFederated?%40videoPlayer=ref%3ABC2996102916001&linkBaseURL=http%3A%2F%2Fwww.redbull.com%2Fen%2Fbike%2Fvideos%2F1331655630249%2Freplay-uci-fort-william-2014-dh&playerKey=AQ%7E%7E%2CAAAApYJ7UqE%7E%2Cxqr_zXk0I-zzNndy8NlHogrCb5QdyZRf&playerID=1398061561001#__youtubedl_smuggle=%7B%22Referer%22%3A+%22http%3A%2F%2Fwww.redbull.com%2Fen%2Fbike%2Fstories%2F1331655643987%2Freplay-uci-dh-world-cup-2014-from-fort-william%22%7D', | ||||
|             'url': 'http://c.brightcove.com/services/viewer/htmlFederated?%40videoPlayer=ref%3Aevent-stream-356&linkBaseURL=http%3A%2F%2Fwww.redbull.com%2Fen%2Fbike%2Fvideos%2F1331655630249%2Freplay-uci-fort-william-2014-dh&playerKey=AQ%7E%7E%2CAAAApYJ7UqE%7E%2Cxqr_zXk0I-zzNndy8NlHogrCb5QdyZRf&playerID=1398061561001#__youtubedl_smuggle=%7B%22Referer%22%3A+%22http%3A%2F%2Fwww.redbull.com%2Fen%2Fbike%2Fstories%2F1331655643987%2Freplay-uci-dh-world-cup-2014-from-fort-william%22%7D', | ||||
|             # The md5 checksum changes on each download | ||||
|             'info_dict': { | ||||
|                 'id': '2996102916001', | ||||
|                 'id': '3750436379001', | ||||
|                 'ext': 'flv', | ||||
|                 'title': 'UCI MTB World Cup 2014: Fort William, UK - Downhill Finals', | ||||
|                 'uploader': 'Red Bull TV', | ||||
|                 'uploader': 'RBTV Old (do not use)', | ||||
|                 'description': 'UCI MTB World Cup 2014: Fort William, UK - Downhill Finals', | ||||
|                 'timestamp': 1409122195, | ||||
|                 'upload_date': '20140827', | ||||
|                 'uploader_id': 710858724001, | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
| @@ -106,6 +118,12 @@ class BrightcoveLegacyIE(InfoExtractor): | ||||
|             'playlist_mincount': 7, | ||||
|         }, | ||||
|     ] | ||||
|     FLV_VCODECS = { | ||||
|         1: 'SORENSON', | ||||
|         2: 'ON2', | ||||
|         3: 'H264', | ||||
|         4: 'VP8', | ||||
|     } | ||||
|  | ||||
|     @classmethod | ||||
|     def _build_brighcove_url(cls, object_str): | ||||
| @@ -295,6 +313,9 @@ class BrightcoveLegacyIE(InfoExtractor): | ||||
|             'description': video_info.get('shortDescription'), | ||||
|             'thumbnail': video_info.get('videoStillURL') or video_info.get('thumbnailURL'), | ||||
|             'uploader': video_info.get('publisherName'), | ||||
|             'uploader_id': video_info.get('publisherId'), | ||||
|             'duration': float_or_none(video_info.get('length'), 1000), | ||||
|             'timestamp': int_or_none(video_info.get('creationDate'), 1000), | ||||
|         } | ||||
|  | ||||
|         renditions = video_info.get('renditions', []) + video_info.get('IOSRenditions', []) | ||||
| @@ -318,19 +339,30 @@ class BrightcoveLegacyIE(InfoExtractor): | ||||
|                         ext = 'flv' | ||||
|                 if ext is None: | ||||
|                     ext = determine_ext(url) | ||||
|                 size = rend.get('size') | ||||
|                 tbr = int_or_none(rend.get('encodingRate'), 1000), | ||||
|                 a_format = { | ||||
|                     'format_id': 'http%s' % ('-%s' % tbr if tbr else ''), | ||||
|                     'url': url, | ||||
|                     'ext': ext, | ||||
|                     'height': rend.get('frameHeight'), | ||||
|                     'width': rend.get('frameWidth'), | ||||
|                     'filesize': size if size != 0 else None, | ||||
|                     'filesize': int_or_none(rend.get('size')) or None, | ||||
|                     'tbr': tbr, | ||||
|                 } | ||||
|                 if rend.get('audioOnly'): | ||||
|                     a_format.update({ | ||||
|                         'vcodec': 'none', | ||||
|                     }) | ||||
|                 else: | ||||
|                     a_format.update({ | ||||
|                         'height': int_or_none(rend.get('frameHeight')), | ||||
|                         'width': int_or_none(rend.get('frameWidth')), | ||||
|                         'vcodec': rend.get('videoCodec'), | ||||
|                     }) | ||||
|  | ||||
|                 # m3u8 manifests with remote == false are media playlists | ||||
|                 # Not calling _extract_m3u8_formats here to save network traffic | ||||
|                 if ext == 'm3u8': | ||||
|                     a_format.update({ | ||||
|                         'format_id': 'hls%s' % ('-%s' % tbr if tbr else ''), | ||||
|                         'ext': 'mp4', | ||||
|                         'protocol': 'm3u8', | ||||
|                     }) | ||||
| @@ -341,6 +373,8 @@ class BrightcoveLegacyIE(InfoExtractor): | ||||
|         elif video_info.get('FLVFullLengthURL') is not None: | ||||
|             info.update({ | ||||
|                 'url': video_info['FLVFullLengthURL'], | ||||
|                 'vcodec': self.FLV_VCODECS.get(video_info.get('FLVFullCodec')), | ||||
|                 'filesize': int_or_none(video_info.get('FLVFullSize')), | ||||
|             }) | ||||
|  | ||||
|         if self._downloader.params.get('include_ads', False): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user