fix: xREL progressive 5er-Batches, Badge-Coverage, Dirname zweizeilig nach German.
This commit is contained in:
@@ -253,33 +253,27 @@ router.get('/movie/:id', authenticate, async (req, res) => {
|
||||
} catch (e) { res.status(500).json({ error: e.message }); }
|
||||
});
|
||||
|
||||
// POST /api/tools/media/xrel-check – Cover-Badge Batch-Check
|
||||
// POST /api/tools/media/xrel-check – Check ob deutsche Releases existieren
|
||||
// Nimmt max 5 Filme pro Request (Frontend schickt mehrere kleine Batches)
|
||||
router.post('/xrel-check', authenticate, async (req, res) => {
|
||||
const movies = (req.body.movies || []).slice(0, 20);
|
||||
const movies = (req.body.movies || []).slice(0, 5);
|
||||
if (!movies.length) return res.json({});
|
||||
|
||||
const result = {};
|
||||
// 3er-Batches
|
||||
for (let i = 0; i < movies.length; i += 3) {
|
||||
const chunk = movies.slice(i, i + 3);
|
||||
await Promise.all(chunk.map(async m => {
|
||||
try {
|
||||
const extInfoId = await findExtInfoId(m.title, m.original_title);
|
||||
if (!extInfoId) { result[m.id] = false; return; }
|
||||
// Schnell-Check: nur P2P Seite 1 prüfen ob german vorhanden
|
||||
const p2p = await xrelFetch('/p2p/releases.json', { ext_info_id: extInfoId, per_page: 25 });
|
||||
const p2pHit = (p2p.list || []).some(r => r.main_lang === 'german');
|
||||
if (p2pHit) { result[m.id] = true; return; }
|
||||
// Auch Scene prüfen
|
||||
const scene = await xrelFetch('/release/ext_info.json', { id: extInfoId, per_page: 25 });
|
||||
const sceneHit = (scene.list || []).some(r => /german|deutsch/i.test(r.dirname || ''));
|
||||
result[m.id] = sceneHit;
|
||||
} catch (_) {
|
||||
result[m.id] = false;
|
||||
}
|
||||
}));
|
||||
if (i + 3 < movies.length) await new Promise(r => setTimeout(r, 250));
|
||||
}
|
||||
await Promise.all(movies.map(async m => {
|
||||
try {
|
||||
const extInfoId = await findExtInfoId(m.title, m.original_title);
|
||||
if (!extInfoId) { result[m.id] = false; return; }
|
||||
// P2P zuerst – main_lang ist zuverlässig
|
||||
const p2p = await xrelFetch('/p2p/releases.json', { ext_info_id: extInfoId, per_page: 25 }, 8000);
|
||||
if ((p2p.list || []).some(r => r.main_lang === 'german')) { result[m.id] = true; return; }
|
||||
// Scene als Fallback
|
||||
const scene = await xrelFetch('/release/ext_info.json', { id: extInfoId, per_page: 25 }, 8000);
|
||||
result[m.id] = (scene.list || []).some(r => /german|deutsch/i.test(r.dirname || ''));
|
||||
} catch (_) {
|
||||
result[m.id] = false;
|
||||
}
|
||||
}));
|
||||
res.json(result);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user