mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-10 15:21:59 +08:00
65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
const { google } = require('googleapis');
|
|
const config = require('@/config').value;
|
|
|
|
let getYoutube = () => null;
|
|
if (config.youtube.key) {
|
|
const keys = config.youtube.key.split(',');
|
|
const youtube = {};
|
|
let count = 0;
|
|
let index = -1;
|
|
|
|
keys.forEach((key, index) => {
|
|
if (key) {
|
|
youtube[index] = google.youtube({
|
|
version: 'v3',
|
|
auth: key,
|
|
});
|
|
count = index + 1;
|
|
}
|
|
});
|
|
|
|
getYoutube = () => {
|
|
index++;
|
|
return youtube[index % count];
|
|
};
|
|
}
|
|
|
|
const youtubeUtils = {
|
|
getPlaylistItems: async (id, part) => {
|
|
const res = await getYoutube().playlistItems.list({
|
|
part,
|
|
playlistId: id,
|
|
maxResults: 50, // youtube api param value default is 5
|
|
});
|
|
return res;
|
|
},
|
|
getPlaylist: async (id, part, cache) =>
|
|
await cache.tryGet('getPlaylist' + id, async () => {
|
|
const res = await getYoutube().playlists.list({
|
|
part,
|
|
id: id,
|
|
});
|
|
return res;
|
|
}),
|
|
getChannelWithId: async (id, part, cache) =>
|
|
await cache.tryGet('getChannelWithId' + id, async () => {
|
|
const res = await getYoutube().channels.list({
|
|
part,
|
|
id: id,
|
|
});
|
|
return res;
|
|
}),
|
|
getChannelWithUsername: async (username, part, cache) =>
|
|
await cache.tryGet('getPlaylist' + username, async () => {
|
|
const res = await getYoutube().channels.list({
|
|
part,
|
|
forUsername: username,
|
|
});
|
|
return res;
|
|
}),
|
|
getThumbnail: (thumbnails) => thumbnails.maxres || thumbnails.standard || thumbnails.high || thumbnails.medium || thumbnails.default,
|
|
formatDescription: (description) => description.replace(/(?:\r\n|\r|\n)/g, '<br>'),
|
|
};
|
|
|
|
module.exports = youtubeUtils;
|