From 46c5bc6d7b2af67a4325dcb382b44b2f61d88a56 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:49:43 +0200 Subject: [PATCH 01/18] 150MB default file --- src/routes/+page.svelte | 4 +++- src/routes/download/+server.ts | 6 ++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index ac7dcae..f23038c 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -50,7 +50,7 @@ if (value) { chunks.push(value); receivedLength += value.length; - progress = Math.round((receivedLength / contentLength) * 100); + progress = Math.round((receivedLength / 150000) * 100); } } @@ -72,6 +72,8 @@ downloading = false; link = ''; + progress = 0; + filename = ''; }; const createAnchor = () => { diff --git a/src/routes/download/+server.ts b/src/routes/download/+server.ts index 8db31e1..247dd73 100644 --- a/src/routes/download/+server.ts +++ b/src/routes/download/+server.ts @@ -39,7 +39,6 @@ const validateRequest = (url: URL) => { export const GET: RequestHandler = async ({ url }) => { const { format, source, metadata, link } = validateRequest(url); let filename = ''; - let contentLength = 0; logger.debug(`Requested: ${link}`); @@ -47,8 +46,7 @@ export const GET: RequestHandler = async ({ url }) => { logger.debug(`Fetching video data to set filename`); // Fetch metadata for filename const ytMetadata = await getYouTubeMetadata(link); - const { title, uploader, filesize_approx } = ytMetadata; - contentLength = filesize_approx; + const { title, uploader } = ytMetadata; const safeTitle = `${uploader} - ${title}`; filename = `${safeTitle}.${format}`; } catch (err) { @@ -62,7 +60,7 @@ export const GET: RequestHandler = async ({ url }) => { return new Response(streamYouTube(link, format), { headers: { 'Content-Type': `${mimeTypeMap.get(format)}`, - 'Content-Length': contentLength, + 'Content-Disposition': `attachment; filename="${filename}"` } }); From a48cb16ab73aa1649329c015ccf641a0490a7916 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:50:25 +0200 Subject: [PATCH 02/18] remove filename --- src/routes/download/+server.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/routes/download/+server.ts b/src/routes/download/+server.ts index 247dd73..24a9c55 100644 --- a/src/routes/download/+server.ts +++ b/src/routes/download/+server.ts @@ -60,7 +60,6 @@ export const GET: RequestHandler = async ({ url }) => { return new Response(streamYouTube(link, format), { headers: { 'Content-Type': `${mimeTypeMap.get(format)}`, - 'Content-Disposition': `attachment; filename="${filename}"` } }); From e6dc9292a65257ccc1e214f49fa192b4139c8c56 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:50:44 +0200 Subject: [PATCH 03/18] 1.0.1-b --- 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 2b47724..b4f54a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dl.emersa.it", - "version": "1.0.1", + "version": "1.0.1-b", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dl.emersa.it", - "version": "1.0.1", + "version": "1.0.1-b", "dependencies": { "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.1.4", diff --git a/package.json b/package.json index 7740fbf..5467659 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "dl.emersa.it", "private": true, - "version": "1.0.1", + "version": "1.0.1-b", "type": "module", "scripts": { "dev": "vite dev", From 5e0071f15da7f8d53a2faaa33127abc9129031fc Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:57:01 +0200 Subject: [PATCH 04/18] Better naming and faster progress bar --- .../{DownloadManager.svelte => ProgressBar.svelte} | 2 +- src/routes/+page.svelte | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) rename src/lib/components/{DownloadManager.svelte => ProgressBar.svelte} (98%) diff --git a/src/lib/components/DownloadManager.svelte b/src/lib/components/ProgressBar.svelte similarity index 98% rename from src/lib/components/DownloadManager.svelte rename to src/lib/components/ProgressBar.svelte index ffa1444..de2bac6 100644 --- a/src/lib/components/DownloadManager.svelte +++ b/src/lib/components/ProgressBar.svelte @@ -15,7 +15,7 @@
+ >

{progress}%

diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index f23038c..ac89f4c 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -2,7 +2,7 @@ import { PUBLIC_VERSION } from '$env/static/public'; import supportedFormats from '$lib/common/supportedFormats.json'; import Loader from '$lib/components/Loader.svelte'; - import DownloadManager from '$lib/components/DownloadManager.svelte'; + import DownloadManager from '$lib/components/ProgressBar.svelte'; import { mount, unmount } from 'svelte'; let source = $state('youtube'); @@ -44,13 +44,14 @@ const chunks: Uint8Array[] = []; let receivedLength = 0; + while (true) { const { done, value }: ReadableStreamReadResult = await reader!.read(); if (done) break; if (value) { chunks.push(value); receivedLength += value.length; - progress = Math.round((receivedLength / 150000) * 100); + progress = Math.round((receivedLength / 50000) * 100); } } From 3c5f7dc6c26740c609e48d5e14820ce187a8270e Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:57:13 +0200 Subject: [PATCH 05/18] the same as before --- src/lib/components/ProgressBar.svelte | 2 +- src/routes/+page.svelte | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/lib/components/ProgressBar.svelte b/src/lib/components/ProgressBar.svelte index de2bac6..04bb07d 100644 --- a/src/lib/components/ProgressBar.svelte +++ b/src/lib/components/ProgressBar.svelte @@ -15,7 +15,7 @@
+ >

{progress}%

diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index ac89f4c..6039115 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -44,7 +44,6 @@ const chunks: Uint8Array[] = []; let receivedLength = 0; - while (true) { const { done, value }: ReadableStreamReadResult = await reader!.read(); if (done) break; From fad656932650ef089e931caf6f3da81d2c8351fd Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 21:40:01 +0200 Subject: [PATCH 06/18] 1.0.1-c --- 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 b4f54a7..e74b77c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dl.emersa.it", - "version": "1.0.1-b", + "version": "1.0.1-c", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dl.emersa.it", - "version": "1.0.1-b", + "version": "1.0.1-c", "dependencies": { "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.1.4", diff --git a/package.json b/package.json index 5467659..2ab1129 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "dl.emersa.it", "private": true, - "version": "1.0.1-b", + "version": "1.0.1-c", "type": "module", "scripts": { "dev": "vite dev", From 51ee4299bd21a8267da42ca4af90c71d891ea2a5 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 21:48:53 +0200 Subject: [PATCH 07/18] Remove metadata query param --- src/routes/+page.svelte | 17 ----------------- src/routes/download/+server.ts | 5 ++--- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 6039115..39acccd 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -12,7 +12,6 @@ let showModal = $state(false); let href = $state(''); let disabled = $state(true); - let metadata = $state(false); let logs = $state(''); let downloadManager: DownloadManager | null = null; let progress = $state(0); @@ -100,8 +99,6 @@ searchParams.append('link', link); searchParams.append('format', format); - if (metadata) searchParams.append('metadata', '1'); - href = `/download?${searchParams.toString()}`; }; @@ -194,20 +191,6 @@ /> - -
- - -
- { return { link, format, - source, - metadata + source }; }; export const GET: RequestHandler = async ({ url }) => { - const { format, source, metadata, link } = validateRequest(url); + const { format, source, link } = validateRequest(url); let filename = ''; logger.debug(`Requested: ${link}`); From 48ab1a42ed930feedf4c8fafd22fbdde9c282a85 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 23:43:56 +0200 Subject: [PATCH 08/18] remove node env from .env --- .env.example | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.env.example b/.env.example index b7f7612..0b9efdb 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,5 @@ -NODE_ENV=development HOST=0.0.0.0 ORIGIN=https://dl.emersa.it YTDLP_PATH=./yt-dlp PUBLIC_VERSION=0.6.3 -HTTPS_PROXY= \ No newline at end of file +HTTPS_PROXY= From e6096f2cd2f461e7dfcefcf8faef8fd12b911b66 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 23:48:48 +0200 Subject: [PATCH 09/18] update ci --- .forgejo/workflows/ci.yaml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 9d5a98e..c4bfccb 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -1,4 +1,4 @@ -name: Bump deps (only minor versions) +name: Just some continuos integration on: [push] @@ -15,7 +15,16 @@ jobs: uses: actions/setup-node@v3 with: node-version: '20' - - name: Prepare, Check, Lint and Format + - name: Update deps, install them (to change package-lock.json) and commit run: | - npm i + npm install npm run prepare + npm run lint + npm run format + git config --global user.name "forgejo-bot" + git config --global user.email "bot@pweapon.org" + git add --all || exit 0 + git commit -m "chore: lint and format" || exit 0 + git push origin HEAD:${GITHUB_REF#refs/heads/} + env: + GITHUB_TOKEN: ${{ secrets.FORGEJO_TOKEN }} From 9f36097598d1cd1df65c0e4ac53ea46651e5365a Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 23:54:19 +0200 Subject: [PATCH 10/18] Dumb update --- src/lib/server/ytdlp.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lib/server/ytdlp.ts b/src/lib/server/ytdlp.ts index 173c9bf..9e358a3 100644 --- a/src/lib/server/ytdlp.ts +++ b/src/lib/server/ytdlp.ts @@ -1,7 +1,6 @@ -import { create } from 'youtube-dl-exec'; +import { create, type Flags } from 'youtube-dl-exec'; import { env } from '$env/dynamic/private'; import { spawn } from 'node:child_process'; -import supportedFormats from '$lib/common/supportedFormats.json'; import { logger, mimeTypeMap } from '$lib/server/helpers'; const YTDLP_PATH: string = env.YTDLP_PATH as string; @@ -13,7 +12,7 @@ export const ytdl = create(YTDLP_PATH); * Fetch YouTube metadata (title, uploader/artist) */ export async function getYouTubeMetadata(link: string) { - const options = { + const options: Flags = { dumpSingleJson: true, noCheckCertificates: true, noWarnings: true, @@ -66,10 +65,13 @@ export function streamYouTube(link: string, format: string): ReadableStream { try { controller.enqueue(chunk); - } catch (ex) { + } catch () { process.kill(); } }); + + + process.stderr.on('data', (chunk) => logger.debug(chunk.toString())); process.stdout.on('end', () => { try { From 08a3ec3883c43bf775b2c561249bfec2de712b89 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 23:55:20 +0200 Subject: [PATCH 11/18] pre commit autoformat won't block committing for this project --- src/lib/server/ytdlp.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/lib/server/ytdlp.ts b/src/lib/server/ytdlp.ts index 9e358a3..1a548ed 100644 --- a/src/lib/server/ytdlp.ts +++ b/src/lib/server/ytdlp.ts @@ -65,13 +65,11 @@ export function streamYouTube(link: string, format: string): ReadableStream { try { controller.enqueue(chunk); - } catch () { + } catch { process.kill(); } }); - - process.stderr.on('data', (chunk) => logger.debug(chunk.toString())); process.stdout.on('end', () => { try { From 749192667b0359d47c9796658e2e26ff1df57e4d Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 23:56:16 +0200 Subject: [PATCH 12/18] Update ci --- .forgejo/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index c4bfccb..9ff6b3c 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -15,7 +15,7 @@ jobs: uses: actions/setup-node@v3 with: node-version: '20' - - name: Update deps, install them (to change package-lock.json) and commit + - name: Format things if needed run: | npm install npm run prepare From bf1c63e2e61ab748dc492a57a4ddf5d0cb6f1fcb Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Wed, 23 Apr 2025 00:03:17 +0200 Subject: [PATCH 13/18] Liste to warnings --- src/lib/components/Loader.svelte | 28 ---------------------------- src/routes/+page.svelte | 24 ++++++------------------ src/routes/download/+server.ts | 5 ++--- 3 files changed, 8 insertions(+), 49 deletions(-) delete mode 100644 src/lib/components/Loader.svelte diff --git a/src/lib/components/Loader.svelte b/src/lib/components/Loader.svelte deleted file mode 100644 index 4ea9b50..0000000 --- a/src/lib/components/Loader.svelte +++ /dev/null @@ -1,28 +0,0 @@ -
- -
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 39acccd..600806b 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,9 +1,7 @@