mirror of
				https://codeberg.org/ashley/poke
				synced 2025-07-17 16:52:11 +00:00 
			
		
		
		
	Update src/libpoketube/init/pages-api.js
This commit is contained in:
		
							parent
							
								
									4b33b38e1f
								
							
						
					
					
						commit
						4acf840d80
					
				| @ -33,32 +33,36 @@ const innertube = require("../libpoketube-youtubei-objects.json"); | ||||
| const { execSync } = require('child_process'); | ||||
| 
 | ||||
| const verfull = "v24.1906-sho-MAJOR_UPDATE-stable-dev-nonLTS-git-MTcxODc5NDY3NQ=="; | ||||
| const versmol = "v24.1906-sho" | ||||
| const versmol = "v24.1906-sho"; | ||||
| const branch = "dev/master"; | ||||
| const codename = "sho"; | ||||
| const versionnumber = "293"; | ||||
| const relaseunixdate = "MTcxODc5NDY3NQ==" | ||||
| const updatequote = "pls fund vennie plush -Bims" | ||||
| 
 | ||||
| const relaseunixdate = "MTcxODc5NDY3NQ=="; | ||||
| const updatequote = "pls fund vennie plush -Bims"; | ||||
| 
 | ||||
| module.exports = function (app, config, renderTemplate) { | ||||
| 
 | ||||
|   const headers = { | ||||
|     'User-Agent': config.useragent, // Set User-Agent from config
 | ||||
|   }; | ||||
| 
 | ||||
|   app.get("/vi/:v/:t", async function (req, res) { | ||||
|     var url = `https://i.ytimg.com/vi/${req.params.v}/${req.params.t}` | ||||
|      | ||||
|        let f = await modules.fetch(url + `?cachefixer=${btoa(Date.now())}`, { | ||||
|     var url = `https://i.ytimg.com/vi/${req.params.v}/${req.params.t}`; | ||||
| 
 | ||||
|     let f = await modules.fetch(url + `?cachefixer=${btoa(Date.now())}`, { | ||||
|       method: req.method, | ||||
|       headers: headers, // Add headers to the fetch request
 | ||||
|     }); | ||||
| 
 | ||||
|     f.body.pipe(res); | ||||
| 
 | ||||
|   }); | ||||
| 
 | ||||
| app.get("/avatars/:v", async function (req, res) { | ||||
|   app.get("/avatars/:v", async function (req, res) { | ||||
|     var url = `https://vid.puffyan.us/ggpht/${req.params.v}`; | ||||
| 
 | ||||
|     let f = await modules.fetch(url + `?cachefixer=${btoa(Date.now())}`, { | ||||
|       method: req.method, | ||||
|       headers: headers, // Add headers to the fetch request
 | ||||
|     }); | ||||
| 
 | ||||
|     f.body.pipe(res); | ||||
| @ -69,31 +73,22 @@ app.get("/avatars/:v", async function (req, res) { | ||||
| 
 | ||||
|     let f = await modules.fetch(url + `?cachefixer=${btoa(Date.now())}`, { | ||||
|       method: req.method, | ||||
|       headers: headers, // Add headers to the fetch request
 | ||||
|     }); | ||||
| 
 | ||||
|     f.body.pipe(res); | ||||
|   }); | ||||
| 
 | ||||
| 
 | ||||
|   app.get("/avatars/ytc/:v", async function (req, res) { | ||||
|     var url = `https://vid.puffyan.us/ggpht/ytc/${req.params.v.replace("ytc", "")}`; | ||||
| 
 | ||||
|     let f = await modules.fetch(url + `?cachefixer=${btoa(Date.now())}`, { | ||||
|       method: req.method, | ||||
|       headers: headers, // Add headers to the fetch request
 | ||||
|     }); | ||||
| 
 | ||||
|     f.body.pipe(res); | ||||
|   }); | ||||
|    | ||||
|    | ||||
|   app.get("/api/search", async (req, res) => { | ||||
|     const query = req.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; | ||||
| @ -108,163 +103,126 @@ app.get("/avatars/:v", async function (req, res) { | ||||
| 
 | ||||
|   app.get("/api/subtitles", async (req, res) => { | ||||
|     const { fetch } = await import("undici"); | ||||
|      | ||||
| 
 | ||||
|     const id = req.query.v; | ||||
|     const l = req.query.h; | ||||
| 
 | ||||
|     try { | ||||
|       let url = `https://eu-proxy.poketube.fun/api/v1/captions/${id}?label=${l}`; | ||||
| 
 | ||||
|       let f = await fetch(url); | ||||
|       let f = await fetch(url, { | ||||
|         headers: headers, // Add headers to the fetch request
 | ||||
|       }); | ||||
| 
 | ||||
|       const body = await f.text(); | ||||
| 
 | ||||
|       res.send(body); | ||||
|     } catch {} | ||||
|   }); | ||||
|    | ||||
|  app.get("/api/getEngagementData", async (req, res) => { | ||||
|   const { fetch } = await import("undici"); | ||||
| 
 | ||||
|   const id = req.query.v; | ||||
| 
 | ||||
|   try { | ||||
|     if (id) { | ||||
|       const apiUrl = `https://ryd-proxy.kavin.rocks/votes/${id}&hash=d0550b6e28c8f93533a569c314d5b4e2`; | ||||
| 
 | ||||
|       const response = await fetch(apiUrl); | ||||
| 
 | ||||
|       if (response.status === 400) { | ||||
|         const error = await response.json(); | ||||
|         return res.status(400).send(error); | ||||
|       } | ||||
| 
 | ||||
|       const engagement = await response.json(); | ||||
| 
 | ||||
|       const likes = parseInt(engagement.likes) || 0; | ||||
|       const dislikes = parseInt(engagement.dislikes) || 0; | ||||
|       const total = likes + dislikes; | ||||
| 
 | ||||
|       const likePercentage = total > 0 ? ((likes / total) * 100).toFixed(2) : 0; | ||||
|       const dislikePercentage = total > 0 ? ((dislikes / total) * 100).toFixed(2) : 0; | ||||
| 
 | ||||
|       const getLikePercentageColor = (percentage) => { | ||||
|         if (percentage >= 80) { | ||||
|           return "green"; | ||||
|         } else if (percentage >= 50) { | ||||
|           return "orange"; | ||||
|         } else { | ||||
|           return "red"; | ||||
|         } | ||||
|       }; | ||||
| 
 | ||||
|       const getDislikePercentageColor = (percentage) => { | ||||
|         if (percentage >= 50) { | ||||
|           return "red"; | ||||
|         } else if (percentage >= 20) { | ||||
|           return "orange"; | ||||
|         } else { | ||||
|           return "green"; | ||||
|         } | ||||
|       }; | ||||
| 
 | ||||
|       const likeColor = getLikePercentageColor(likePercentage); | ||||
|       const dislikeColor = getDislikePercentageColor(dislikePercentage); | ||||
| 
 | ||||
|       const userScore = ( | ||||
|         parseFloat(likePercentage) - | ||||
|         parseFloat(dislikePercentage) / 2 | ||||
|       ).toFixed(2); | ||||
| 
 | ||||
|       const getUserScoreLabel = (score) => { | ||||
|         if (score >= 98) { | ||||
|           return "Masterpiece Video"; | ||||
|         } else if (score >= 80) { | ||||
|           return "Overwhelmingly Positive"; | ||||
|         } else if (score >= 60) { | ||||
|           return "Positive"; | ||||
|         } else if (score >= 40) { | ||||
|           return "Mixed"; | ||||
|         } else if (score >= 20) { | ||||
|           return "Negative"; | ||||
|         } else { | ||||
|           return "Overwhelmingly Negative"; | ||||
|         } | ||||
|       }; | ||||
| 
 | ||||
|       const userScoreLabel = getUserScoreLabel(userScore); | ||||
|       const userScoreColor = | ||||
|         userScore >= 80 ? "green" : userScore >= 50 ? "orange" : "red"; | ||||
| 
 | ||||
|       const respon = { | ||||
|         like_count: likes, | ||||
|         dislike_count: dislikes, | ||||
|         rating: engagement.rating, | ||||
|         userScore: { | ||||
|           label: userScoreLabel, | ||||
|           score: userScore, | ||||
|           color: userScoreColor, | ||||
|         }, | ||||
|         engagement: { | ||||
|           likeColor: likeColor, | ||||
|           dislikeColor: dislikeColor, | ||||
|           percentage: { | ||||
|             likePercentage: `${likePercentage}%`, | ||||
|             dislikePercentage: `${dislikePercentage}%`, | ||||
|           }, | ||||
|         }, | ||||
|         ReturnYouTubeDislikesApiRawResponse: engagement, | ||||
|       }; | ||||
| 
 | ||||
|       res.send(respon); | ||||
|     } else { | ||||
|       res.status(400).json("pls gib ID :3"); | ||||
|     } | ||||
|   } catch (error) { | ||||
|     res.status(500).json("whoops (error 500) >~<"); | ||||
|   } | ||||
| }); | ||||
| 
 | ||||
| app.use("/sb/i/:v/:imagePath/:img", async function (req, res) { | ||||
|   const { v, imagePath, img } = req.params;   | ||||
|   const { sqp, xywh } = req.query;   | ||||
|      const sighMatch = req.url.match(/&sigh=([^&#]+)/);   | ||||
|     const sigh = sighMatch ? sighMatch[1] : undefined; | ||||
|   | ||||
|   | ||||
|   const url = `https://yt.miruku.cafe/sb/i/${v}/${imagePath}/${img}?sqp=${sqp}&sigh=${sigh}&xywh=${req.query.xywh}`; | ||||
| 
 | ||||
|   try { | ||||
|     let f = await modules.fetch(url + `?cachefixer=${btoa(Date.now())}`, { | ||||
|       method: req.method, | ||||
|     }); | ||||
| 
 | ||||
|     f.body.pipe(res); | ||||
|     console.log(url) | ||||
|   } catch (error) { | ||||
|     console.error("Error fetching image:", error); | ||||
|     res.status(500).send("Error fetching image"); | ||||
|   } | ||||
| }); | ||||
|    | ||||
|   app.get("/api/storyboards", async (req, res) => { | ||||
|   app.get("/api/getEngagementData", async (req, res) => { | ||||
|     const { fetch } = await import("undici"); | ||||
| 
 | ||||
|     const id = req.query.v; | ||||
|     const l = req.query.h; | ||||
| 
 | ||||
|     try { | ||||
|         let url = `https://yt.miruku.cafe/api/v1/storyboards/${id}?width=320&height=180`; | ||||
|       if (id) { | ||||
|         const apiUrl = `https://ryd-proxy.kavin.rocks/votes/${id}&hash=d0550b6e28c8f93533a569c314d5b4e2`; | ||||
| 
 | ||||
|         let f = await fetch(url); | ||||
|         let body = await f.text(); | ||||
| 
 | ||||
|          body = body.replace(/#xywh=(\d+),(\d+),(\d+),(\d+)/g, (match, x, y, w, h) => { | ||||
|             return `&xywh=${x},${y},${w},${h}`;   | ||||
|         const response = await fetch(apiUrl, { | ||||
|           headers: headers, // Add headers to the fetch request
 | ||||
|         }); | ||||
| 
 | ||||
|         res.send(body); | ||||
|     } catch {} | ||||
| }); | ||||
|         if (response.status === 400) { | ||||
|           const error = await response.json(); | ||||
|           return res.status(400).send(error); | ||||
|         } | ||||
| 
 | ||||
|         const engagement = await response.json(); | ||||
| 
 | ||||
|         const likes = parseInt(engagement.likes) || 0; | ||||
|         const dislikes = parseInt(engagement.dislikes) || 0; | ||||
|         const total = likes + dislikes; | ||||
| 
 | ||||
|         const likePercentage = total > 0 ? ((likes / total) * 100).toFixed(2) : 0; | ||||
|         const dislikePercentage = total > 0 ? ((dislikes / total) * 100).toFixed(2) : 0; | ||||
| 
 | ||||
|         const getLikePercentageColor = (percentage) => { | ||||
|           if (percentage >= 80) { | ||||
|             return "green"; | ||||
|           } else if (percentage >= 50) { | ||||
|             return "orange"; | ||||
|           } else { | ||||
|             return "red"; | ||||
|           } | ||||
|         }; | ||||
| 
 | ||||
|         const getDislikePercentageColor = (percentage) => { | ||||
|           if (percentage >= 50) { | ||||
|             return "red"; | ||||
|           } else if (percentage >= 20) { | ||||
|             return "orange"; | ||||
|           } else { | ||||
|             return "green"; | ||||
|           } | ||||
|         }; | ||||
| 
 | ||||
|         const likeColor = getLikePercentageColor(likePercentage); | ||||
|         const dislikeColor = getDislikePercentageColor(dislikePercentage); | ||||
| 
 | ||||
|         const userScore = ( | ||||
|           parseFloat(likePercentage) - | ||||
|           parseFloat(dislikePercentage) / 2 | ||||
|         ).toFixed(2); | ||||
| 
 | ||||
|         const getUserScoreLabel = (score) => { | ||||
|           if (score >= 98) { | ||||
|             return "Masterpiece Video"; | ||||
|           } else if (score >= 80) { | ||||
|             return "Overwhelmingly Positive"; | ||||
|           } else if (score >= 60) { | ||||
|             return "Positive"; | ||||
|           } else if (score >= 40) { | ||||
|             return "Mixed"; | ||||
|           } else if (score >= 20) { | ||||
|             return "Negative"; | ||||
|           } else { | ||||
|             return "Overwhelmingly Negative"; | ||||
|           } | ||||
|         }; | ||||
| 
 | ||||
|         const userScoreLabel = getUserScoreLabel(userScore); | ||||
|         const userScoreColor = | ||||
|           userScore >= 80 ? "green" : userScore >= 50 ? "orange" : "red"; | ||||
| 
 | ||||
|         const respon = { | ||||
|           like_count: likes, | ||||
|           dislike_count: dislikes, | ||||
|           rating: engagement.rating, | ||||
|           userScore: { | ||||
|             label: userScoreLabel, | ||||
|             score: userScore, | ||||
|             color: userScoreColor, | ||||
|           }, | ||||
|           engagement: { | ||||
|             likeColor: likeColor, | ||||
|             dislikeColor: dislikeColor, | ||||
|             percentage: { | ||||
|               likePercentage: `${likePercentage}%`, | ||||
|               dislikePercentage: `${dislikePercentage}%`, | ||||
|             }, | ||||
|           }, | ||||
|           ReturnYouTubeDislikesApiRawResponse: engagement, | ||||
|         }; | ||||
| 
 | ||||
|         res.send(respon); | ||||
|       } else { | ||||
|         res.status(400).json("pls gib ID :3"); | ||||
|       } | ||||
|     } catch (error) { | ||||
|       res.status(500).json("whoops (error 500) >~<"); | ||||
|     } | ||||
|   }); | ||||
| 
 | ||||
|   app.get("/feeds/videos.xml", async (req, res) => { | ||||
|     const id = req.query.channel_id; | ||||
| @ -273,25 +231,25 @@ app.use("/sb/i/:v/:imagePath/:img", async function (req, res) { | ||||
| 
 | ||||
|     let f = await modules.fetch(url, { | ||||
|       method: req.method, | ||||
|       headers: headers, // Add headers to the fetch request
 | ||||
|     }); | ||||
| 
 | ||||
|     f.body.pipe(res); | ||||
|   }); | ||||
| 
 | ||||
|  app.get("/api/manifest/dash/id/:id", async (req, res) => { | ||||
|   app.get("/api/manifest/dash/id/:id", async (req, res) => { | ||||
|     const id = req.params.id; | ||||
| 
 | ||||
|     let url = `https://invid-api.poketube.fun/bHj665PpYhUdPWuKPfZuQGoX/api/manifest/dash/id/${id}`; | ||||
| 
 | ||||
|     let f = await modules.fetch(url, { | ||||
|       method: req.method, | ||||
|       headers: headers, // Add headers to the fetch request
 | ||||
|     }); | ||||
| 
 | ||||
|     f.body.pipe(res); | ||||
|   }); | ||||
| 
 | ||||
|   | ||||
| 
 | ||||
|   app.get("/api/redirect", async (req, res) => { | ||||
|     const red_url = atob(req.query.u); | ||||
| 
 | ||||
| @ -314,38 +272,40 @@ app.use("/sb/i/:v/:imagePath/:img", async function (req, res) { | ||||
|     let latestCommitHash; | ||||
| 
 | ||||
|     const invidious = await modules | ||||
|       .fetch("https://invid-api.poketube.fun/bHj665PpYhUdPWuKPfZuQGoX/api/v1/stats") | ||||
|       .fetch("https://invid-api.poketube.fun/bHj665PpYhUdPWuKPfZuQGoX/api/v1/stats", { | ||||
|         headers: headers, // Add headers to the fetch request
 | ||||
|       }) | ||||
|       .then((res) => res.text()) | ||||
|       .then((txt) => getJson(txt)); | ||||
|         | ||||
|        const cpus = os.cpus(); | ||||
|        const totalMemory = os.totalmem() / (1024 * 1024 * 1024);  | ||||
|        const roundedMemory = totalMemory.toFixed(2);  | ||||
| 
 | ||||
| execSync('git rev-list HEAD -n 1 --abbrev-commit', (error, stdout, stderr) => { | ||||
|   if (error || stderr) { | ||||
|     console.error(`Error executing command: ${error || stderr}`); | ||||
|     return; | ||||
|   } | ||||
|     const cpus = os.cpus(); | ||||
|     const totalMemory = os.totalmem() / (1024 * 1024 * 1024); | ||||
|     const roundedMemory = totalMemory.toFixed(2); | ||||
| 
 | ||||
|    latestCommitHash = stdout.trim();  | ||||
|  });  | ||||
|     execSync('git rev-list HEAD -n 1 --abbrev-commit', (error, stdout, stderr) => { | ||||
|       if (error || stderr) { | ||||
|         console.error(`Error executing command: ${error || stderr}`); | ||||
|         return; | ||||
|       } | ||||
| 
 | ||||
|       latestCommitHash = stdout.trim(); | ||||
|     }); | ||||
| 
 | ||||
|     const response = { | ||||
|       pt_version: { | ||||
|        version:versmol, | ||||
|        version_full:verfull, | ||||
|        commit: latestCommitHash | ||||
|         version: versmol, | ||||
|         version_full: verfull, | ||||
|         commit: latestCommitHash, | ||||
|       }, | ||||
|       branch, | ||||
|       updatequote, | ||||
|       relaseunixdate, | ||||
|       vernum: versionnumber, | ||||
|       codename, | ||||
|       config:cnf, | ||||
|       system:{ | ||||
|       ram:`${roundedMemory} GB`, | ||||
|       cpu:cpus[0].model, | ||||
|       config: cnf, | ||||
|       system: { | ||||
|         ram: `${roundedMemory} GB`, | ||||
|         cpu: cpus[0].model, | ||||
|       }, | ||||
|       packages: { | ||||
|         libpt: version, | ||||
| @ -374,7 +334,9 @@ execSync('git rev-list HEAD -n 1 --abbrev-commit', (error, stdout, stderr) => { | ||||
|     try { | ||||
|       const url = `https://raw.githubusercontent.com/ashley0143/poke/main/instances.json`; | ||||
| 
 | ||||
|       let f = await fetch(url) | ||||
|       let f = await fetch(url, { | ||||
|         headers: headers, // Add headers to the fetch request
 | ||||
|       }) | ||||
|         .then((res) => res.text()) | ||||
|         .then((json) => JSON.parse(json)); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 ashley
						ashley