Skip to content

Commit c750fd1

Browse files
author
Sergio
committed
fix(local api): parse up-next metadata rows flexibly
1 parent 2b2b20e commit c750fd1

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/renderer/helpers/api/local.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1578,15 +1578,22 @@ function parseLockupView(lockupView, channelId = undefined, channelName = undefi
15781578

15791579
/** @type {YTNodes.ThumbnailOverlayBadgeView | undefined} */
15801580
const thumbnailOverlayBadgeView = lockupView.content_image?.overlays?.firstOfType(YTNodes.ThumbnailOverlayBadgeView)
1581+
const metadataRows = lockupView.metadata.metadata?.metadata_rows ?? []
1582+
const metadataParts = metadataRows.flatMap((row) => row?.metadata_parts ?? [])
15811583

15821584
if (thumbnailOverlayBadgeView) {
15831585
if (thumbnailOverlayBadgeView.badges.some(badge => badge.badge_style === 'THUMBNAIL_OVERLAY_BADGE_STYLE_LIVE')) {
15841586
liveNow = true
15851587
} else if (thumbnailOverlayBadgeView.badges.some(badge => badge.text.toLowerCase() === 'upcoming')) {
15861588
isUpcoming = true
15871589

1588-
if (lockupView.metadata.metadata?.metadata_rows[1].metadata_parts?.[1].text?.text) {
1589-
premiereDate = new Date(lockupView.metadata.metadata.metadata_rows[1].metadata_parts[1].text.text)
1590+
const premiereDateText = metadataParts.find((part) => {
1591+
const text = part.text?.text
1592+
return text && !isNaN(Date.parse(text))
1593+
})?.text?.text
1594+
1595+
if (premiereDateText) {
1596+
premiereDate = new Date(premiereDateText)
15901597
}
15911598
} else {
15921599
const durationBadge = thumbnailOverlayBadgeView.badges.find(badge => /^[\d:]+$/.test(badge.text))
@@ -1595,13 +1602,13 @@ function parseLockupView(lockupView, channelId = undefined, channelName = undefi
15951602
lengthSeconds = Utils.timeToSeconds(durationBadge.text)
15961603
}
15971604

1598-
publishedText = lockupView.metadata.metadata?.metadata_rows[1].metadata_parts?.find(part => part.text?.text?.endsWith('ago'))?.text?.text
1605+
publishedText = metadataParts.find(part => part.text?.text?.endsWith('ago'))?.text?.text
15991606
}
16001607
}
16011608

16021609
let viewCount = null
16031610

1604-
const viewsText = lockupView.metadata.metadata?.metadata_rows[1].metadata_parts?.find(part => {
1611+
const viewsText = metadataParts.find(part => {
16051612
return part.text?.text && VIEWS_OR_WATCHING_REGEX.test(part.text.text)
16061613
})?.text?.text
16071614

0 commit comments

Comments
 (0)