Skip to content

Commit 9172f84

Browse files
committed
feat(Util): Added support for channel
1 parent c6ec150 commit 9172f84

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

src/Util.js

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const isChannelVerified = (vRender) => {
1111
const badges = (vRender['ownerBadges'] ?
1212
vRender['ownerBadges'].map((badge) => badge['metadataBadgeRenderer']['style']) : []
1313
);
14-
return badges.includes('BADGE_STYLE_TYPE_VERIFIED_ARTIST');
14+
return badges.includes('BADGE_STYLE_TYPE_VERIFIED') || badges.includes('BADGE_STYLE_TYPE_VERIFIED_ARTIST');
1515
}
1616

1717
const getChannelData = (vRender) => {
@@ -29,6 +29,15 @@ const getChannelData = (vRender) => {
2929
};
3030
}
3131

32+
const getChannelLink = (cRender) => {
33+
return 'https://www.youtube.com' + cRender.navigationEndpoint.browseEndpoint.canonicalBaseUrl;
34+
}
35+
36+
const getChannelVideoCount = (cRender) => {
37+
if (!cRender.videoCountText) return 0;
38+
return +cRender.videoCountText.runs[0].text;
39+
}
40+
3241
const getGeneralData = (renderer) => {
3342
return {
3443
channel: getChannelData(renderer),
@@ -73,12 +82,12 @@ const getUploadDate = (vRender) => {
7382

7483
const getViews = (vRender) => {
7584
if (!vRender.viewCountText) return 0;
76-
return parseInt(vRender.viewCountText.simpleText.replace(/[^0-9]/g, ''));
85+
return +vRender.viewCountText.simpleText.replace(/[^0-9]/g, '');
7786
}
7887

7988
const getWatching = (vRender) => {
8089
if (!vRender.viewCountText?.runs) return 0;
81-
return parseInt(vRender.viewCountText.runs[0].text.replace(/[^0-9]/g, ''));
90+
return +vRender.viewCountText.runs[0].text.replace(/[^0-9]/g, '');
8291
}
8392

8493
const idToThumbnail = function(id) {
@@ -104,13 +113,20 @@ const shareLink = (id, short = true) => {
104113
return short ? 'https://youtu.be/'+ id : 'https://www.youtube.com/watch?v='+ id;
105114
}
106115

107-
exports.getStreamData = (item) => {
108-
const vRender = item.videoRenderer;
116+
exports.getChannelData = (item) => {
117+
const cRender = item.channelRenderer;
118+
const id = cRender.channelId;
109119

110-
return assign({
111-
watching: getWatching(vRender)
112-
}, getGeneralData(vRender))
113-
}
120+
return {
121+
channelId: id,
122+
description: compress(cRender.descriptionSnippet),
123+
link: getChannelLink(cRender),
124+
thumbnails: cRender.thumbnail.thumbnails,
125+
subscribed: cRender.subscriptionButton.subscribed,
126+
uploadedVideos: getChannelVideoCount(cRender),
127+
verified: isChannelVerified(cRender)
128+
};
129+
};
114130

115131
exports.getPlaylistData = (item) => {
116132
const pRender = item.playlistRenderer;
@@ -126,6 +142,14 @@ exports.getPlaylistData = (item) => {
126142
}, getPlaylistGeneralData(pRender));
127143
}
128144

145+
exports.getStreamData = (item) => {
146+
const vRender = item.videoRenderer;
147+
148+
return assign({
149+
watching: getWatching(vRender)
150+
}, getGeneralData(vRender))
151+
}
152+
129153
exports.getVideoData = (item) => {
130154
const vRender = item.videoRenderer;
131155

@@ -137,6 +161,7 @@ exports.getVideoData = (item) => {
137161
}, getGeneralData(vRender));
138162
};
139163

164+
exports.isChannel = (item) => typeof item.channelRenderer !== 'undefined';
140165
exports.isPlaylist = (item) => typeof item.playlistRenderer !== 'undefined';
141166
exports.isStream = (item) => item.videoRenderer && !item.videoRenderer.lengthText;
142167
exports.isVideo = (item) => item.videoRenderer && item.videoRenderer.lengthText;

0 commit comments

Comments
 (0)