fix(organize): sanitisation des caractères spéciaux dans les noms de dossiers
Le titre "Kaguya-sama : Love is War Henshū" contenait un ":" qui causait
une troncation du nom de dossier sur certains systèmes de fichiers.
sanitizeDirName() remplace ":" par " -" et supprime les autres caractères
interdits (<>"/\|?*).
feat(settings): option titres optimisés Plex (title_for_plex)
Nouveau toggle "Noms de dossiers" dans les paramètres. Quand activé,
utilise le champ title_for_plex de l'API Fankai pour les noms de dossiers
au lieu du titre brut — évite les caractères spéciaux incompatibles avec
Plex et les systèmes de fichiers Windows/NTFS.
enrichSeriesDataWithOriginalFilenames fetche maintenant /series/{id} pour
injecter title_for_plex dans chaque serieData avant de passer au worker.
fix(organize): retry sur les erreurs réseau dans enrichSeriesDataWithOriginalFilenames
2 tentatives avec 500ms d'attente entre les deux pour les erreurs réseau
ponctuelles sur /seasons/{id}/episodes — évite que formatted_name soit null
à cause d'un timeout isolé au démarrage.
fix(catalogue): activeTorrents filtre désormais uniquement state=downloading
Les torrents en seeding étaient inclus dans activeTorrents, forçant
computeSerieDownloadState à retourner "downloading" même pour les séries
entièrement importées. Les badges affichaient "EN COURS" au lieu de "IMPORTÉ".
This commit is contained in:
1 parent
82a9d51731
commit
c374ceb0a7
4 files changed
+64
-12
No files matched your search
+10
-3
@@ -42,8 +42,8 @@ app.get('/api/settings', requireAuth, (_req, res) => {
|
||||
res.json(readSettings())
|
||||
})
|
||||
app.post('/api/settings', requireAuth, (req, res) => {
|
||||
const { mediaPath, completePath, organizeMode, category, nfoSupport, autoImport } = req.body
|
||||
res.json(writeSettings({ mediaPath, completePath, organizeMode, category, nfoSupport, autoImport }))
|
||||
const { mediaPath, completePath, organizeMode, category, nfoSupport, autoImport, usePlexTitles } = req.body
|
||||
res.json(writeSettings({ mediaPath, completePath, organizeMode, category, nfoSupport, autoImport, usePlexTitles }))
|
||||
})
|
||||
|
||||
// ── Torrent clients ────────────────────────────────────────────
|
||||
@@ -284,6 +284,13 @@ async function enrichSeriesDataWithOriginalFilenames(seriesData: any[]): Promise
|
||||
for (const sd of seriesData) {
|
||||
if (!sd) { results.push(sd); continue }
|
||||
|
||||
// Fetcher title_for_plex depuis l'API série
|
||||
let title_for_plex: string | null = null
|
||||
try {
|
||||
const serieApi = await fankaiGet(`/series/${sd.id}`)
|
||||
title_for_plex = serieApi.title_for_plex ?? null
|
||||
} catch {}
|
||||
|
||||
const enrichedSeasons: any[] = []
|
||||
for (const season of sd.seasons ?? []) {
|
||||
let epsData: any[] = []
|
||||
@@ -326,7 +333,7 @@ async function enrichSeriesDataWithOriginalFilenames(seriesData: any[]): Promise
|
||||
enrichedSeasons.push({ ...season, episodes: enrichedEpisodes })
|
||||
}
|
||||
|
||||
results.push({ ...sd, seasons: enrichedSeasons })
|
||||
results.push({ ...sd, title_for_plex, seasons: enrichedSeasons })
|
||||
}
|
||||
|
||||
return results
|
||||
|
||||
Reference in new issue
Block a user