From 8223487c0b1d27afb517c99c48887c6d0265feba Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Wed, 12 Feb 2025 18:35:26 +0100 Subject: [PATCH] Big updates --- .forgejo/workflows/dependency_check.yaml | 23 +++---- src/app.html | 2 +- src/lib/components/DownloadManager.svelte | 6 +- src/routes/+layout.svelte | 7 ++- src/routes/+page.svelte | 2 +- src/routes/download/+server.ts | 75 +++++++++++------------ src/service-worker.js | 2 +- static/manifest.json | 30 ++++----- 8 files changed, 70 insertions(+), 77 deletions(-) diff --git a/.forgejo/workflows/dependency_check.yaml b/.forgejo/workflows/dependency_check.yaml index 31c7094..1230794 100644 --- a/.forgejo/workflows/dependency_check.yaml +++ b/.forgejo/workflows/dependency_check.yaml @@ -1,9 +1,9 @@ -name: Update Minor Dependencies and Build Container +name: Bump deps (only minor versions) on: schedule: - - cron: '0 0 * * *' # Runs every night at midnight (UTC) - workflow_dispatch: # Allows manual triggering + - cron: '0 0 * * *' # Runs every night at midnight (UTC) + workflow_dispatch: jobs: update-dependencies: @@ -13,24 +13,17 @@ jobs: - name: Checkout Repository uses: actions/checkout@v3 with: - token: ${{ secrets.FORGEJO_TOKEN }} # Make sure to add this token in your repo secrets + token: ${{ secrets.FORGEJO_TOKEN }} - name: Set up Node.js uses: actions/setup-node@v3 with: - node-version: '20' # Adjust as needed + node-version: '20' - - name: Configure npm version - run: npm install - - - name: Check and Update Minor Dependencies - run: npx npm-check-updates --target minor -u - - - name: Install Updated Dependencies - run: npm install - - - name: Commit and Push Changes + - name: Update deps, install them (to change package-lock.json) and commit run: | + npx npm-check-updates --target minor -u + npm install git config --global user.name "forgejo-bot" git config --global user.email "bot@pweapon.org" git add package.json || exit 0 diff --git a/src/app.html b/src/app.html index 4bb3fa3..66ce188 100644 --- a/src/app.html +++ b/src/app.html @@ -3,7 +3,7 @@ - + %sveltekit.head% \ No newline at end of file + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 65f8374..e78cf70 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -57,7 +57,7 @@ -

🐙 Scaricatore 🐙

+

🐙 Scaricatore 🐙

diff --git a/src/routes/download/+server.ts b/src/routes/download/+server.ts index a81e9e8..667f787 100644 --- a/src/routes/download/+server.ts +++ b/src/routes/download/+server.ts @@ -6,17 +6,16 @@ import { json, error } from '@sveltejs/kit'; import type { RequestHandler } from './$types'; import { spawn } from 'child_process'; - /** * Fetch YouTube metadata (title, uploader/artist) */ async function getYouTubeMetadata(link: string) { - return await ytdl(link, { - dumpSingleJson: true, - noCheckCertificates: true, - noWarnings: true, - preferFreeFormats: true - }); + return await ytdl(link, { + dumpSingleJson: true, + noCheckCertificates: true, + noWarnings: true, + preferFreeFormats: true + }); } /** @@ -51,41 +50,41 @@ function streamYouTube(link: string, format: string): ReadableStream * Sanitize filename by removing unsafe characters */ function sanitizeFilename(name: string): string { - return name.replace(/[\/:*?"<>|]/g, '').trim(); + return name.replace(/[\/:*?"<>|]/g, '').trim(); } export const GET: RequestHandler = async ({ url }) => { - // Get query params - const link = url.searchParams.get('link'); - const format = url.searchParams.get('format'); // mp3, mp4 - const source = url.searchParams.get('source'); // youtube or spotify + // Get query params + const link = url.searchParams.get('link'); + const format = url.searchParams.get('format'); // mp3, mp4 + const source = url.searchParams.get('source'); // youtube or spotify - // Validate input - if (!link || !format || !source) { - throw error(400, 'Missing required query parameters: link, format, or source'); - } - - if (source !== 'youtube') { - throw error(400, 'Currently, only YouTube is supported'); - } + // Validate input + if (!link || !format || !source) { + throw error(400, 'Missing required query parameters: link, format, or source'); + } - try { - // Fetch metadata for filename - const metadata = await getYouTubeMetadata(link); - const { title, uploader } = metadata; - const safeTitle = sanitizeFilename(`${uploader} - ${title}`); - const filename = `${safeTitle}.${format}`; + if (source !== 'youtube') { + throw error(400, 'Currently, only YouTube is supported'); + } - console.log(filename) - // Stream video/audio - return new Response(streamYouTube(link, format), { - headers: { - 'Content-Type': format === 'mp3' ? 'audio/mpeg' : 'video/mp4', - 'Content-Disposition': `attachment; filename="${filename}"` - } - }); - } catch (err) { - console.error('Error fetching metadata:', err); - throw error(500, 'Failed to fetch video metadata'); - } + try { + // Fetch metadata for filename + const metadata = await getYouTubeMetadata(link); + const { title, uploader } = metadata; + const safeTitle = sanitizeFilename(`${uploader} - ${title}`); + const filename = `${safeTitle}.${format}`; + + console.log(filename); + // Stream video/audio + return new Response(streamYouTube(link, format), { + headers: { + 'Content-Type': format === 'mp3' ? 'audio/mpeg' : 'video/mp4', + 'Content-Disposition': `attachment; filename="${filename}"` + } + }); + } catch (err) { + console.error('Error fetching metadata:', err); + throw error(500, 'Failed to fetch video metadata'); + } }; diff --git a/src/service-worker.js b/src/service-worker.js index e425db3..53a043f 100644 --- a/src/service-worker.js +++ b/src/service-worker.js @@ -5,7 +5,7 @@ const CACHE = `cache-${version}`; const ASSETS = [ ...build, // the app itself - ...files // everything in `static` + ...files // everything in `static` ]; self.addEventListener('install', (event) => { diff --git a/static/manifest.json b/static/manifest.json index 0ae4911..cd1980a 100644 --- a/static/manifest.json +++ b/static/manifest.json @@ -1,16 +1,16 @@ { - "name": "EmersaDownloader", - "start_url": "https://dl.emersa.it", - "theme_color": "rgb(34,197,94)", - "background": "black", - "orientation": "portrait", - "display": "fullscreen", - "short_name": "e-downloader", - "icons": [ - { - "src": "favicon.png", - "type": "image/png", - "sizes": "128x128" - } - ] -} \ No newline at end of file + "name": "EmersaDownloader", + "start_url": "https://dl.emersa.it", + "theme_color": "rgb(34,197,94)", + "background": "black", + "orientation": "portrait", + "display": "fullscreen", + "short_name": "e-downloader", + "icons": [ + { + "src": "favicon.png", + "type": "image/png", + "sizes": "128x128" + } + ] +}