diff --git a/play-dl/YouTube/classes/Video.ts b/play-dl/YouTube/classes/Video.ts index 37fca4e..2ce19e7 100644 --- a/play-dl/YouTube/classes/Video.ts +++ b/play-dl/YouTube/classes/Video.ts @@ -115,7 +115,7 @@ export class YouTubeVideo { /** * YouTube Thumbnail Data */ - thumbnail?: YouTubeThumbnail; + thumbnails: YouTubeThumbnail[]; /** * YouTube Video's uploader Channel Data */ @@ -160,7 +160,11 @@ export class YouTubeVideo { this.durationInSec = (data.duration < 0 ? 0 : data.duration) || 0; this.uploadedAt = data.uploadedAt || undefined; this.views = parseInt(data.views) || 0; - this.thumbnail = new YouTubeThumbnail(data.thumbnail) || {}; + const thumbnails = []; + for (const thumb of data.thumbnails) { + thumbnails.push(new YouTubeThumbnail(thumb)); + } + this.thumbnails = thumbnails || []; this.channel = new YouTubeChannel(data.channel) || {}; this.likes = data.likes || 0; this.averageRating = data.averageRating || 0; @@ -189,7 +193,7 @@ export class YouTubeVideo { durationInSec: this.durationInSec, durationRaw: this.durationRaw, uploadedAt: this.uploadedAt, - thumbnail: this.thumbnail?.toJSON() || this.thumbnail, + thumbnail: this.thumbnails[this.thumbnails.length - 1].toJSON() || this.thumbnails, channel: this.channel, views: this.views, tags: this.tags, diff --git a/play-dl/YouTube/utils/extractor.ts b/play-dl/YouTube/utils/extractor.ts index cb505fd..92018ec 100644 --- a/play-dl/YouTube/utils/extractor.ts +++ b/play-dl/YouTube/utils/extractor.ts @@ -161,7 +161,7 @@ export async function video_basic_info(url: string, options: InfoOptions = {}): duration: Number(vid.lengthSeconds), duration_raw: parseSeconds(Number(vid.lengthSeconds)), uploadedAt: microformat.publishDate, - thumbnail: vid.thumbnail.thumbnails[vid.thumbnail.thumbnails.length - 1], + thumbnails: vid.thumbnail.thumbnails, channel: { name: vid.author, id: vid.channelId, diff --git a/play-dl/YouTube/utils/parser.ts b/play-dl/YouTube/utils/parser.ts index d4718ce..5d8915a 100644 --- a/play-dl/YouTube/utils/parser.ts +++ b/play-dl/YouTube/utils/parser.ts @@ -130,7 +130,7 @@ export function parseVideo(data?: any): YouTubeVideo { : '', duration: data.videoRenderer.lengthText ? parseDuration(data.videoRenderer.lengthText.simpleText) : 0, duration_raw: data.videoRenderer.lengthText ? data.videoRenderer.lengthText.simpleText : null, - thumbnail: data.videoRenderer.thumbnail.thumbnails[data.videoRenderer.thumbnail.thumbnails.length - 1], + thumbnails: data.videoRenderer.thumbnail.thumbnails, channel: { id: channel.navigationEndpoint.browseEndpoint.browseId || null, name: channel.text || null,