From 551ed77eb0c5804db9c586186d353853673e97bc Mon Sep 17 00:00:00 2001 From: szbk Date: Mon, 1 Dec 2025 23:35:09 +0300 Subject: [PATCH] cookie update --- client/src/components/Sidebar.svelte | 98 ++++++++++++++++++++++++---- server/server.js | 30 +++++++++ 2 files changed, 117 insertions(+), 11 deletions(-) diff --git a/client/src/components/Sidebar.svelte b/client/src/components/Sidebar.svelte index 4eb8fd7..186d27e 100644 --- a/client/src/components/Sidebar.svelte +++ b/client/src/components/Sidebar.svelte @@ -1,18 +1,19 @@ + + + + diff --git a/server/server.js b/server/server.js index b67c768..25cfddb 100644 --- a/server/server.js +++ b/server/server.js @@ -73,6 +73,7 @@ const INFO_FILENAME = "info.json"; const YT_ID_REGEX = /^[A-Za-z0-9_-]{11}$/; const YT_DLP_BIN = process.env.YT_DLP_BIN || null; let resolvedYtDlpBinary = null; +const COOKIES_FILE = path.join(__dirname, "cookies.txt"); const TMDB_API_KEY = process.env.TMDB_API_KEY; const TMDB_BASE_URL = "https://api.themoviedb.org/3"; const TMDB_IMG_BASE = @@ -619,6 +620,9 @@ function launchYoutubeJob(job) { "--write-info-json", job.url ]; + if (fs.existsSync(COOKIES_FILE)) { + args.splice(-1, 0, "--cookies", COOKIES_FILE); + } const child = spawn(binary, args, { cwd: job.savePath, env: process.env @@ -5707,6 +5711,32 @@ app.post("/api/youtube/download", requireAuth, async (req, res) => { } }); +// --- Cookie yükleme (YouTube için) --- +app.post( + "/api/cookies/upload", + requireAuth, + upload.single("cookies"), + async (req, res) => { + try { + if (!req.file) { + return res.status(400).json({ error: "cookies dosyası gerekli." }); + } + const target = COOKIES_FILE; + try { + fs.renameSync(req.file.path, target); + } catch (err) { + // fallback: kopyala, sonra geçici dosyayı sil + fs.copyFileSync(req.file.path, target); + fs.rmSync(req.file.path, { force: true }); + } + res.json({ ok: true }); + } catch (err) { + console.error("🍪 Cookie yükleme hatası:", err?.message || err); + res.status(500).json({ error: "Cookie yüklenemedi." }); + } + } +); + // --- 📺 TV dizileri listesi --- app.get("/api/tvshows", requireAuth, (req, res) => { try {