mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 10:47:08 -05: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