metadata-all / server.js
FarelDeveloper's picture
Update server.js
3243277 verified
Raw
History Blame Contribute Delete
1.5 kB
import express from "express"
import fetch from "node-fetch"
import { exec } from "child_process"
const app = express()
const PORT = 7860
function isYouTube(url) {
return /youtube\.com|youtu\.be/.test(url)
}
app.get("/api/info", async (req, res) => {
const url = req.query.url
if (!url) return res.json({ status:false, error:"URL required" })
// βœ… YOUTUBE β†’ OEMBED
if (isYouTube(url)) {
try {
const r = await fetch(
`https://www.youtube.com/oembed?url=${url}&format=json`
)
const d = await r.json()
return res.json({
status: true,
platform: "youtube",
title: d.title,
author: d.author_name,
author_url: d.author_url,
thumbnail: d.thumbnail_url
})
} catch {
return res.json({ status:false, error:"YT info failed" })
}
}
// βœ… SOSMED LAIN β†’ yt-dlp
exec(`yt-dlp -j --no-playlist "${url}"`,
{ maxBuffer: 1024 * 1024 * 10 },
(err, stdout) => {
if (err) return res.json({ status:false, error:"Fetch failed" })
try {
const d = JSON.parse(stdout)
res.json({
status: true,
platform: d.extractor_key,
title: d.title,
duration: d.duration,
thumbnail: d.thumbnail,
uploader: d.uploader,
view_count: d.view_count
})
} catch {
res.json({ status:false, error:"Parse error" })
}
}
)
})
app.listen(PORT, () => console.log("HF INFO API ready"))