mirror of
https://codeberg.org/ashley/poke.git
synced 2024-11-22 23:17:57 +01:00
Update src/libpoketube/init/pages-channel-and-download.js
This commit is contained in:
parent
e01174182c
commit
7767c69ad1
1 changed files with 49 additions and 57 deletions
|
@ -230,52 +230,46 @@ module.exports = function (app, config, renderTemplate) {
|
||||||
? `&continuation=${req.query.continuations}`
|
? `&continuation=${req.query.continuations}`
|
||||||
: "";
|
: "";
|
||||||
const sort_by = req.query.sort_by || "newest";
|
const sort_by = req.query.sort_by || "newest";
|
||||||
|
|
||||||
|
|
||||||
const getChannelData = async (url) => {
|
const getChannelData = async (url) => {
|
||||||
try {
|
try {
|
||||||
return await fetch(url)
|
return await fetch(url)
|
||||||
.then((res) => res.text())
|
.then((res) => res.text())
|
||||||
.then((txt) => getJson(txt));
|
.then((txt) => getJson(txt));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const apiUrl = config.invapi + "/channels/";
|
const apiUrl = config.invapi + "/channels/";
|
||||||
const channelINVUrl = `${apiUrl}${ID}/`;
|
const channelUrl = `${apiUrl}${atob(
|
||||||
const checkPronoun = async (id) => (await (await fetch('https://raw.githubusercontent.com/ashley0143/poke/main/pronounsdb.json')).json())[id] || `no pronouns set`;
|
ChannelTabs.videos
|
||||||
const pronoun = await checkPronoun(ID);
|
)}/${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 channelINVData = await getChannelData(channelINVUrl);
|
const channelINVUrl = `${apiUrl}${ID}/`;
|
||||||
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) {
|
function getThumbnailUrl(video) {
|
||||||
const maxresDefaultThumbnail = video.videoThumbnails.find(
|
const maxresDefaultThumbnail = video.videoThumbnails.find(
|
||||||
|
@ -317,23 +311,21 @@ var [tj, shorts, playlist, stream, c] = await Promise.all([
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (tj) {
|
|
||||||
if (continuation) {
|
if (continuation) {
|
||||||
const currentAuthorId = String(cinv.authorId).trim();
|
const currentAuthorId = String(cinv.authorId).trim();
|
||||||
const firstVideoAuthorId = String(tj.videos[0].authorId).trim();
|
const firstVideoAuthorId = String(tj.videos[0].authorId).trim();
|
||||||
|
|
||||||
if (currentAuthorId.localeCompare(firstVideoAuthorId) !== 0) {
|
if (currentAuthorId.localeCompare(firstVideoAuthorId) !== 0) {
|
||||||
res.status(400).send("Continuation does not match the channel :c");
|
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}`
|
`${config.invapi}/videos/${tj.videos[0].videoId}`
|
||||||
)
|
)
|
||||||
.then((res) => res.text())
|
.then((res) => res.text())
|
||||||
.then((txt) => getJson(txt));
|
.then((txt) => getJson(txt));
|
||||||
}
|
|
||||||
|
|
||||||
renderTemplate(res, req, "channel.ejs", {
|
renderTemplate(res, req, "channel.ejs", {
|
||||||
ID,
|
ID,
|
||||||
|
|
Loading…
Reference in a new issue