diff --git a/lib/info-extras.js b/lib/info-extras.js index b1fd2c92..44f01baf 100644 --- a/lib/info-extras.js +++ b/lib/info-extras.js @@ -89,7 +89,7 @@ const isVerified = badges => !!(badges && badges.find(b => b.metadataBadgeRender * @returns {Object} */ exports.getAuthor = info => { - let channelId, avatar, subscriberCount, verified = false; + let channelId, thumbnails = [], subscriberCount, verified = false; try { let results = info.response.contents.twoColumnWatchNextResults.results.results.contents; let v = results.find(v2 => @@ -98,7 +98,10 @@ exports.getAuthor = info => { v2.videoSecondaryInfoRenderer.owner.videoOwnerRenderer); let videoOwnerRenderer = v.videoSecondaryInfoRenderer.owner.videoOwnerRenderer; channelId = videoOwnerRenderer.navigationEndpoint.browseEndpoint.browseId; - avatar = urllib.resolve(VIDEO_URL, videoOwnerRenderer.thumbnail.thumbnails[0].url); + thumbnails = videoOwnerRenderer.thumbnail.thumbnails.map(thumbnail => { + thumbnail.url = urllib.resolve(VIDEO_URL, thumbnail.url); + return thumbnail; + }); subscriberCount = utils.parseAbbreviatedNumber(getText(videoOwnerRenderer.subscriberCountText)); verified = isVerified(videoOwnerRenderer.badges); } catch (err) { @@ -114,10 +117,11 @@ exports.getAuthor = info => { channel_url: `https://www.youtube.com/channel/${id}`, external_channel_url: `https://www.youtube.com/channel/${videoDetails.externalChannelId}`, user_url: urllib.resolve(VIDEO_URL, videoDetails.ownerProfileUrl), - avatar, + thumbnails, verified, subscriber_count: subscriberCount, }; + utils.deprecate(author, 'avatar', author.thumbnails[0].url, 'author.avatar', 'author.thumbnails[0].url'); return author; } catch (err) { return {}; diff --git a/test/info-extras-test.js b/test/info-extras-test.js index 18fe81e7..14e5f2e0 100644 --- a/test/info-extras-test.js +++ b/test/info-extras-test.js @@ -55,6 +55,7 @@ describe('extras.getAuthor()', () => { const author = extras.getAuthor(info); assert.ok(author); assertURL(author.avatar); + assertThumbnails(author.thumbnails); assertChannelURL(author.channel_url); assertChannelURL(author.external_channel_url); assertUserID(author.id); @@ -80,6 +81,7 @@ describe('extras.getAuthor()', () => { const author = extras.getAuthor(info); assert.ok(author); assertURL(author.avatar); + assertThumbnails(author.thumbnails); assertChannelURL(author.channel_url); assertChannelURL(author.external_channel_url); assertUserID(author.id); diff --git a/typings/index.d.ts b/typings/index.d.ts index adf9a8c9..6f9dc359 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -146,6 +146,7 @@ declare module 'ytdl-core' { id: string; name: string; avatar: string; // to remove later + thumbnails: thumbnail[]; verified: boolean; user?: string; channel_url: string;