diff --git a/src/libpoketube/init/pages-video.js b/src/libpoketube/init/pages-video.js
new file mode 100644
index 00000000..e5feb3f2
--- /dev/null
+++ b/src/libpoketube/init/pages-video.js
@@ -0,0 +1,255 @@
+ 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;
+
+module.exports = function (app, config, renderTemplate) {
+ app.get("/encryption", async function (req, res) {
+ var v = req.query.v;
+
+ const video = await modules.fetch(config.tubeApi + `video?v=${v}`);
+ var fetching = await fetcher(v);
+
+ const json = fetching.video.Player;
+ const h = await video.text();
+ const k = JSON.parse(modules.toJson(h));
+ if (!v) res.redirect("/");
+
+ //video
+ 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;
+
+ // json response
+ const re = {
+ main: {
+ video_id: sha384(json.id),
+ channel: sha384(json.Channel.Name),
+ title: sha384(json.Title),
+ date: sha384(btoa(Date.now()).toString()),
+ },
+ info: {
+ desc: sha384(json.Description),
+ },
+ video: {
+ title: sha384(json.Title),
+ url: sha384(url),
+ },
+ };
+
+ res.json(re);
+});
+
+app.get("/watch", async function (req, res) {
+ /*
+ * QUERYS
+ * v = Video ID
+ * e = Embed
+ * r = Recommended videos
+ * f = Recent videos from channel
+ * t = Piwik OptOut
+ * q = quality obv
+ */
+ var v = req.query.v;
+ var e = req.query.e;
+ var r = req.query.r;
+ var f = req.query.f;
+ var t = req.query.t;
+ var q = req.query.quality;
+
+ const info = await modules.fetch("http://ip-api.com/json/");
+ const jj = await info.text();
+ const ip = JSON.parse(jj);
+
+ for (let i = 0; i < 3; i++) {
+ try {
+ core.video(v).then((data) => {
+ const k = data.video;
+ const json = data.json;
+ const engagement = data.engagement;
+ var inv_comments = data.comments;
+ const inv_vid = data.vid;
+
+ if (!data.comments) inv_comments = "Disabled";
+
+ if (!core.video(v).b) {
+ var nnn = "";
+ var badges = "";
+ var comments = "";
+ }
+
+ if (!v) res.redirect("/");
+
+ if (q === "medium") {
+ var url = `https://inv.vern.cc/latest_version?id=${v}&itag=18&local=true`;
+ }
+
+ // encryption
+ const url_e =
+ url +
+ "?e=" +
+ sha384(k.Video.Channel.id) +
+ sha384(k.Video.Channel.id) +
+ "Piwik" +
+ sha384(config.t_url);
+
+ const desc = data.desc;
+
+ var d = desc.toString().replace(/\n/g, "
");
+
+ if (d === "[object Object]") {
+ var d = false;
+ }
+
+ renderTemplate(res, req, "poketube.ejs", {
+ url: url_e,
+ color: data.color,
+ engagement: engagement,
+ video: json,
+ date: k.Video.uploadDate,
+ e: e,
+ k: k,
+ process: process,
+ sha384: sha384,
+ isMobile: req.useragent.isMobile,
+ tj: data.channel,
+ r: r,
+ qua: q,
+ inv: inv_comments,
+ ip: ip,
+ convert: convert,
+ wiki: data.wiki,
+ f: f,
+ t: config.t_url,
+ optout: t,
+ badges: badges,
+ desc: desc,
+ comments: comments,
+ n: nnn,
+ inv_vid,
+ lyrics: "",
+ });
+ });
+ break;
+ } catch (err) {
+ if (err.status === 503) {
+ // retry after a bit
+ await new Promise((resolve) => setTimeout(resolve, 1000));
+ } else {
+ return "";
+ }
+ }
+ }
+});
+
+app.get("/music", async function (req, res) {
+ /*
+ * QUERYS
+ * v = Video ID
+ * e = Embed
+ * r = Recommended videos
+ * f = Recent videos from channel
+ * t = Piwik OptOut
+ * q = quality obv
+ */
+ var v = req.query.v;
+ var e = req.query.e;
+ var r = req.query.r;
+ var f = req.query.f;
+ var t = req.query.t;
+
+ const info = await modules.fetch("http://ip-api.com/json/");
+ const n = await info.text();
+ const ip = JSON.parse(n);
+
+ if (!v) res.redirect("/");
+
+ var fetching = await fetcher(v);
+
+ const json = fetching.video.Player;
+
+ const video = await modules.fetch(config.tubeApi + `video?v=${v}`);
+
+ const h = await video.text();
+ const k = JSON.parse(modules.toJson(h));
+
+ if (!json.Channel.Name.endsWith(" - Topic")) {
+ res.redirect(`/watch?v=${v}`);
+ }
+
+ //video
+ var url = `https://tube.kuylar.dev/proxy/media/${v}/18`;
+
+ // encryption
+ const url_e =
+ url +
+ "?e=" +
+ sha384(k.Video.Channel.id) +
+ sha384(k.Video.Channel.id) +
+ "Piwik" +
+ sha384(config.t_url);
+
+ // channel info
+ const engagement = fetching.engagement;
+ const channel = await modules.fetch(
+ config.tubeApi + `channel?id=${k.Video.Channel.id}&tab=videos`
+ );
+ const c = await channel.text();
+ const tj = JSON.parse(modules.toJson(c));
+
+ // info
+ const song = await musicInfo.searchSong(
+ { title: k.Video.Title, artist: json.Channel.Name.replace("- Topic", "") },
+ 1000
+ );
+
+ if (!song) {
+ res.redirect(`/watch?v=${v}`);
+ }
+ var lyrics = await musicInfo
+ .searchLyrics({ title: song.title, artist: song.artist })
+ .catch(() => null);
+
+ var ly = "";
+
+ if (lyrics === null) {
+ ly = "This Is Where I'd Put The songs lyrics. IF IT HAD ONE ";
+ }
+
+ if (lyrics) {
+ ly = lyrics.lyrics.replace(/\n/g, "
");
+ }
+
+ renderTemplate(res, req, "poketube-music.ejs", {
+ url: url_e,
+ info: song,
+ color: await modules
+ .getColors(`https://i.ytimg.com/vi/${v}/maxresdefault.jpg`)
+ .then((colors) => colors[0].hex()),
+ engagement: engagement,
+ process: process,
+ ip: ip,
+ video: json,
+ date: modules.moment(k.Video.uploadDate).format("LL"),
+ e: e,
+ k: k,
+ sha384: sha384,
+ isMobile: req.useragent.isMobile,
+ tj: tj,
+ r: r,
+ f: f,
+ t: config.t_url,
+ optout: t,
+ lyrics: ly,
+ });
+});
+}
\ No newline at end of file