Update src/libpoketube/init/pages-channel-and-download.js

This commit is contained in:
ashley 2024-07-15 20:09:54 +00:00
parent e01174182c
commit 7767c69ad1

View file

@ -231,7 +231,6 @@ module.exports = function (app, config, renderTemplate) {
: "";
const sort_by = req.query.sort_by || "newest";
const getChannelData = async (url) => {
try {
return await fetch(url)
@ -243,40 +242,35 @@ module.exports = function (app, config, renderTemplate) {
};
const apiUrl = config.invapi + "/channels/";
const channelUrl = `${apiUrl}${atob(
ChannelTabs.videos
)}/${ID}/?sort_by=${sort_by}${continuation}`;
const shortsUrl = `${apiUrl}${ID}/${atob(
ChannelTabs.shorts
)}?sort_by=${sort_by}${continuations}`;
const streamUrl = `${apiUrl}${ID}/${atob(
ChannelTabs.streams
)}?sort_by=${sort_by}${continuationl}`;
const communityUrl = `${apiUrl}${atob(
ChannelTabs.community
)}/${ID}/?hl=en-US`;
const PlaylistUrl = `${apiUrl}${atob(
ChannelTabs.playlist
)}/${ID}/?hl=en-US`;
const channelINVUrl = `${apiUrl}${ID}/`;
const checkPronoun = async (id) => (await (await fetch('https://raw.githubusercontent.com/ashley0143/poke/main/pronounsdb.json')).json())[id] || `no pronouns set`;
const pronoun = await checkPronoun(ID);
const channelINVData = await getChannelData(channelINVUrl);
const cinv = await getChannelData(channelINVUrl);
const pronoun = "no pronouns :c"
if (!channelINVData) {
throw new Error('Failed to fetch channel INV data');
}
const ChannelTabs = channelINVData.tabs;
const channelUrl = ChannelTabs.videos ? `${apiUrl}${atob(ChannelTabs.videos)}/${ID}/?sort_by=${sort_by}${continuation}` : null;
const shortsUrl = ChannelTabs.shorts ? `${apiUrl}${ID}/${atob(ChannelTabs.shorts)}?sort_by=${sort_by}${continuations}` : null;
const streamUrl = ChannelTabs.streams ? `${apiUrl}${ID}/${atob(ChannelTabs.streams)}?sort_by=${sort_by}${continuationl}` : null;
const communityUrl = ChannelTabs.community ? `${apiUrl}${atob(ChannelTabs.community)}/${ID}/?hl=en-US` : null;
const PlaylistUrl = ChannelTabs.playlist ? `${apiUrl}${atob(ChannelTabs.playlist)}/${ID}/?hl=en-US` : null;
const fetchData = async (url) => {
return url ? getChannelData(url) : "";
};
var [tj, shorts, playlist, stream, c] = await Promise.all([
fetchData(channelUrl),
fetchData(shortsUrl),
fetchData(PlaylistUrl),
fetchData(streamUrl),
fetchData(communityUrl)
var [tj, shorts, playlist, stream, c, cinv] = await Promise.all([
getChannelData(channelUrl),
getChannelData(shortsUrl),
getChannelData(PlaylistUrl),
getChannelData(streamUrl),
getChannelData(communityUrl),
getChannelData(channelINVUrl),
]);
function getThumbnailUrl(video) {
const maxresDefaultThumbnail = video.videoThumbnails.find(
(thumbnail) => thumbnail.quality === "maxresdefault"
@ -317,23 +311,21 @@ var [tj, shorts, playlist, stream, c] = await Promise.all([
if (tj) {
if (continuation) {
const currentAuthorId = String(cinv.authorId).trim();
const firstVideoAuthorId = String(tj.videos[0].authorId).trim();
if (currentAuthorId.localeCompare(firstVideoAuthorId) !== 0) {
res.status(400).send("Continuation does not match the channel :c");
return; // Exit the function after sending the response
}
}
var ChannelFirstVideoObject = await fetch(
const ChannelFirstVideoObject = await fetch(
`${config.invapi}/videos/${tj.videos[0].videoId}`
)
.then((res) => res.text())
.then((txt) => getJson(txt));
}
renderTemplate(res, req, "channel.ejs", {
ID,