From e3cb7256ee48a747b88c60f7691c0121f0dd64e5 Mon Sep 17 00:00:00 2001 From: Ashley Date: Fri, 18 Nov 2022 09:42:25 +0000 Subject: [PATCH] add did you mean? prompt --- .../init/pages-channel-and-download.js | 263 ++++++++++-------- 1 file changed, 142 insertions(+), 121 deletions(-) diff --git a/src/libpoketube/init/pages-channel-and-download.js b/src/libpoketube/init/pages-channel-and-download.js index 94448305..0e08adac 100644 --- a/src/libpoketube/init/pages-channel-and-download.js +++ b/src/libpoketube/init/pages-channel-and-download.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, @@ -12,142 +21,154 @@ const { const sha384 = modules.hash; module.exports = function (app, config, renderTemplate) { - app.get("/download", async function (req, res) { - var v = req.query.v; + app.get("/download", async function (req, res) { + var v = req.query.v; - // video - const video = await modules.fetch(config.tubeApi + `video?v=${v}`); - const h = await video.text(); - const k = JSON.parse(modules.toJson(h)); + // video + const video = await modules.fetch(config.tubeApi + `video?v=${v}`); + const h = await video.text(); + const k = JSON.parse(modules.toJson(h)); - if (!v) res.redirect("/"); + if (!v) res.redirect("/"); - var fetching = await fetcher(v); - const j = fetching.video.Player.Formats.Format, - j_ = Array.isArray(j) ? j[j.length - 1] : j; - let url; - if (j_.URL != undefined) url = j_.URL; + var fetching = await fetcher(v); + const j = fetching.video.Player.Formats.Format, + j_ = Array.isArray(j) ? j[j.length - 1] : j; + let url; + if (j_.URL != undefined) url = j_.URL; - const json = fetching.video.Player; - const engagement = fetching.engagement; + const json = fetching.video.Player; + const engagement = fetching.engagement; - renderTemplate(res, req, "download.ejs", { - url: url, - engagement: engagement, - k: k, - video: json, - date: k.Video.uploadDate, - color: await modules - .getColors(`https://i.ytimg.com/vi/${v}/maxresdefault.jpg`) - .then((colors) => colors[0].hex()), + renderTemplate(res, req, "download.ejs", { + url: url, + engagement: engagement, + k: k, + video: json, + date: k.Video.uploadDate, + color: await modules + .getColors(`https://i.ytimg.com/vi/${v}/maxresdefault.jpg`) + .then((colors) => colors[0].hex()), + }); }); -}); -app.get("/old/watch", async function (req, res) { - var v = req.query.v; - var e = req.query.e; - if (!v) res.redirect("/"); + app.get("/old/watch", async function (req, res) { + var v = req.query.v; + var e = req.query.e; + if (!v) res.redirect("/"); - res.redirect(`/watch?v=${v}`); -}); - -app.get("/search", async (req, res) => { - const query = req.query.query; - - if (req.query.continuation) { - var continuation = req.query.continuation; - } - if (!req.query.continuation) { - var continuation = ""; - } - - const search = await modules.fetch( - `https://tube.kuylar.dev/api/search?query=${query}&continuation=${continuation}` - ); - - const text = await search.text(); - const j = JSON.parse(modules.toJson(text)); - - if (!query) { - return res.redirect("/"); - } - - const summary = await wiki - .summary(query + " ") - .then((summary_) => (summary_.title !== "Not found." ? summary_ : "none")); - - renderTemplate(res, req, "search.ejs", { - j, - continuation, - q: query, - summary, + res.redirect(`/watch?v=${v}`); }); -}); -app.get("/channel/", async (req, res) => { - const ID = req.query.id; - const tab = req.query.tab; + app.get("/search", async (req, res) => { + const query = req.query.query; - // about - const bout = await modules.fetch( - config.tubeApi + `channel?id=${ID}&tab=about` - ); - const h = await bout.text(); - const k = JSON.parse(modules.toJson(h)); + if (req.query.continuation) { + var continuation = req.query.continuation; + } + if (!req.query.continuation) { + var continuation = ""; + } - if (req.query.continuation) { - var continuation = req.query.continuation; - } - if (!req.query.continuation) { - var continuation = ""; - } + const search = await modules.fetch( + `https://tube.kuylar.dev/api/search?query=${query}&continuation=${continuation}` + ); - //videos - const channel = await modules.fetch( - config.tubeApi + `channel?id=${ID}&tab=shorts&Continuation=${continuation}` - ); - const c = await channel.text(); - const tj = JSON.parse(modules.toJson(c)); + const text = await search.text(); + const j = JSON.parse(modules.toJson(text)); - const summary = await wiki.summary(k.Channel.Metadata.Name); + if (!query) { + return res.redirect("/"); + } - var w = ""; - if (summary.title === "Not found.") { - w = "none"; - } - if (summary.title !== "Not found.") { - w = summary; - } + h = " "; - const { Subscribers: subscribers } = k.Channel.Metadata; - const description = k.Channel.Contents.ItemSection.About.Description; + if (j.Search.Results.DynamicItem) { + if (j.Search.Results.DynamicItem.id == "didYouMeanRenderer") { + var h = JSON.parse(j.Search.Results.DynamicItem.Title); + } + } - var d = description.toString().replace(/\n/g, "
"); - if (d === "[object Object]") { - var d = ""; - } + const summary = await wiki + .summary(query + " ") + .then((summary_) => + summary_.title !== "Not found." ? summary_ : "none" + ); - var dnoreplace = description.toString(); - if (dnoreplace === "[object Object]") { - var dnoreplace = ""; - } - - renderTemplate(res, req, "channel.ejs", { - ID: ID, - tab: tab, - j: k, - tj: tj, - dnoreplace: dnoreplace, - continuation: continuation, - wiki: w, - getFirstLine: getFirstLine, - isMobile: req.useragent.isMobile, - about: k.Channel.Contents.ItemSection.About, - subs: - typeof subscribers === "string" - ? subscribers.replace("subscribers", "") - : "Private", - desc: d, + renderTemplate(res, req, "search.ejs", { + j, + h, + continuation, + q: query, + summary, + }); }); -}); -} \ No newline at end of file + + app.get("/channel/", async (req, res) => { + const ID = req.query.id; + const tab = req.query.tab; + + // about + const bout = await modules.fetch( + config.tubeApi + `channel?id=${ID}&tab=about` + ); + const h = await bout.text(); + const k = JSON.parse(modules.toJson(h)); + + if (req.query.continuation) { + var continuation = req.query.continuation; + } + if (!req.query.continuation) { + var continuation = ""; + } + + //videos + const channel = await modules.fetch( + config.tubeApi + + `channel?id=${ID}&tab=shorts&Continuation=${continuation}` + ); + const c = await channel.text(); + const tj = JSON.parse(modules.toJson(c)); + + const summary = await wiki.summary(k.Channel.Metadata.Name); + + var w = ""; + if (summary.title === "Not found.") { + w = "none"; + } + if (summary.title !== "Not found.") { + w = summary; + } + + const { Subscribers: subscribers } = k.Channel.Metadata; + const description = k.Channel.Contents.ItemSection.About.Description; + + var d = description.toString().replace(/\n/g, "
"); + if (d === "[object Object]") { + var d = ""; + } + + var dnoreplace = description.toString(); + if (dnoreplace === "[object Object]") { + var dnoreplace = ""; + } + + renderTemplate(res, req, "channel.ejs", { + ID: ID, + tab: tab, + j: k, + tj: tj, + dnoreplace: dnoreplace, + continuation: continuation, + wiki: w, + getFirstLine: getFirstLine, + isMobile: req.useragent.isMobile, + about: k.Channel.Contents.ItemSection.About, + subs: + typeof subscribers === "string" + ? subscribers.replace("subscribers", "") + : "Private", + desc: d, + }); + }); +};