[funnyordie] Copy formats' metadata from hls and sort formats
This commit is contained in:
		
							parent
							
								
									4eece8ba57
								
							
						
					
					
						commit
						6334794f2a
					
				| @ -11,7 +11,7 @@ class FunnyOrDieIE(InfoExtractor): | |||||||
|     _VALID_URL = r'https?://(?:www\.)?funnyordie\.com/(?P<type>embed|articles|videos)/(?P<id>[0-9a-f]+)(?:$|[?#/])' |     _VALID_URL = r'https?://(?:www\.)?funnyordie\.com/(?P<type>embed|articles|videos)/(?P<id>[0-9a-f]+)(?:$|[?#/])' | ||||||
|     _TESTS = [{ |     _TESTS = [{ | ||||||
|         'url': 'http://www.funnyordie.com/videos/0732f586d7/heart-shaped-box-literal-video-version', |         'url': 'http://www.funnyordie.com/videos/0732f586d7/heart-shaped-box-literal-video-version', | ||||||
|         'md5': 'c26b9ee0e1ca138c12071f59572ba9c7', |         'md5': 'bcd81e0c4f26189ee09be362ad6e6ba9', | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': '0732f586d7', |             'id': '0732f586d7', | ||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
| @ -28,6 +28,9 @@ class FunnyOrDieIE(InfoExtractor): | |||||||
|             'description': 'Please use this to sell something.  www.jonlajoie.com', |             'description': 'Please use this to sell something.  www.jonlajoie.com', | ||||||
|             'thumbnail': 're:^http:.*\.jpg$', |             'thumbnail': 're:^http:.*\.jpg$', | ||||||
|         }, |         }, | ||||||
|  |         'params': { | ||||||
|  |             'skip_download': True, | ||||||
|  |         }, | ||||||
|     }, { |     }, { | ||||||
|         'url': 'http://www.funnyordie.com/articles/ebf5e34fc8/10-hours-of-walking-in-nyc-as-a-man', |         'url': 'http://www.funnyordie.com/articles/ebf5e34fc8/10-hours-of-walking-in-nyc-as-a-man', | ||||||
|         'only_matching': True, |         'only_matching': True, | ||||||
| @ -51,21 +54,45 @@ class FunnyOrDieIE(InfoExtractor): | |||||||
| 
 | 
 | ||||||
|         formats = [] |         formats = [] | ||||||
| 
 | 
 | ||||||
|  |         m3u8_formats = self._extract_m3u8_formats( | ||||||
|  |             m3u8_url, video_id, 'mp4', 'm3u8_native', | ||||||
|  |             m3u8_id='hls', fatal=False) | ||||||
|  |         source_formats = list(filter( | ||||||
|  |             lambda f: f.get('vcodec') != 'none' and f.get('resolution') != 'multiple', | ||||||
|  |             m3u8_formats)) | ||||||
|  | 
 | ||||||
|         bitrates = [int(bitrate) for bitrate in re.findall(r'[,/]v(\d+)(?=[,/])', m3u8_url)] |         bitrates = [int(bitrate) for bitrate in re.findall(r'[,/]v(\d+)(?=[,/])', m3u8_url)] | ||||||
|         bitrates.sort() |         bitrates.sort() | ||||||
| 
 | 
 | ||||||
|         for bitrate in bitrates: |         if source_formats: | ||||||
|             for link in links: |             self._sort_formats(source_formats) | ||||||
|                 formats.append({ | 
 | ||||||
|                     'url': self._proto_relative_url('%s%d.%s' % (link[0], bitrate, link[1])), |         for bitrate, f in zip(bitrates, source_formats or [{}] * len(bitrates)): | ||||||
|                     'format_id': '%s-%d' % (link[1], bitrate), |             for path, ext in links: | ||||||
|  |                 ff = f.copy() | ||||||
|  |                 if ff: | ||||||
|  |                     if ext != 'mp4': | ||||||
|  |                         ff = dict( | ||||||
|  |                             [(k, v) for k, v in ff.items() | ||||||
|  |                              if k in ('height', 'width', 'format_id')]) | ||||||
|  |                     ff.update({ | ||||||
|  |                         'format_id': ff['format_id'].replace('hls', ext), | ||||||
|  |                         'ext': ext, | ||||||
|  |                         'protocol': 'http', | ||||||
|  |                     }) | ||||||
|  |                 else: | ||||||
|  |                     ff.update({ | ||||||
|  |                         'format_id': '%s-%d' % (ext, bitrate), | ||||||
|                         'vbr': bitrate, |                         'vbr': bitrate, | ||||||
|                     }) |                     }) | ||||||
| 
 |                 ff['url'] = self._proto_relative_url( | ||||||
|  |                     '%s%d.%s' % (path, bitrate, ext)) | ||||||
|  |                 formats.append(ff) | ||||||
|         self._check_formats(formats, video_id) |         self._check_formats(formats, video_id) | ||||||
| 
 | 
 | ||||||
|         formats.extend(self._extract_m3u8_formats( |         formats.extend(m3u8_formats) | ||||||
|             m3u8_url, video_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False)) |         self._sort_formats( | ||||||
|  |             formats, field_preference=('height', 'width', 'tbr', 'format_id')) | ||||||
| 
 | 
 | ||||||
|         subtitles = {} |         subtitles = {} | ||||||
|         for src, src_lang in re.findall(r'<track kind="captions" src="([^"]+)" srclang="([^"]+)"', webpage): |         for src, src_lang in re.findall(r'<track kind="captions" src="([^"]+)" srclang="([^"]+)"', webpage): | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user