add im feeling lucky :3

This commit is contained in:
Ashley 2023-12-26 14:48:46 +00:00
parent 290597aff9
commit 88447d0cb6

View file

@ -44,15 +44,15 @@ function getJson(str) {
* @property {string} streams - Base64-encoded value for the streams tab. * @property {string} streams - Base64-encoded value for the streams tab.
*/ */
// see https://developers.google.com/youtube/v3/docs/channels/ // see https://developers.google.com/youtube/v3/docs/channels/
const ChannelTabs = { const ChannelTabs = {
community: "Y29tbXVuaXR5", community: "Y29tbXVuaXR5",
shorts: "c2hvcnRz", shorts: "c2hvcnRz",
videos: "dmlkZW9z", videos: "dmlkZW9z",
streams: "c3RyZWFtcw==", // or "live" streams: "c3RyZWFtcw==", // or "live"
channels:"Y2hhbm5lbHM=", channels: "Y2hhbm5lbHM=",
store:"c3RvcmU=", store: "c3RvcmU=",
released:"cmVsZWFzZWQ=" released: "cmVsZWFzZWQ=",
}; };
module.exports = function (app, config, renderTemplate) { module.exports = function (app, config, renderTemplate) {
@ -80,11 +80,10 @@ module.exports = function (app, config, renderTemplate) {
res.redirect(`/watch?v=${v}`); res.redirect(`/watch?v=${v}`);
}); });
app.get("/api/getchanneltabs", async function (req, res) { app.get("/api/getchanneltabs", async function (req, res) {
res.json(ChannelTabs); res.json(ChannelTabs);
}); });
app.get("/search", async (req, res) => { app.get("/search", async (req, res) => {
const query = req.query.query; const query = req.query.query;
const tab = req.query.tab; const tab = req.query.tab;
@ -128,19 +127,23 @@ module.exports = function (app, config, renderTemplate) {
let type = "video"; let type = "video";
let duration = req.query.duration || ""; let duration = req.query.duration || "";
let sort = req.query.sort || ""; let sort = req.query.sort || "";
try { try {
const headers = {}; const headers = {};
const xmlData = await fetch(`https://invid-api.poketube.fun/api/v1/search?q=${encodeURIComponent( const xmlData = await fetch(
query `https://invid-api.poketube.fun/api/v1/search?q=${encodeURIComponent(
)}&page=${encodeURIComponent(continuation)}&date=${date}&type=${type}&duration=${duration}&sort=${sort}&hl=en+gb`) query
.then((res) => res.text()) )}&page=${encodeURIComponent(
.then((txt) => getJson(txt)); continuation
)}&date=${date}&type=${type}&duration=${duration}&sort=${sort}&hl=en+gb`
)
.then((res) => res.text())
.then((txt) => getJson(txt));
renderTemplate(res, req, "search.ejs", { renderTemplate(res, req, "search.ejs", {
invresults: xmlData, invresults: xmlData,
turntomins, turntomins,
date, date,
type, type,
duration, duration,
@ -159,12 +162,45 @@ module.exports = function (app, config, renderTemplate) {
} }
}); });
app.get("/im-feeling-lucky", function (req, res) {
const query = req.query.query;
const search = require("google-it");
const getRandomLinkAndRedirect = (query, res) => {
search({ query: `${query}` }).then((results) => {
// Check if there are any results
if (results.length > 0) {
// Get a random index
const randomIndex = Math.floor(Math.random() * results.length);
// Get the random result object
const randomResult = results[randomIndex];
// Get the link from the random result
const randomLink = randomResult.link;
// Redirect to the random link
res.redirect(randomLink);
} else {
// Handle case when no results are found
res.send("No results found.");
}
});
};
getRandomLinkAndRedirect(query, res);
});
app.get("/web", async (req, res) => { app.get("/web", async (req, res) => {
const query = req.query.query; const query = req.query.query;
const tab = req.query.tab; const tab = req.query.tab;
const search = require("google-it"); const search = require("google-it");
if (req.query.lucky === 'true') {
res.redirect('/im-feeling-lucky?query=' + query)
}
var uaos = req.useragent.os; var uaos = req.useragent.os;
var IsOldWindows; var IsOldWindows;
@ -279,6 +315,18 @@ module.exports = function (app, config, renderTemplate) {
getChannelData(channelINVUrl), getChannelData(channelINVUrl),
]); ]);
function getThumbnailUrl(video) {
const maxresDefaultThumbnail = video.videoThumbnails.find(
(thumbnail) => thumbnail.quality === "maxresdefault"
);
if (maxresDefaultThumbnail) {
return `https://vid.puffyan.us/vi/${video.videoId}/maxresdefault.jpg`;
} else {
return `https://vid.puffyan.us/vi/${video.videoId}/hqdefault.jpg`;
}
}
cache[ID] = { cache[ID] = {
result: { result: {
tj, tj,
@ -317,6 +365,7 @@ module.exports = function (app, config, renderTemplate) {
turntomins, turntomins,
media_proxy_url: config.media_proxy, media_proxy_url: config.media_proxy,
dnoreplace, dnoreplace,
getThumbnailUrl,
continuation, continuation,
wiki: "", wiki: "",
getFirstLine, getFirstLine,