feat(anime): turkanime bölüm listesi çekme özelliği ekle

Turkanime anime URL'lerini destekleyerek bölüm listelerini çekme
özelliği eklendi. Kullanıcılar turkanime.tv anime sayfa URL'lerini
girerek bölüm linklerini alabilirler.

- Yeni TURKANIME_DEBUG çevre değişkeni eklendi
- /api/turkanime/episodes API uç noktası eklendi
- İstemci tarafında URL normalizasyonu ve işlemesi eklendi
- HTML'den bölüm linklerini çıkarma mantığı eklendi
This commit is contained in:
2026-01-22 13:32:19 +03:00
parent 1bad4f7256
commit 511a8cbba0
3 changed files with 155 additions and 2 deletions

View File

@@ -98,8 +98,23 @@
}
}
function normalizeTurkanimeUrl(value) {
if (!value || typeof value !== "string") return null;
try {
const url = new URL(value.trim());
if (url.protocol !== "https:") return null;
const host = url.hostname.toLowerCase();
if (!host.endsWith("turkanime.tv")) return null;
if (!url.pathname.startsWith("/anime/")) return null;
url.hash = "";
return url.toString();
} catch {
return null;
}
}
async function handleUrlInput() {
const input = prompt("Magnet veya YouTube URL girin:");
const input = prompt("Magnet, YouTube veya turkanime URL girin:");
if (!input) return;
if (isMagnetLink(input)) {
await apiFetch("/api/transfer", {
@@ -110,6 +125,23 @@
await list();
return;
}
const normalizedTurkanime = normalizeTurkanimeUrl(input);
if (normalizedTurkanime) {
const resp = await apiFetch("/api/turkanime/episodes", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ url: normalizedTurkanime })
});
if (!resp.ok) {
const data = await resp.json().catch(() => null);
alert(data?.error || "Turkanime bölümleri alınamadı.");
return;
}
const data = await resp.json().catch(() => null);
const links = Array.isArray(data?.links) ? data.links : [];
alert(links.join("\n"));
return;
}
const normalizedYoutube = normalizeYoutubeUrl(input);
if (normalizedYoutube) {
const resp = await apiFetch("/api/youtube/download", {
@@ -126,7 +158,7 @@
return;
}
alert(
"Yalnızca magnet linkleri veya https://www.youtube.com/watch?v=... formatındaki YouTube URL'leri destekleniyor."
"Yalnızca magnet linkleri, YouTube veya turkanime anime URL'leri destekleniyor."
);
}