repiped/routes/search.js

50 lines
1.5 KiB
JavaScript

const https = require("https");
const yts = require("yt-search");
function searchRouteHandler(app) {
app.get("/api/search", async (req, res) => {
try {
const query = req.query.q;
if (!query) {
return res.status(400).json({ error: "Search query is required" });
}
const results = await yts(query);
console.log(results.videos[0]);
const formattedResults = {
items: results.videos.map((video) => ({
url: `/watch?v=${video.videoId}`,
type: "stream",
title: video.title,
thumbnail: `/api/thumbnail/${video.videoId}`,
uploaderName: video.author.name,
uploaderUrl: `${video.author.url.replace(
"https://youtube.com/",
""
)}`,
uploaderAvatar: `/api/avatar/${video.author.url.replace(
"https://youtube.com/",
""
)}.png`,
uploadedDate: video.ago,
shortDescription: video.description,
duration: video.seconds,
views: video.views,
uploaded: new Date(video.timestamp * 1000).getTime(),
isShort: video.duration.seconds < 60,
})),
nextpage: "",
suggestion: "",
corrected: false,
};
res.json(formattedResults);
} catch (err) {
console.error(`Error searching videos: ${err.message}`);
res.status(500).send("Error searching videos");
}
});
}
module.exports = searchRouteHandler;