From 78b9a616cc9a02a7eddaa096b9d7c4fecb575e60 Mon Sep 17 00:00:00 2001 From: kurumigi <83115+kurumigi@users.noreply.github.com> Date: Tue, 16 Feb 2021 19:49:37 +0900 Subject: [PATCH] #90 [niconico] Extract `channel` and `channel_id` (Closes #77) Authored by kurumigi --- youtube_dlc/extractor/niconico.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/youtube_dlc/extractor/niconico.py b/youtube_dlc/extractor/niconico.py index 632b9efcc..38370b346 100644 --- a/youtube_dlc/extractor/niconico.py +++ b/youtube_dlc/extractor/niconico.py @@ -546,11 +546,29 @@ def get_video_info_xml(items): webpage_url = get_video_info_web('watch_url') or url + # for channel movie and community movie + channel_id = try_get( + api_data, + (lambda x: x['channel']['globalId'], + lambda x: x['community']['globalId'])) + channel = try_get( + api_data, + (lambda x: x['channel']['name'], + lambda x: x['community']['name'])) + # 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_web(['ch_id', 'user_id']) or owner.get('id') - uploader = get_video_info_web(['ch_name', 'user_nickname']) or owner.get('nickname') + uploader_id = ( + get_video_info_web(['ch_id', 'user_id']) + or owner.get('id') + or channel_id + ) + uploader = ( + get_video_info_web(['ch_name', 'user_nickname']) + or owner.get('nickname') + or channel + ) return { 'id': video_id, @@ -561,6 +579,8 @@ def get_video_info_xml(items): 'uploader': uploader, 'timestamp': timestamp, 'uploader_id': uploader_id, + 'channel': channel, + 'channel_id': channel_id, 'view_count': view_count, 'comment_count': comment_count, 'duration': duration,