99 lines
2.2 KiB
JavaScript
99 lines
2.2 KiB
JavaScript
/**
|
||
* Dosya adını temizler ve sadeleştirir.
|
||
* Örnek:
|
||
* The.Astronaut.2025.1080p.WEBRip.x265-KONTRAST
|
||
* → "The Astronaut (2025)"
|
||
* 1761244874124/Gen.V.S02E08.Cavallo.di.Troia.ITA.ENG.1080p.AMZN.WEB-DL.DDP5.1.H.264-MeM.GP.mkv
|
||
* → "Gen V S02E08 Cavallo Di Troia"
|
||
*/
|
||
export function cleanFileName(fullPath) {
|
||
if (!fullPath) return "";
|
||
|
||
// 1️⃣ Klasör yolunu kaldır
|
||
let name = fullPath.split("/").pop();
|
||
|
||
// 2️⃣ Uzantıyı kaldır
|
||
name = name.replace(/\.[^.]+$/, "");
|
||
|
||
// 3️⃣ Noktaları ve alt tireleri boşluğa çevir
|
||
name = name.replace(/[._]+/g, " ");
|
||
|
||
// 4️⃣ Gereksiz etiketleri kaldır
|
||
const trashWords = [
|
||
"1080p",
|
||
"720p",
|
||
"2160p",
|
||
"4k",
|
||
"bluray",
|
||
"web[- ]?dl",
|
||
"webrip",
|
||
"hdrip",
|
||
"x264",
|
||
"x265",
|
||
"hevc",
|
||
"aac",
|
||
"h264",
|
||
"h265",
|
||
"ddp5",
|
||
"dvdrip",
|
||
"brrip",
|
||
"remux",
|
||
"multi",
|
||
"sub",
|
||
"subs",
|
||
"turkce",
|
||
"ita",
|
||
"eng",
|
||
"dublado",
|
||
"dubbed",
|
||
"extended",
|
||
"unrated",
|
||
"repack",
|
||
"proper",
|
||
"kontrast",
|
||
"yify",
|
||
"ettv",
|
||
"rarbg",
|
||
"hdtv",
|
||
"amzn",
|
||
"nf",
|
||
"netflix",
|
||
"mem",
|
||
"gp"
|
||
];
|
||
const trashRegex = new RegExp(`\\b(${trashWords.join("|")})\\b`, "gi");
|
||
name = name.replace(trashRegex, " ");
|
||
|
||
// 5️⃣ Parantez veya köşeli parantez içindekileri kaldır
|
||
name = name.replace(/[\[\(].*?[\]\)]/g, " ");
|
||
|
||
// 6️⃣ Fazla tireleri ve sayıları temizle
|
||
name = name
|
||
.replace(/[-]+/g, " ")
|
||
.replace(/\b\d{3,4}\b/g, " ") // tek başına 1080, 2025 gibi
|
||
.replace(/\s{2,}/g, " ")
|
||
.trim();
|
||
|
||
// 7️⃣ Dizi formatını (S02E08) koru
|
||
const episodeMatch = name.match(/(S\d{1,2}E\d{1,2})/i);
|
||
if (episodeMatch) {
|
||
const epTag = episodeMatch[0].toUpperCase();
|
||
// örnek: Gen V S02E08 Cavallo di Troia
|
||
name = name.replace(episodeMatch[0], epTag);
|
||
}
|
||
|
||
// 8️⃣ Baş harfleri büyüt (küçük kelimeleri koruyarak)
|
||
name = name
|
||
.split(" ")
|
||
.filter((w) => w.length > 0)
|
||
.map((w) => {
|
||
if (["di", "da", "de", "of", "and", "the"].includes(w.toLowerCase()))
|
||
return w.toLowerCase();
|
||
return w[0].toUpperCase() + w.slice(1).toLowerCase();
|
||
})
|
||
.join(" ")
|
||
.trim();
|
||
|
||
return name;
|
||
}
|