Dosya taşıma ve "Full Rescan" özelliği eklendi.

This commit is contained in:
2025-11-02 20:48:39 +03:00
parent 3e07e2a270
commit e5c0e8626e
5 changed files with 665 additions and 99 deletions

View File

@@ -11,6 +11,7 @@
let shows = [];
let loading = true;
let refreshing = false;
let rescanning = false;
let error = null;
let selectedShow = null;
@@ -219,7 +220,11 @@ let filteredShows = [];
async function refreshShows() {
try {
refreshing = true;
await apiFetch("/api/tvshows/refresh", { method: "POST" });
const resp = await apiFetch("/api/tvshows/refresh", { method: "POST" });
if (!resp.ok) {
const data = await resp.json().catch(() => ({}));
throw new Error(data?.error || `HTTP ${resp.status}`);
}
await loadShows();
} catch (err) {
console.error("TV metadata refresh error:", err);
@@ -229,6 +234,23 @@ let filteredShows = [];
}
}
async function rescanShows() {
try {
rescanning = true;
const resp = await apiFetch("/api/tvshows/rescan", { method: "POST" });
if (!resp.ok) {
const data = await resp.json().catch(() => ({}));
throw new Error(data?.error || `HTTP ${resp.status}`);
}
await loadShows();
} catch (err) {
console.error("TV metadata rescan error:", err);
error = err?.message || "Tam tarama sırasında bir sorun oluştu.";
} finally {
rescanning = false;
}
}
function openShow(show) {
if (!show) return;
selectedShow = show;
@@ -611,13 +633,22 @@ async function openVideoAtIndex(index) {
<div class="section-accent"></div>
<div class="tv-header">
<h2>Tv Shows</h2>
<button
class="refresh-btn"
disabled={loading || refreshing}
on:click={refreshShows}
>
{refreshing ? "Refreshing…" : "Refresh Metadata"}
</button>
<div class="header-actions">
<button
class="refresh-btn"
disabled={loading || refreshing || rescanning}
on:click={rescanShows}
>
{rescanning ? "Rebuilding…" : "Full Rescan"}
</button>
<button
class="refresh-btn"
disabled={loading || refreshing || rescanning}
on:click={refreshShows}
>
{refreshing ? "Refreshing…" : "Refresh Metadata"}
</button>
</div>
</div>
{#if loading}
@@ -1019,6 +1050,11 @@ async function openVideoAtIndex(index) {
justify-content: space-between;
}
.header-actions {
display: flex;
gap: 10px;
}
.tv-header h2 {
font-size: 26px;
margin: 0;