[niconico] Improve uploader metadata extraction robustness (closes #14135)

This commit is contained in:
Pawit Pornkitprasan 2017-10-15 10:40:57 +07:00 committed by Sergey M
parent 7e721e35da
commit aaab8c5e71

View File

@ -40,7 +40,7 @@ class NiconicoIE(InfoExtractor):
'uploader': 'takuya0301', 'uploader': 'takuya0301',
'uploader_id': '2698420', 'uploader_id': '2698420',
'upload_date': '20131123', 'upload_date': '20131123',
'timestamp': 1385182762, 'timestamp': int, # timestamp is unstable
'description': '(c) copyright 2008, Blender Foundation / www.bigbuckbunny.org', 'description': '(c) copyright 2008, Blender Foundation / www.bigbuckbunny.org',
'duration': 33, 'duration': 33,
'view_count': int, 'view_count': int,
@ -115,8 +115,8 @@ class NiconicoIE(InfoExtractor):
'skip': 'Requires an account', 'skip': 'Requires an account',
}, { }, {
# "New" HTML5 video # "New" HTML5 video
# md5 is unstable
'url': 'http://www.nicovideo.jp/watch/sm31464864', 'url': 'http://www.nicovideo.jp/watch/sm31464864',
'md5': '351647b4917660986dc0fa8864085135',
'info_dict': { 'info_dict': {
'id': 'sm31464864', 'id': 'sm31464864',
'ext': 'mp4', 'ext': 'mp4',
@ -124,7 +124,7 @@ class NiconicoIE(InfoExtractor):
'description': 'md5:e52974af9a96e739196b2c1ca72b5feb', 'description': 'md5:e52974af9a96e739196b2c1ca72b5feb',
'timestamp': 1498514060, 'timestamp': 1498514060,
'upload_date': '20170626', 'upload_date': '20170626',
'uploader': 'ゲス', 'uploader': 'ゲス',
'uploader_id': '40826363', 'uploader_id': '40826363',
'thumbnail': r're:https?://.*', 'thumbnail': r're:https?://.*',
'duration': 198, 'duration': 198,
@ -132,6 +132,25 @@ class NiconicoIE(InfoExtractor):
'comment_count': int, 'comment_count': int,
}, },
'skip': 'Requires an account', 'skip': 'Requires an account',
}, {
# Video without owner
'url': 'http://www.nicovideo.jp/watch/sm18238488',
'md5': 'd265680a1f92bdcbbd2a507fc9e78a9e',
'info_dict': {
'id': 'sm18238488',
'ext': 'mp4',
'title': '【実写版】ミュータントタートルズ',
'description': 'md5:15df8988e47a86f9e978af2064bf6d8e',
'timestamp': 1341160408,
'upload_date': '20120701',
'uploader': None,
'uploader_id': None,
'thumbnail': r're:https?://.*',
'duration': 5271,
'view_count': int,
'comment_count': int,
},
'skip': 'Requires an account',
}, { }, {
'url': 'http://sp.nicovideo.jp/watch/sm28964488?ss_pos=1&cp_in=wt_tg', 'url': 'http://sp.nicovideo.jp/watch/sm28964488?ss_pos=1&cp_in=wt_tg',
'only_matching': True, 'only_matching': True,
@ -395,7 +414,9 @@ def get_video_info(items):
webpage_url = get_video_info('watch_url') or url webpage_url = get_video_info('watch_url') or url
owner = api_data.get('owner', {}) # Note: cannot use api_data.get('owner', {}) because owner may be set to "null"
# in the JSON, which will cause None to be returned instead of {}.
owner = try_get(api_data, lambda x: x.get('owner'), dict) or {}
uploader_id = get_video_info(['ch_id', 'user_id']) or owner.get('id') uploader_id = get_video_info(['ch_id', 'user_id']) or owner.get('id')
uploader = get_video_info(['ch_name', 'user_nickname']) or owner.get('nickname') uploader = get_video_info(['ch_name', 'user_nickname']) or owner.get('nickname')