From 6b6a6653a02da9a76b101ba6c4e05366d49ee034 Mon Sep 17 00:00:00 2001 From: James Taylor Date: Fri, 18 Dec 2020 12:55:12 -0800 Subject: Fix youtube mixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit They cannot be viewed on their own, so change url in items to go to the video+playlist instead Signed-off-by: Jesús --- youtube/yt_data_extract/common.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'youtube/yt_data_extract') diff --git a/youtube/yt_data_extract/common.py b/youtube/yt_data_extract/common.py index 683b1c6..1ec3dc3 100644 --- a/youtube/yt_data_extract/common.py +++ b/youtube/yt_data_extract/common.py @@ -226,6 +226,7 @@ def extract_item_info(item, additional_info={}): info['type'] = 'video' elif primary_type in ('playlist', 'radio', 'show'): info['type'] = 'playlist' + info['playlist_type'] = primary_type elif primary_type == 'channel': info['type'] = 'channel' elif type == 'videoWithContextRenderer': # stupid exception @@ -313,11 +314,15 @@ def extract_item_info(item, additional_info={}): elif primary_type in ('playlist', 'radio'): info['id'] = item.get('playlistId') info['video_count'] = extract_int(item.get('videoCount')) + info['first_video_id'] = deep_get(item, 'navigationEndpoint', + 'watchEndpoint', 'videoId') elif primary_type == 'channel': info['id'] = item.get('channelId') info['approx_subscriber_count'] = extract_approx_int(item.get('subscriberCountText')) elif primary_type == 'show': info['id'] = deep_get(item, 'navigationEndpoint', 'watchEndpoint', 'playlistId') + info['first_video_id'] = deep_get(item, 'navigationEndpoint', + 'watchEndpoint', 'videoId') if primary_type in ('playlist', 'channel'): conservative_update(info, 'video_count', extract_int(item.get('videoCountText'))) -- cgit v1.2.3