diff --git a/lib/parseItem.js b/lib/parseItem.js index 51eb326..9255395 100644 --- a/lib/parseItem.js +++ b/lib/parseItem.js @@ -122,7 +122,7 @@ const parseVideo = obj => { author.navigationEndpoint.commandMetadata.webCommandMetadata.url; } const badges = Array.isArray(obj.badges) ? obj.badges.map(a => a.metadataBadgeRenderer.label) : []; - const isLive = badges.some(b => b === 'LIVE NOW'); + const isLive = badges.some(b => b === 'LIVE'); const upcoming = obj.upcomingEventData ? Number(`${obj.upcomingEventData.startTime}000`) : null; const ctsr = obj.channelThumbnailSupportedRenderers; const authorImg = !ctsr ? { thumbnail: { thumbnails: [] } } : ctsr.channelThumbnailWithLinkRenderer; @@ -353,9 +353,10 @@ const parseMovie = obj => { }; const parseShort = obj => { - const playerHeader = obj.navigationEndpoint.reelWatchEndpoint.overlay - .reelPlayerOverlayRenderer.reelPlayerHeaderSupportedRenderers.reelPlayerHeaderRenderer; - const channelNavEndpoint = playerHeader.channelTitleText.runs[0].navigationEndpoint; + const playerOverlay = obj.navigationEndpoint.reelWatchEndpoint.overlay.reelPlayerOverlayRenderer; + const playerHeader = playerOverlay.reelPlayerHeaderSupportedRenderers && + playerOverlay.reelPlayerHeaderSupportedRenderers.reelPlayerHeaderRenderer; + return { type: 'short', title: UTIL.parseText(obj.headline, ''), @@ -364,15 +365,20 @@ const parseShort = obj => { bestThumbnail: prepImg(obj.thumbnail.thumbnails)[0], thumbnails: prepImg(obj.thumbnail.thumbnails), views: UTIL.parseText(obj.viewCountText, ''), - published: UTIL.parseText(playerHeader.timestampText, ''), - - channel: { - name: UTIL.parseText(playerHeader.channelTitleText, ''), - channelID: channelNavEndpoint.browseEndpoint.browseId, - url: new URL(channelNavEndpoint.commandMetadata.webCommandMetadata.url, BASE_VIDEO_URL).toString(), - bestAvatar: prepImg(playerHeader.channelThumbnail.thumbnails)[0] || null, - avatars: prepImg(playerHeader.channelThumbnail.thumbnails), - }, + published: UTIL.parseText(playerHeader && playerHeader.timestampText, ''), + + channel: (() => { + if (!playerHeader) return null; + + const channelNavEndpoint = playerHeader.channelTitleText.runs[0].navigationEndpoint; + return { + name: UTIL.parseText(playerHeader.channelTitleText, ''), + channelID: channelNavEndpoint.browseEndpoint.browseId, + url: new URL(channelNavEndpoint.commandMetadata.webCommandMetadata.url, BASE_VIDEO_URL).toString(), + bestAvatar: prepImg(playerHeader.channelThumbnail.thumbnails)[0] || null, + avatars: prepImg(playerHeader.channelThumbnail.thumbnails), + } + })(), }; };