diff --git a/api/src/core/api.js b/api/src/core/api.js index 5358ab02..d2992970 100644 --- a/api/src/core/api.js +++ b/api/src/core/api.js @@ -245,13 +245,21 @@ export const runAPI = async (express, app, __dirname, isPrimary = true) => { return fail(res, "error.api.invalid_body"); } + // Log the requested video URL for tracking user download attempts + console.log(`[DOWNLOAD REQUEST] User attempting to download: ${normalizedRequest.url}`); + console.log(`[DOWNLOAD REQUEST] Client IP: ${getIP(req)}`); + console.log(`[DOWNLOAD REQUEST] Timestamp: ${new Date().toISOString()}`); + console.log(`[DOWNLOAD REQUEST] User Agent: ${req.get('User-Agent') || 'Unknown'}`); + const parsed = extract(normalizedRequest.url); if (!parsed) { + console.log(`[DOWNLOAD REQUEST] Failed - Invalid URL: ${normalizedRequest.url}`); return fail(res, "error.api.link.invalid"); } if ("error" in parsed) { + console.log(`[DOWNLOAD REQUEST] Failed - Parse error for URL: ${normalizedRequest.url}, Error: ${parsed.error}`); let context; if (parsed?.context) { context = parsed.context; @@ -259,6 +267,8 @@ export const runAPI = async (express, app, __dirname, isPrimary = true) => { return fail(res, `error.api.${parsed.error}`, context); } + console.log(`[DOWNLOAD REQUEST] Successfully parsed URL: ${normalizedRequest.url}, Service: ${parsed.host}`); + try { const result = await match({ host: parsed.host, @@ -267,8 +277,10 @@ export const runAPI = async (express, app, __dirname, isPrimary = true) => { isSession: req.isSession ?? false, }); + console.log(`[DOWNLOAD REQUEST] Processing completed for URL: ${normalizedRequest.url}, Status: ${result.status}`); res.status(result.status).json(result.body); - } catch { + } catch (error) { + console.log(`[DOWNLOAD REQUEST] Processing failed for URL: ${normalizedRequest.url}, Error: ${error.message}`); fail(res, "error.api.generic"); } }); @@ -373,7 +385,10 @@ export const runAPI = async (express, app, __dirname, isPrimary = true) => { "~~~~~~\n" + Bright("url: ") + Bright(Cyan(env.apiURL)) + "\n" + - Bright("port: ") + env.apiPort + "\n" + Bright("port: ") + env.apiPort + "\n" + + + "~~~~~~\n" + + Bright("📊 Logging enabled: ") + "Video download requests will be tracked\n" ); } diff --git a/web/src/routes/+page.svelte b/web/src/routes/+page.svelte index fd084ff6..14941875 100644 --- a/web/src/routes/+page.svelte +++ b/web/src/routes/+page.svelte @@ -54,7 +54,7 @@