ytdls3/server.js
2025-07-30 20:33:34 -07:00

43 lines
1017 B
JavaScript

import { serveDir } from "jsr:@std/http/file-server";
import {ytdl_if_not_already} from "./ytdl.js";
Deno.serve({
port: 9241,
hostname: "0.0.0.0"
}, async request => {
try {
return await handler(request);
} catch (error) {
console.error(error);
return new Response(error.stack, {status: 500});
}
});
async function handler(request) {
var pathname = new URL(request.url).pathname;
if (pathname.startsWith("/v/")) {
return serveDir(request, {
fsRoot: process.env.MEDIA_DIR,
urlRoot: "v"
});
}
var ytid_match = pathname.match(/^\/dl\/([A-Za-z0-9_-]{11})$/);
if (ytid_match) {
var ytid = ytid_match[1];
var info = await ytdl_if_not_already(ytid);
//if (info.error) {
// return new Response(info.error, {status: 500});
//}
/*return new Response(null, {
headers: {Location: `/v/${ytid}/${encodeURIComponent(filename)}`},
status: 302
});*/
return Response.json(info, {
headers: {"Access-Control-Allow-Origin": "*"}
});
}
return new Response(null, {status: 404});
}