Dosya taşıma ve "Full Rescan" özelliği eklendi.
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user