作者:pranavjindal99
项目:Youtube-Materia
async getVideoComments(params: {
videoId: string;
maxResults: number;
order: CommentThreadOrder;
pageToken?: string;
}) {
await asyncYoutubeClientAPI;
if (config.isPrerendering) {
return Promise.reject("");
}
return gapiWrapper({
method: gapi.client.youtube.commentThreads.list,
memCache: params.order === CommentThreadOrder.TIME,
diskCache: params.order === CommentThreadOrder.RELEVANCE,
cacheDuration:
params.order === CommentThreadOrder.TIME ? ms(1, "min") : ms(5, "min"),
methodId: "8",
params: {
part: "snippet,replies",
videoId: params.videoId,
maxResults: params.maxResults,
order: params.order,
pageToken: params.pageToken,
textFormat: "plainText"
}
}).then(result => {
return result;
});
}
作者:pranavjindal99
项目:Youtube-Materia
async getAllCategories() {
await asyncYoutubeClientAPI;
return gapiWrapper({
method: gapi.client.youtube.videoCategories.list,
methodId: "6",
params: {
part: "snippet",
hl: i18n.locale,
regionCode: await asyncRegionCode,
fields: "eventId,items(id,snippet)"
}
}).then(result => {
return result.items;
});
}
作者:pranavjindal99
项目:Youtube-Materia
async getVideoDetails(videoIds: string[]) {
await asyncYoutubeClientAPI;
return gapiWrapper({
method: gapi.client.youtube.videos.list,
methodId: "2",
diskCache: true,
params: {
hl: i18n.locale,
regionCode: await asyncRegionCode,
part: "snippet,statistics,contentDetails",
id: videoIds.join(",")
}
}).then(result => {
return result;
});
}
作者:pranavjindal99
项目:Youtube-Materia
async getChannelDetails(
channelIds: string[],
part = "snippet,statistics,brandingSettings"
) {
await asyncYoutubeClientAPI;
return gapiWrapper({
method: gapi.client.youtube.channels.list,
methodId: "3",
diskCache: true,
params: {
hl: i18n.locale,
part: part,
id: channelIds.join(",")
}
}).then(result => {
return result;
});
}
作者:pranavjindal99
项目:Youtube-Materia
async getCommentReplies(params: {
commentId: string;
maxResults: number;
pageToken: string;
}) {
await asyncYoutubeClientAPI;
return gapiWrapper({
method: gapi.client.youtube.comments.list,
methodId: "9",
params: {
part: "snippet",
pageToken: params.pageToken,
parentId: params.commentId,
maxResults: params.maxResults
}
}).then(result => {
return result;
});
}
作者:pranavjindal99
项目:Youtube-Materia
async getAllRegions() {
await asyncYoutubeClientAPI;
return gapiWrapper({
method: gapi.client.youtube.i18nRegions.list,
methodId: "5",
diskCache: true,
cacheDuration: ms(30, "day"),
params: {
hl: i18n.locale,
part: "snippet",
fields: "items/snippet"
}
}).then(result => {
return result.items.map(item => {
return {
regionCode: item.snippet.gl,
regionName: item.snippet.name
};
});
});
}
作者:pranavjindal99
项目:Youtube-Materia
async getChannelSubscriptions(params: {
channelId: string;
pageToken?: string;
maxResults: number;
}) {
await asyncYoutubeClientAPI;
return gapiWrapper({
method: gapi.client.youtube.subscriptions.list,
methodId: "4",
diskCache: true,
params: {
channelId: params.channelId,
part: "snippet",
order: "alphabetical",
pageToken: params.pageToken,
maxResults: params.maxResults
}
}).then(result => {
return result;
});
}
作者:pranavjindal99
项目:Youtube-Materia
async searchVideos(parameters: SearchParams) {
await asyncYoutubeClientAPI;
return gapiWrapper({
method: gapi.client.youtube.search.list,
methodId: "1",
diskCache: true,
params: {
channelId: parameters.channelId,
order: parameters.order,
part: "snippet",
type: "video",
regionCode: await asyncRegionCode,
maxResults: parameters.maxResults,
relatedToVideoId: parameters.relatedToVideoId,
q: parameters.query,
pageToken: parameters.pageToken
}
}).then(result => {
return result;
});
}
作者:pranavjindal99
项目:Youtube-Materia
async getCategoryTrendingVideos(params: {
pageToken?: string;
videoCategoryId?: string;
maxResults: number;
}) {
await asyncYoutubeClientAPI;
return gapiWrapper({
method: gapi.client.youtube.videos.list,
methodId: "7",
diskCache: true,
params: {
part: "snippet,statistics,contentDetails",
hl: i18n.locale,
regionCode: await asyncRegionCode,
chart: "mostPopular",
maxResults: params.maxResults,
pageToken: params.pageToken,
videoCategoryId: params.videoCategoryId
}
}).then(result => {
return result;
});
}