46 lines
1.4 KiB
JavaScript
46 lines
1.4 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: `/channel/${video.author.url}`,
|
|
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(),
|
|
uploaderVerified: false,
|
|
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;
|