poke/src/libpoketube/init/pages-404-and-main.js
2023-03-21 19:00:22 +00:00

78 lines
1.9 KiB
JavaScript

const {
fetcher,
core,
wiki,
musicInfo,
modules,
version,
initlog,
init,
} = require("../libpoketube-initsys.js");
const {
IsJsonString,
convert,
getFirstLine,
capitalizeFirstLetter,
turntomins,
getRandomInt,
getRandomArbitrary,
} = require("../ptutils/libpt-coreutils.js");
const sha384 = modules.hash;
function getJson(str) {
try {
return JSON.parse(str);
} catch {
return null;
}
}
module.exports = function (app, config, renderTemplate) {
app.get("/discover", async function (req, res) {
let tab = "";
if (req.query.tab) {
tab = `/?type=${capitalizeFirstLetter(req.query.tab)}`;
}
const invtrend = await modules.fetch(`https://invid-api.poketube.fun/api/v1/trending${tab}`);
const t = getJson(await invtrend.text());
let j = null;
if (req.query.mobilesearch) {
const query = req.query.mobilesearch;
const continuation = req.query.continuation || "";
const search = await modules.fetch(`https://inner-api.poketube.fun/api/search?query=${query}&continuation=${continuation}`);
const text = await search.text();
j = getJson(modules.toJson(text));
}
renderTemplate(res, req, "main.ejs", {
tab: req.query.tab,
isMobile: req.useragent.isMobile,
mobilesearch: req.query.mobilesearch,
inv: t,
turntomins,
continuation: req.query.continuation,
j,
});
});
app.get("/:v*?", async function (req, res) {
const rendermainpage = () => {
if (req.useragent.isMobile) {
return res.redirect("/discover");
}
return renderTemplate(res, req, "landing.ejs");
};
if (req.params.v && /[a-zA-Z0-9]+/.test(req.param.v)) {
const isvld = await core.isvalidvideo(req.params.v);
if (isvld) {
return res.redirect(`/watch?v=${req.params.v}`);
}
}
return rendermainpage();
});
};