feat: YouTube cookie'lerini panelden yönetilebilir hale getir

Cookie'ler saatler içinde eskiyordu, her seferinde manuel Coolify env
güncellemesi + redeploy gerekiyordu. Artık DB'de (app_settings tablosu)
tutuluyor; /settings sayfasından yeni cookies.txt yapıştırılıp
kaydedilebiliyor, bir sonraki yt-dlp çağrısında redeploy gerekmeden
devreye giriyor. YTDLP_COOKIES_B64 env var mekanizması kaldırıldı.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-30 19:13:10 +03:00
co-authored by Claude Sonnet 5
parent d562c05882
commit 5e211096c5
11 changed files with 117 additions and 22 deletions
+64
View File
@@ -0,0 +1,64 @@
import { prisma } from "@streamclipper/db";
import { updateYtdlpCookies } from "../actions";
export const dynamic = "force-dynamic";
export default async function SettingsPage() {
const setting = await prisma.appSetting.findUnique({ where: { key: "ytdlp_cookies" } });
return (
<>
<h1>Ayarlar</h1>
<div className="card">
<div className="card-head">
<span>YouTube Cookie&apos;leri</span>
<span className="mono">
{setting ? `son güncelleme: ${setting.updatedAt.toLocaleString("tr-TR")}` : "hiç ayarlanmadı"}
</span>
</div>
<p className="empty" style={{ marginBottom: "0.5rem" }}>
YouTube canlı yayın kontrolü ve kayıt için kullanılıyor. Google, oturum çerezlerinin bir
kısmını birkaç saatte bir yeniliyor burada eskidiğini fark edersen (kanal detay
sayfasında &quot;son poll hatası&quot; olarak görürsün) taze bir cookies.txt ile
güncelle. Ana hesabın yerine ayrı, önemsiz bir Google hesabı kullanman önerilir.
</p>
<form action={updateYtdlpCookies}>
<textarea
name="cookies"
required
placeholder="Netscape formatlı cookies.txt içeriğini buraya yapıştır"
rows={10}
style={{
width: "100%",
background: "var(--bg)",
border: "1px solid var(--border)",
borderRadius: "6px",
padding: "0.6rem 0.7rem",
color: "var(--text)",
fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
fontSize: "0.75rem",
resize: "vertical",
}}
/>
<button
type="submit"
style={{
marginTop: "0.6rem",
background: "var(--accent)",
border: "none",
borderRadius: "6px",
padding: "0.5rem 1rem",
color: "#fff",
fontWeight: 600,
fontSize: "0.9rem",
cursor: "pointer",
}}
>
Kaydet
</button>
</form>
</div>
</>
);
}