Skip to content
This repository was archived by the owner on Jan 9, 2024. It is now read-only.

Commit a14d52d

Browse files
feat: add support for reelShelfRenderer (#161)
closes #154 closes #160
1 parent 801db71 commit a14d52d

File tree

2 files changed

+10320
-0
lines changed

2 files changed

+10320
-0
lines changed

lib/parseItem.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,11 @@ const parseItem = (item, resp) => {
2424
return parseVideo(item[type]);
2525
case 'movieRenderer':
2626
return parseMovie(item[type]);
27+
case 'reelItemRenderer':
28+
return parseShort(item[type]);
2729
case 'shelfRenderer':
2830
case 'richShelfRenderer':
31+
case 'reelShelfRenderer':
2932
return parseShelf(item[type]);
3033
case 'showRenderer':
3134
return parseShow(item[type]);
@@ -343,6 +346,30 @@ const parseMovie = obj => {
343346
};
344347
};
345348

349+
const parseShort = obj => {
350+
const playerHeader = obj.navigationEndpoint.reelWatchEndpoint.overlay
351+
.reelPlayerOverlayRenderer.reelPlayerHeaderSupportedRenderers.reelPlayerHeaderRenderer;
352+
const channelNavEndpoint = playerHeader.channelTitleText.runs[0].navigationEndpoint;
353+
return {
354+
type: 'short',
355+
title: UTIL.parseText(obj.headline, ''),
356+
videoID: obj.videoId,
357+
url: new URL(obj.navigationEndpoint.commandMetadata.webCommandMetadata.url, BASE_VIDEO_URL).toString(),
358+
bestThumbnail: prepImg(obj.thumbnail.thumbnails)[0],
359+
thumbnails: prepImg(obj.thumbnail.thumbnails),
360+
views: UTIL.parseText(obj.viewCountText, ''),
361+
published: UTIL.parseText(playerHeader.timestampText, ''),
362+
363+
channel: {
364+
name: UTIL.parseText(playerHeader.channelTitleText, ''),
365+
channelID: channelNavEndpoint.browseEndpoint.browseId,
366+
url: new URL(channelNavEndpoint.commandMetadata.webCommandMetadata.url, BASE_VIDEO_URL).toString(),
367+
bestAvatar: prepImg(playerHeader.channelThumbnail.thumbnails)[0] || null,
368+
avatars: prepImg(playerHeader.channelThumbnail.thumbnails),
369+
},
370+
};
371+
};
372+
346373
const parseShow = obj => {
347374
const thumbnails = obj.thumbnailRenderer.showCustomThumbnailRenderer.thumbnail.thumbnails;
348375
const owner = _parseOwner(obj);
@@ -366,6 +393,8 @@ const parseShelf = obj => {
366393
let rawItems = [];
367394
if (Array.isArray(obj.contents)) {
368395
rawItems = obj.contents.map(x => x.richItemRenderer.content);
396+
} else if (Array.isArray(obj.items)) {
397+
rawItems = obj.items;
369398
} else {
370399
rawItems = (obj.content.verticalListRenderer || obj.content.horizontalMovieListRenderer).items;
371400
}

0 commit comments

Comments
 (0)