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}); }