[viki] Add support for youtube externals
This commit is contained in:
		
							parent
							
								
									1a83c731bd
								
							
						
					
					
						commit
						ac20d95f97
					
				@ -120,6 +120,23 @@ class VikiIE(VikiBaseIE):
 | 
				
			|||||||
            'like_count': int,
 | 
					            'like_count': int,
 | 
				
			||||||
            'age_limit': 13,
 | 
					            'age_limit': 13,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }, {
 | 
				
			||||||
 | 
					        # youtube external
 | 
				
			||||||
 | 
					        'url': 'http://www.viki.com/videos/50562v-poor-nastya-complete-episode-1',
 | 
				
			||||||
 | 
					        'md5': '216d1afdc0c64d1febc1e9f2bd4b864b',
 | 
				
			||||||
 | 
					        'info_dict': {
 | 
				
			||||||
 | 
					            'id': '50562v',
 | 
				
			||||||
 | 
					            'ext': 'mp4',
 | 
				
			||||||
 | 
					            'title': 'Poor Nastya [COMPLETE] - Episode 1',
 | 
				
			||||||
 | 
					            'description': '',
 | 
				
			||||||
 | 
					            'duration': 607,
 | 
				
			||||||
 | 
					            'timestamp': 1274949505,
 | 
				
			||||||
 | 
					            'upload_date': '20101213',
 | 
				
			||||||
 | 
					            'uploader': 'ad14065n',
 | 
				
			||||||
 | 
					            'uploader_id': 'ad14065n',
 | 
				
			||||||
 | 
					            'like_count': int,
 | 
				
			||||||
 | 
					            'age_limit': 13,
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }, {
 | 
					    }, {
 | 
				
			||||||
        'url': 'http://www.viki.com/player/44699v',
 | 
					        'url': 'http://www.viki.com/player/44699v',
 | 
				
			||||||
        'only_matching': True,
 | 
					        'only_matching': True,
 | 
				
			||||||
@ -128,26 +145,6 @@ class VikiIE(VikiBaseIE):
 | 
				
			|||||||
    def _real_extract(self, url):
 | 
					    def _real_extract(self, url):
 | 
				
			||||||
        video_id = self._match_id(url)
 | 
					        video_id = self._match_id(url)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        streams = self._call_api(
 | 
					 | 
				
			||||||
            'videos/%s/streams.json' % video_id, video_id,
 | 
					 | 
				
			||||||
            'Downloading video streams JSON')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        formats = []
 | 
					 | 
				
			||||||
        for format_id, stream_dict in streams.items():
 | 
					 | 
				
			||||||
            height = self._search_regex(
 | 
					 | 
				
			||||||
                r'^(\d+)[pP]$', format_id, 'height', default=None)
 | 
					 | 
				
			||||||
            for protocol, format_dict in stream_dict.items():
 | 
					 | 
				
			||||||
                if format_id == 'm3u8':
 | 
					 | 
				
			||||||
                    formats = self._extract_m3u8_formats(
 | 
					 | 
				
			||||||
                        format_dict['url'], video_id, 'mp4', m3u8_id='m3u8-%s' % protocol)
 | 
					 | 
				
			||||||
                else:
 | 
					 | 
				
			||||||
                    formats.append({
 | 
					 | 
				
			||||||
                        'url': format_dict['url'],
 | 
					 | 
				
			||||||
                        'format_id': '%s-%s' % (format_id, protocol),
 | 
					 | 
				
			||||||
                        'height': height,
 | 
					 | 
				
			||||||
                    })
 | 
					 | 
				
			||||||
        self._sort_formats(formats)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        video = self._call_api(
 | 
					        video = self._call_api(
 | 
				
			||||||
            'videos/%s.json' % video_id, video_id, 'Downloading video JSON')
 | 
					            'videos/%s.json' % video_id, video_id, 'Downloading video JSON')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -186,7 +183,7 @@ class VikiIE(VikiBaseIE):
 | 
				
			|||||||
                    'videos/%s/subtitles/%s.%s' % (video_id, subtitle_lang, subtitles_format)),
 | 
					                    'videos/%s/subtitles/%s.%s' % (video_id, subtitle_lang, subtitles_format)),
 | 
				
			||||||
            } for subtitles_format in ('srt', 'vtt')]
 | 
					            } for subtitles_format in ('srt', 'vtt')]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return {
 | 
					        result = {
 | 
				
			||||||
            'id': video_id,
 | 
					            'id': video_id,
 | 
				
			||||||
            'title': title,
 | 
					            'title': title,
 | 
				
			||||||
            'description': description,
 | 
					            'description': description,
 | 
				
			||||||
@ -196,10 +193,39 @@ class VikiIE(VikiBaseIE):
 | 
				
			|||||||
            'like_count': like_count,
 | 
					            'like_count': like_count,
 | 
				
			||||||
            'age_limit': age_limit,
 | 
					            'age_limit': age_limit,
 | 
				
			||||||
            'thumbnails': thumbnails,
 | 
					            'thumbnails': thumbnails,
 | 
				
			||||||
            'formats': formats,
 | 
					 | 
				
			||||||
            'subtitles': subtitles,
 | 
					            'subtitles': subtitles,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        streams = self._call_api(
 | 
				
			||||||
 | 
					            'videos/%s/streams.json' % video_id, video_id,
 | 
				
			||||||
 | 
					            'Downloading video streams JSON')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if 'external' in streams:
 | 
				
			||||||
 | 
					            result.update({
 | 
				
			||||||
 | 
					                '_type': 'url_transparent',
 | 
				
			||||||
 | 
					                'url': streams['external']['url'],
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					            return result
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        formats = []
 | 
				
			||||||
 | 
					        for format_id, stream_dict in streams.items():
 | 
				
			||||||
 | 
					            height = self._search_regex(
 | 
				
			||||||
 | 
					                r'^(\d+)[pP]$', format_id, 'height', default=None)
 | 
				
			||||||
 | 
					            for protocol, format_dict in stream_dict.items():
 | 
				
			||||||
 | 
					                if format_id == 'm3u8':
 | 
				
			||||||
 | 
					                    formats = self._extract_m3u8_formats(
 | 
				
			||||||
 | 
					                        format_dict['url'], video_id, 'mp4', m3u8_id='m3u8-%s' % protocol)
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    formats.append({
 | 
				
			||||||
 | 
					                        'url': format_dict['url'],
 | 
				
			||||||
 | 
					                        'format_id': '%s-%s' % (format_id, protocol),
 | 
				
			||||||
 | 
					                        'height': height,
 | 
				
			||||||
 | 
					                    })
 | 
				
			||||||
 | 
					        self._sort_formats(formats)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        result['formats'] = formats
 | 
				
			||||||
 | 
					        return result
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class VikiChannelIE(InfoExtractor):
 | 
					class VikiChannelIE(InfoExtractor):
 | 
				
			||||||
    IE_NAME = 'viki:channel'
 | 
					    IE_NAME = 'viki:channel'
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user