43 lines
1017 B
JavaScript
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});
|
|
} |