projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[youjizz] Fix extraction. The site has moved to HTML5
[youtube-dl]
/
youtube_dl
/
extractor
/
viki.py
diff --git
a/youtube_dl/extractor/viki.py
b/youtube_dl/extractor/viki.py
index 9a1c377a413aaf2b05c538703be5a1867daf84d5..4351ac4571935fa3c3ace915c0b97f20e67ec18d 100644
(file)
--- a/
youtube_dl/extractor/viki.py
+++ b/
youtube_dl/extractor/viki.py
@@
-101,10
+101,13
@@
class VikiBaseIE(InfoExtractor):
self.report_warning('Unable to get session token, login has probably failed')
@staticmethod
self.report_warning('Unable to get session token, login has probably failed')
@staticmethod
- def dict_selection(dict_obj, preferred_key):
+ def dict_selection(dict_obj, preferred_key
, allow_fallback=True
):
if preferred_key in dict_obj:
return dict_obj.get(preferred_key)
if preferred_key in dict_obj:
return dict_obj.get(preferred_key)
+ if not allow_fallback:
+ return
+
filtered_dict = list(filter(None, [dict_obj.get(k) for k in dict_obj.keys()]))
return filtered_dict[0] if filtered_dict else None
filtered_dict = list(filter(None, [dict_obj.get(k) for k in dict_obj.keys()]))
return filtered_dict[0] if filtered_dict else None
@@
-153,20
+156,17
@@
class VikiIE(VikiBaseIE):
'like_count': int,
'age_limit': 13,
},
'like_count': int,
'age_limit': 13,
},
- 'params': {
- # m3u8 download
- 'skip_download': True,
- }
+ 'skip': 'Blocked in the US',
}, {
# episode
'url': 'http://www.viki.com/videos/44699v-boys-over-flowers-episode-1',
}, {
# episode
'url': 'http://www.viki.com/videos/44699v-boys-over-flowers-episode-1',
- 'md5': '
190f3ef426005ba3a080a63325955bc3
',
+ 'md5': '
5fa476a902e902783ac7a4d615cdbc7a
',
'info_dict': {
'id': '44699v',
'ext': 'mp4',
'title': 'Boys Over Flowers - Episode 1',
'info_dict': {
'id': '44699v',
'ext': 'mp4',
'title': 'Boys Over Flowers - Episode 1',
- 'description': 'md5:
52617e4f729c7d03bfd4bcbbb6e946f2
',
- 'duration': 4
155
,
+ 'description': 'md5:
b89cf50038b480b88b5b3c93589a9076
',
+ 'duration': 4
204
,
'timestamp': 1270496524,
'upload_date': '20100405',
'uploader': 'group8',
'timestamp': 1270496524,
'upload_date': '20100405',
'uploader': 'group8',
@@
-176,13
+176,13
@@
class VikiIE(VikiBaseIE):
}, {
# youtube external
'url': 'http://www.viki.com/videos/50562v-poor-nastya-complete-episode-1',
}, {
# youtube external
'url': 'http://www.viki.com/videos/50562v-poor-nastya-complete-episode-1',
- 'md5': '
216d1afdc0c64d1febc1e9f2bd4b864b
',
+ 'md5': '
63f8600c1da6f01b7640eee7eca4f1da
',
'info_dict': {
'id': '50562v',
'info_dict': {
'id': '50562v',
- 'ext': '
mp4
',
+ 'ext': '
webm
',
'title': 'Poor Nastya [COMPLETE] - Episode 1',
'description': '',
'title': 'Poor Nastya [COMPLETE] - Episode 1',
'description': '',
- 'duration': 60
7
,
+ 'duration': 60
6
,
'timestamp': 1274949505,
'upload_date': '20101213',
'uploader': 'ad14065n',
'timestamp': 1274949505,
'upload_date': '20101213',
'uploader': 'ad14065n',
@@
-217,7
+217,7
@@
class VikiIE(VikiBaseIE):
self._check_errors(video)
self._check_errors(video)
- title = self.dict_selection(video.get('titles', {}), 'en')
+ title = self.dict_selection(video.get('titles', {}), 'en'
, allow_fallback=False
)
if not title:
title = 'Episode %d' % video.get('number') if video.get('type') == 'episode' else video.get('id') or video_id
container_titles = video.get('container', {}).get('titles', {})
if not title:
title = 'Episode %d' % video.get('number') if video.get('type') == 'episode' else video.get('id') or video_id
container_titles = video.get('container', {}).get('titles', {})
@@
-278,10
+278,15
@@
class VikiIE(VikiBaseIE):
for protocol, format_dict in stream_dict.items():
if format_id == 'm3u8':
m3u8_formats = self._extract_m3u8_formats(
for protocol, format_dict in stream_dict.items():
if format_id == 'm3u8':
m3u8_formats = self._extract_m3u8_formats(
- format_dict['url'], video_id, 'mp4', 'm3u8_native',
+ format_dict['url'], video_id, 'mp4',
+ entry_protocol='m3u8_native', preference=-1,
m3u8_id='m3u8-%s' % protocol, fatal=False)
m3u8_id='m3u8-%s' % protocol, fatal=False)
- if m3u8_formats:
- formats.extend(m3u8_formats)
+ # Despite CODECS metadata in m3u8 all video-only formats
+ # are actually video+audio
+ for f in m3u8_formats:
+ if f.get('acodec') == 'none' and f.get('vcodec') != 'none':
+ f['acodec'] = None
+ formats.extend(m3u8_formats)
else:
formats.append({
'url': format_dict['url'],
else:
formats.append({
'url': format_dict['url'],
@@
-304,7
+309,7
@@
class VikiChannelIE(VikiBaseIE):
'title': 'Boys Over Flowers',
'description': 'md5:ecd3cff47967fe193cff37c0bec52790',
},
'title': 'Boys Over Flowers',
'description': 'md5:ecd3cff47967fe193cff37c0bec52790',
},
- 'playlist_
count': 70
,
+ 'playlist_
mincount': 71
,
}, {
'url': 'http://www.viki.com/tv/1354c-poor-nastya-complete',
'info_dict': {
}, {
'url': 'http://www.viki.com/tv/1354c-poor-nastya-complete',
'info_dict': {