From c8fa39c42d59bb55b970a74c4e9a67820590b323 Mon Sep 17 00:00:00 2001 From: girst Date: Sun, 23 Apr 2023 16:33:01 +0000 Subject: [PATCH] innertube: fix some unsupported types reel* is youtube shorts (meh.) --- app/common/innertube.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/common/innertube.py b/app/common/innertube.py index 8996829..49d53ae 100644 --- a/app/common/innertube.py +++ b/app/common/innertube.py @@ -187,10 +187,10 @@ def parse_result_items(items): for item in items: key = next(iter(item.keys()), None) content = item[key] - if key == 'videoRenderer': + if key in ['videoRenderer', 'reelItemRenderer']: results.append({'type': 'VIDEO', 'content': { 'video_id': content['videoId'], - 'title': content['title']|G.text, + 'title': content|G('title')|G.text or content|G('headline')|G.text, 'author': content|G('longBylineText','shortBylineText')|G.text, 'channel_id': content|G('ownerText')|G('runs')|G(0) \ |G('navigationEndpoint')|G('browseEndpoint')|G('browseId'), @@ -222,12 +222,14 @@ def parse_result_items(items): r, e = parse_result_items(content['content'][subkey]['items']) results.extend(r) extras.extend(e) - elif key == 'reelShelfRenderer': # XXX: seems to be Shorts only - pass # TODO? + elif key in ["reelShelfRenderer"]: + r, e = parse_result_items(content['items']) + results.extend(r) + extras.extend(e) elif key in ['movieRenderer', 'gridMovieRenderer']: # movies to buy/rent pass # gMR.{videoId,title.runs[].text,lengthText.simpleText} elif key in ['carouselAdRenderer','searchPyvRenderer','promotedSparklesTextSearchRenderer', - 'promotedSparklesWebRenderer','compactPromotedItemRenderer']: # haha, no. + 'promotedSparklesWebRenderer','compactPromotedItemRenderer', 'adSlotRenderer']: # haha, no. pass elif key == 'horizontalCardListRenderer': # suggested searches: .cards[].searchRefinementCardRenderer.query.runs[].text @@ -424,6 +426,10 @@ def parse_channel_items(items, channel_id, author): r, e = parse_channel_items([content['content']], channel_id, author) result.extend(r) extra.extend(e) + elif key in ["reelShelfRenderer"]: + r, e = parse_channel_items(content['items'], channel_id, author) + result.extend(r) + extra.extend(e) elif key == "messageRenderer": # e.g. {'messageRenderer': {'text': {'runs': [{'text': 'This channel has no playlists.'}]}}} pass -- 2.39.3