diff --git a/src/libpoketube/init/pages-api.js b/src/libpoketube/init/pages-api.js index ee1f480f..87db2cdc 100644 --- a/src/libpoketube/init/pages-api.js +++ b/src/libpoketube/init/pages-api.js @@ -1,4 +1,13 @@ - const { fetcher,core, wiki,musicInfo, modules, version, initlog, init,} = require("../libpoketube-initsys.js"); +const { + fetcher, + core, + wiki, + musicInfo, + modules, + version, + initlog, + init, +} = require("../libpoketube-initsys.js"); const { IsJsonString, convert, @@ -9,107 +18,123 @@ const { getRandomArbitrary, } = require("../ptutils/libpt-coreutils.js"); - module.exports = function (app, config, renderTemplate) { - - -app.get("/embed/:v", async function (req, res) { - var e = req.query.e; - var f = req.query.f; - var t = req.query.t; - var q = req.query.quality; - var v = req.params.v; +const pkg = require("../../../package.json"); - var fetching = await fetcher(v); - const video = await modules.fetch(config.tubeApi + `video?v=${v}`); +module.exports = function (app, config, renderTemplate) { + app.get("/embed/:v", async function (req, res) { + var e = req.query.e; + var f = req.query.f; + var t = req.query.t; + var q = req.query.quality; + var v = req.params.v; - const json = fetching.video.Player; - const h = await video.text(); - const k = JSON.parse(modules.toJson(h)); - const engagement = fetching.engagement; + var fetching = await fetcher(v); + const video = await modules.fetch(config.tubeApi + `video?v=${v}`); - if (!v) res.redirect("/"); + const json = fetching.video.Player; + const h = await video.text(); + const k = JSON.parse(modules.toJson(h)); + const engagement = fetching.engagement; - //video - if (!q) url = `https://tube.kuylar.dev/proxy/media/${v}/22`; - if (q === "medium") { - var url = `https://tube.kuylar.dev/proxy/media/${v}/18`; - } + if (!v) res.redirect("/"); - renderTemplate(res, req, "poketube-iframe.ejs", { - video: json, - url: url, - sha384: modules.hash, - qua: q, - engagement: engagement, - k: k, - optout: t, - t: config.t_url, + //video + if (!q) url = `https://tube.kuylar.dev/proxy/media/${v}/22`; + if (q === "medium") { + var url = `https://tube.kuylar.dev/proxy/media/${v}/18`; + } + + renderTemplate(res, req, "poketube-iframe.ejs", { + video: json, + url: url, + sha384: modules.hash, + qua: q, + engagement: engagement, + k: k, + optout: t, + t: config.t_url, + }); }); -}); + app.get("/api/search", async (req, res) => { + const query = req.query.query; -app.get("/api/search", async (req, res) => { - const query = req.query.query; + if (!query) { + return res.redirect("/"); + } + return res.redirect(`/search?query=${query}`); + }); - if (!query) { - return res.redirect("/"); - } - return res.redirect(`/search?query=${query}`); -}); + app.get("/api/video/download", async function (req, res) { + var v = req.query.v; -app.get("/api/video/download", async function (req, res) { - var v = req.query.v; + var format = "mp4"; + var q = "22"; + if (req.query.q) q = req.query.q; + if (req.query.f) { + var format = "mp3"; + } + var fetching = await fetcher(v); - var format = "mp4"; - var q = "22"; - if (req.query.q) q = req.query.q; - if (req.query.f) { - var format = "mp3"; - } - var fetching = await fetcher(v); + const json = fetching.video.Player; - const json = fetching.video.Player; + const url = `https://tube.kuylar.dev/proxy/download/${v}/${q}/${json.Title}.${format}`; - const url = `https://tube.kuylar.dev/proxy/download/${v}/${q}/${json.Title}.${format}`; + res.redirect(url); + }); - res.redirect(url); -}); + app.get("/api/video/downloadjson", async function (req, res) { + var v = req.query.v; + var fetching = await fetcher(v); + const url = fetching.video.Player.Formats.Format[1].URL; + res.json(url); + }); -app.get("/api/video/downloadjson", async function (req, res) { - var v = req.query.v; - var fetching = await fetcher(v); - const url = fetching.video.Player.Formats.Format[1].URL; - res.json(url); -}); + app.get("/api/subtitles", async (req, res) => { + const id = req.query.v; + const l = req.query.h; -app.get("/api/subtitles", async (req, res) => { - const id = req.query.v; - const l = req.query.h; + const url = `https://tube.kuylar.dev/proxy/caption/${id}/${l}/`; - const url = `https://tube.kuylar.dev/proxy/caption/${id}/${l}/`; + let f = await modules.fetch(url); + const body = await f.text(); - let f = await modules.fetch(url); - const body = await f.text(); + res.send(body); + }); - res.send(body); -}); + app.get("/api/redirect", async (req, res) => { + const red_url = req.query.u; -app.get("/api/redirect", async (req, res) => { - const red_url = req.query.u; + if (!red_url) { + res.redirect("/"); + } - if (!red_url) { - res.redirect("/"); - } + res.redirect(red_url); + }); - res.redirect(red_url); -}); + app.get("/api/version.json", async (req, res) => { + const response = { + pt_version: "v22.1115-abU9-stable", + packages: { + libpt: version, + node: process.version, + v8: process.versions.v8, + }, + process: process.versions, + dependencies: pkg.dependencies, + }; -app.get("/api/opensearch", async (req, res) => { - res.sendFile(__dirname + `/opensearch.xml`); -}); + res.json(response); + }); -app.get("/api/instances.json", async (req, res) => { - res.sendFile(__dirname + `/instances.json`); -}); + app.get("/api/instances.json", async (req, res) => { + const url = `https://codeberg.org/Ashley/poketube/raw/branch/main/instances.json`; - } \ No newline at end of file + let f = await modules + .fetch(url) + .then((res) => res.text()) + .then((json) => JSON.parse(json)); + + res.json(f); + }); +};