From 6b8779f5275b33a8383944675308e0f6eb4139d1 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Sun, 23 Feb 2025 05:22:37 +0100 Subject: [PATCH 001/106] better code --- src/lib/server/helpers.ts | 8 ++++++++ src/routes/download/+server.ts | 36 +++++++++++++++++++++++++++------- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/lib/server/helpers.ts b/src/lib/server/helpers.ts index af5111d..b334c5b 100644 --- a/src/lib/server/helpers.ts +++ b/src/lib/server/helpers.ts @@ -1,7 +1,15 @@ import formats from '$lib/common/supportedFormats.json'; const formatMime = new Map(Object.entries(formats)) +export const isURLValid = (url: string) => { + try { + new URL(url) + } catch { + return false + } + return true; +} export const mimeTypeMap = formatMime; export const contentTypeFromFormat = (format: string): string => { const toReturn: string | undefined = formatMime.get(format) diff --git a/src/routes/download/+server.ts b/src/routes/download/+server.ts index 305f0b4..5d5c6aa 100644 --- a/src/routes/download/+server.ts +++ b/src/routes/download/+server.ts @@ -1,9 +1,9 @@ import { error } from '@sveltejs/kit'; import type { RequestHandler } from './$types'; import { getYouTubeMetadata, streamYouTube, ytdl } from '$lib/server/ytdlp'; -import { contentTypeFromFormat, mimeTypeMap } from '$lib/server/helpers'; +import { contentTypeFromFormat, isURLValid, mimeTypeMap } from '$lib/server/helpers'; -export const GET: RequestHandler = async ({ url }) => { +const validateRequest = (url) => { // Get query params const link = url.searchParams.get('link'); const format = url.searchParams.get('format'); // mp3, mp4 @@ -19,16 +19,37 @@ export const GET: RequestHandler = async ({ url }) => { throw error(400, 'Currently, only YouTube is supported'); } - try { - let filename = `you-clicked-no-metadata-so-i-cant-put-a-correct-name.${format}`; + if (!isURLValid(link)) { + throw error(400, 'URL not valid'); + } - if (metadata) { + if (!mimeTypeMap.get(format)) { + throw error(400, 'format not valid'); + } + + return { + link, format, source, metadata + } +} +export const GET: RequestHandler = async ({ url }) => { + const { format, source, metadata, link } = validateRequest(url) + let filename = `you-clicked-no-metadata-so-i-cant-put-a-correct-name.${format}`; + + if (metadata) { + try { // Fetch metadata for filename const metadata = await getYouTubeMetadata(link); const { title, uploader } = metadata; const safeTitle = `${uploader} - ${title}`; filename = `${safeTitle}.${format}`; + } catch (err) { + console.error(err) + console.error('Error fetching metadata:'); + throw error(500, 'Failed to fetch video metadata'); } + } + + try { // Stream video/audio return new Response(streamYouTube(link, format), { @@ -38,9 +59,10 @@ export const GET: RequestHandler = async ({ url }) => { 'Set-Cookie': 'downloading=0' } }); + } catch (err) { console.error(err) - console.error('Error fetching metadata:'); - throw error(500, 'Failed to fetch video metadata'); + console.error('Filed to stream file'); + throw error(500, 'Failed to stream file'); } }; From 99096f3d2445c936c195f1951e0369bb62ca4fc1 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Sun, 23 Feb 2025 05:26:29 +0100 Subject: [PATCH 002/106] 0.7.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b8b9a4..e0e9445 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dl.emersa.it", - "version": "0.7.0", + "version": "0.7.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dl.emersa.it", - "version": "0.7.0", + "version": "0.7.1", "dependencies": { "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.0.8", diff --git a/package.json b/package.json index 1ac8d55..8913ae7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "dl.emersa.it", "private": true, - "version": "0.7.0", + "version": "0.7.1", "type": "module", "scripts": { "dev": "vite dev", From 631b9e44f05d58506804229ebd267da2186231e1 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Sun, 23 Feb 2025 05:38:29 +0100 Subject: [PATCH 003/106] update name --- src/routes/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 714644d..34f5934 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -172,7 +172,7 @@