diff --git a/src/libpoketube/init/pages-video.js b/src/libpoketube/init/pages-video.js index eb5b8400..6b2e288d 100644 --- a/src/libpoketube/init/pages-video.js +++ b/src/libpoketube/init/pages-video.js @@ -141,8 +141,8 @@ function lightOrDark(color) { } function isDntEnabled(req) { - const dntHeader = req.header('DNT'); - return dntHeader && (dntHeader === '1' || dntHeader === 'true'); + const dntHeader = req.header("DNT"); + return dntHeader && (dntHeader === "1" || dntHeader === "true"); } function IsInArray(array, id) { @@ -184,7 +184,7 @@ module.exports = function (app, config, renderTemplate) { }); app.get("/watch", async (req, res) => { - const { dm, region, hl, v, e, r, f, m, quality: q, a, universe, } = req.query; + const { dm, region, hl, v, e, r, f, m, quality: q, a, universe, } = req.query; if (!v) { return res.redirect("/"); @@ -202,153 +202,158 @@ module.exports = function (app, config, renderTemplate) { const secure = ["poketube.fun"].includes(req.hostname); const verify = req.hostname === "poketube.sudovanilla.com"; - - INNERTUBE.getYouTubeApiVideo(f, v, contentlang, contentregion).then((data) => { - try { - const k = data?.video; - const channel_uploads = data?.channel_uploads - const json = data?.json; - const engagement = data?.engagement; - const inv_comments = data?.comments || "Disabled"; - const inv_vid = data?.vid; - const desc = data?.desc || ""; - - let d = false; - if (desc !== "[object Object]") { - d = desc.toString().replace(/\n/g, "
"); - } - - - const descriptionString = String(inv_vid?.description); - - function extractInfo(regex) { - return descriptionString !== "[object Object]" - ? (regex.exec(descriptionString) ?? {}).groups - : undefined; - } - - const support = extractInfo(PATREON_REGEX); - const twitter = extractInfo(X_REGEX); - const discord = extractInfo(CORD_REGEX); - const twitch = extractInfo(TWITCH_REGEX); - const reddit = extractInfo(REDDIT_REGEX); - const instagram = extractInfo(INSTAGRAM_REGEX); - - - var proxyurl = config.p_url; - var vidurl = u.url; - var isvidious = u.isInvidiousURL; - var mediaproxy = config.media_proxy - - - if (inv_vid?.genre === "Music") { - var vidurl = u.losslessurl; - } - - var vidurl = config.videourl; - var isvidious = true; - - if (req.useragent.source.includes("Pardus")) { - var vidurl = "https://iv.ggtyler.dev"; - var mediaproxy = "https://nyc1.pokejan.ggtyler.dev/" - var isvidious = true; - var isSchoolProxy = ""; - } - - // unused - let badges = ""; - let comments = ""; - let nnn = ""; - - const dnt_val = isDntEnabled(req) - - if ( - inv_vid?.error === - "The uploader has not made this video available in your country" || - inv_vid?.error === "This video is not available" - ) { - res.send( - "error: " + inv_vid.error + " please refresh the page please qt" - ); - } - - var uaos = req.useragent.os; - const browser = req.useragent.browser; - const IsOldWindows = - (uaos === "Windows 7" || uaos === "Windows 8") && - browser === "Firefox"; - - if (uaos === "Windows XP" || uaos === "Windows Vista") - res.redirect("/lite?v=" + req.query.v); - - if (req.query.from === "short") var shortsui = true; + INNERTUBE.getYouTubeApiVideo(f, v, contentlang, contentregion).then( + (data) => { try { - renderTemplate(res, req, "poketube.ejs", { - color: data.color, - color2: data.color2, - linkify, - engagement, - IsOldWindows, - channelurlfixer, - support, - shortsui, - u: vidurl, - isvidious: isvidious, - video: json, - date: k.Video.uploadDate, - e, - a, - twitter, - k, - dm, - proxyurl, - media_proxy_url: mediaproxy, - instagram, - useragent: req.useragent, - verify, - discord, - turntomins, - twitch, - dnt_val, - reddit, - channel_uploads, - secure, - process, - isSchoolProxy, - sha384, - lightOrDark, - isMobile: req.useragent.isMobile, - tj: data.channel, - r, - qua: q, - inv: inv_comments, - convert, - universe, - wiki: data.wiki, - escapeHtml, - f, - t: config.t_url, - optout: m, - badges, - desc, - comments, - n: nnn, - inv_vid, - lyrics: "", - }); - } catch { - return; + const k = data?.video; + const channel_uploads = data?.channel_uploads; + const json = data?.json; + const engagement = data?.engagement; + const inv_comments = data?.comments || "Disabled"; + const inv_vid = data?.vid; + const desc = data?.desc || ""; + + let d = false; + if (desc !== "[object Object]") { + d = desc.toString().replace(/\n/g, "
"); + } + + const descriptionString = String(inv_vid?.description); + + function extractInfo(regex) { + return descriptionString !== "[object Object]" + ? (regex.exec(descriptionString) ?? {}).groups + : undefined; + } + + const support = extractInfo(PATREON_REGEX); + const twitter = extractInfo(X_REGEX); + const discord = extractInfo(CORD_REGEX); + const twitch = extractInfo(TWITCH_REGEX); + const reddit = extractInfo(REDDIT_REGEX); + const instagram = extractInfo(INSTAGRAM_REGEX); + + var proxyurl = config.p_url; + var vidurl = u.url; + var isvidious = u.isInvidiousURL; + var mediaproxy = config.media_proxy; + + if (inv_vid?.genre === "Music") { + var vidurl = u.losslessurl; + } + + var vidurl = config.videourl; + var isvidious = true; + + if (req.useragent.source.includes("Pardus")) { + var vidurl = "https://iv.ggtyler.dev"; + var mediaproxy = "https://nyc1.pokejan.ggtyler.dev/"; + var isvidious = true; + var isSchoolProxy = ""; + } + + // unused + let badges = ""; + let comments = ""; + let nnn = ""; + + const dnt_val = isDntEnabled(req); + + if ( + inv_vid?.error === + "The uploader has not made this video available in your country" || + inv_vid?.error === "This video is not available" + ) { + res.send( + "error: " + inv_vid.error + " please refresh the page please qt" + ); + } + + if (inv_vid.error) { + renderTemplate(res, req, "404.ejs", { + v, + }); + } + + var uaos = req.useragent.os; + const browser = req.useragent.browser; + const IsOldWindows = + (uaos === "Windows 7" || uaos === "Windows 8") && + browser === "Firefox"; + + if (uaos === "Windows XP" || uaos === "Windows Vista") + res.redirect("/lite?v=" + req.query.v); + + if (req.query.from === "short") var shortsui = true; + + try { + renderTemplate(res, req, "poketube.ejs", { + color: data.color, + color2: data.color2, + linkify, + engagement, + IsOldWindows, + channelurlfixer, + support, + shortsui, + u: vidurl, + isvidious: isvidious, + video: json, + date: k.Video.uploadDate, + e, + a, + twitter, + k, + dm, + proxyurl, + media_proxy_url: mediaproxy, + instagram, + useragent: req.useragent, + verify, + discord, + turntomins, + twitch, + dnt_val, + reddit, + channel_uploads, + secure, + process, + isSchoolProxy, + sha384, + lightOrDark, + isMobile: req.useragent.isMobile, + tj: data.channel, + r, + qua: q, + inv: inv_comments, + convert, + universe, + wiki: data.wiki, + escapeHtml, + f, + t: config.t_url, + optout: m, + badges, + desc, + comments, + n: nnn, + inv_vid, + lyrics: "", + }); + } catch { + return; + } + } catch (error) { + console.error(error); + return res.redirect(`/watch?v=${req.query.v}&fx=1&err=${error}`); } - } catch (error) { - console.error(error); - return res.redirect(`/watch?v=${req.query.v}&fx=1&err=${error}`); } - }); + ); }); app.get("/lite", async (req, res) => { - const { dm, region, hl, v, e, r, f, m, quality: q, a, universe, } = req.query; + const { dm, region, hl, v, e, r, f, m, quality: q, a, universe, } = req.query; if (!v) { return res.redirect("/"); @@ -366,145 +371,144 @@ module.exports = function (app, config, renderTemplate) { const secure = ["poketube.fun"].includes(req.hostname); const verify = req.hostname === "poketube.sudovanilla.com"; - - INNERTUBE.getYouTubeApiVideo(f, v, contentlang, contentregion).then((data) => { - try { - const k = data?.video; - const channel_uploads = data?.channel_uploads - const json = data?.json; - const engagement = data?.engagement; - const inv_comments = data?.comments || "Disabled"; - const inv_vid = data?.vid; - const desc = data?.desc || ""; - - let d = false; - if (desc !== "[object Object]") { - d = desc.toString().replace(/\n/g, "
"); - } - - - const descriptionString = String(inv_vid?.description); - - function extractInfo(regex) { - return descriptionString !== "[object Object]" - ? (regex.exec(descriptionString) ?? {}).groups - : undefined; - } - - const support = extractInfo(PATREON_REGEX); - const twitter = extractInfo(X_REGEX); - const discord = extractInfo(CORD_REGEX); - const twitch = extractInfo(TWITCH_REGEX); - const reddit = extractInfo(REDDIT_REGEX); - const instagram = extractInfo(INSTAGRAM_REGEX); - - - var proxyurl = config.p_url; - var vidurl = u.url; - var isvidious = u.isInvidiousURL; - var mediaproxy = config.media_proxy - - - if (inv_vid?.genre === "Music") { - var vidurl = u.losslessurl; - } - - var vidurl = "https://eu-proxy.poketube.fun"; - var isvidious = true; - - if (req.useragent.source.includes("Pardus")) { - var vidurl = "https://iv.ggtyler.dev"; - var mediaproxy = "https://media-proxy.ashley0143.xyz" - var isvidious = true; - var isSchoolProxy = ""; - } - - // unused - let badges = ""; - let comments = ""; - let nnn = ""; - - const dnt_val = isDntEnabled(req) - - if ( - inv_vid?.error === - "The uploader has not made this video available in your country" || - inv_vid?.error === "This video is not available" - ) { - res.send( - "error: " + inv_vid.error + " please refresh the page please qt" - ); - } - - var uaos = req.useragent.os; - const browser = req.useragent.browser; - const IsOldWindows = - (uaos === "Windows 7" || uaos === "Windows 8") && - browser === "Firefox"; - - if (req.query.from === "short") var shortsui = true; + INNERTUBE.getYouTubeApiVideo(f, v, contentlang, contentregion).then( + (data) => { try { - renderTemplate(res, req, "lite.ejs", { - color: data.color, - color2: data.color2, - linkify, - engagement, - IsOldWindows, - channelurlfixer, - support, - shortsui, - u: vidurl, - isvidious: isvidious, - video: json, - date: k.Video.uploadDate, - e, - a, - twitter, - k, - dm, - proxyurl, - media_proxy_url: mediaproxy, - instagram, - useragent: req.useragent, - verify, - discord, - turntomins, - twitch, - dnt_val, - reddit, - channel_uploads, - secure, - process, - isSchoolProxy, - sha384, - lightOrDark, - isMobile: req.useragent.isMobile, - tj: data.channel, - r, - qua: q, - inv: inv_comments, - convert, - universe, - wiki: data.wiki, - f, - t: config.t_url, - optout: m, - badges, - desc, - comments, - n: nnn, - inv_vid, - lyrics: "", - }); - } catch { - return; + const k = data?.video; + const channel_uploads = data?.channel_uploads; + const json = data?.json; + const engagement = data?.engagement; + const inv_comments = data?.comments || "Disabled"; + const inv_vid = data?.vid; + const desc = data?.desc || ""; + + let d = false; + if (desc !== "[object Object]") { + d = desc.toString().replace(/\n/g, "
"); + } + + const descriptionString = String(inv_vid?.description); + + function extractInfo(regex) { + return descriptionString !== "[object Object]" + ? (regex.exec(descriptionString) ?? {}).groups + : undefined; + } + + const support = extractInfo(PATREON_REGEX); + const twitter = extractInfo(X_REGEX); + const discord = extractInfo(CORD_REGEX); + const twitch = extractInfo(TWITCH_REGEX); + const reddit = extractInfo(REDDIT_REGEX); + const instagram = extractInfo(INSTAGRAM_REGEX); + + var proxyurl = config.p_url; + var vidurl = u.url; + var isvidious = u.isInvidiousURL; + var mediaproxy = config.media_proxy; + + if (inv_vid?.genre === "Music") { + var vidurl = u.losslessurl; + } + + var vidurl = "https://eu-proxy.poketube.fun"; + var isvidious = true; + + if (req.useragent.source.includes("Pardus")) { + var vidurl = "https://iv.ggtyler.dev"; + var mediaproxy = "https://media-proxy.ashley0143.xyz"; + var isvidious = true; + var isSchoolProxy = ""; + } + + // unused + let badges = ""; + let comments = ""; + let nnn = ""; + + const dnt_val = isDntEnabled(req); + + if ( + inv_vid?.error === + "The uploader has not made this video available in your country" || + inv_vid?.error === "This video is not available" + ) { + res.send( + "error: " + inv_vid.error + " please refresh the page please qt" + ); + } + + var uaos = req.useragent.os; + const browser = req.useragent.browser; + const IsOldWindows = + (uaos === "Windows 7" || uaos === "Windows 8") && + browser === "Firefox"; + + if (req.query.from === "short") var shortsui = true; + + try { + renderTemplate(res, req, "lite.ejs", { + color: data.color, + color2: data.color2, + linkify, + engagement, + IsOldWindows, + channelurlfixer, + support, + shortsui, + u: vidurl, + isvidious: isvidious, + video: json, + date: k.Video.uploadDate, + e, + a, + twitter, + k, + dm, + proxyurl, + media_proxy_url: mediaproxy, + instagram, + useragent: req.useragent, + verify, + discord, + turntomins, + twitch, + dnt_val, + reddit, + channel_uploads, + secure, + process, + isSchoolProxy, + sha384, + lightOrDark, + isMobile: req.useragent.isMobile, + tj: data.channel, + r, + qua: q, + inv: inv_comments, + convert, + universe, + wiki: data.wiki, + f, + t: config.t_url, + optout: m, + badges, + desc, + comments, + n: nnn, + inv_vid, + lyrics: "", + }); + } catch { + return; + } + } catch (error) { + console.error(error); + return res.redirect(`/watch?v=${req.query.v}&fx=1&err=${error}`); } - } catch (error) { - console.error(error); - return res.redirect(`/watch?v=${req.query.v}&fx=1&err=${error}`); } - }); + ); }); app.get("/music", async function (req, res) { @@ -655,4 +659,4 @@ module.exports = function (app, config, renderTemplate) { } } }); -}; \ No newline at end of file +};