feat: Suchen-Tab mit Filmsuche, Such-Endpoint mit Sprach-/Duplikat-Filter

This commit is contained in:
2026-06-11 14:33:25 +02:00
parent cd50239fd0
commit 6b566d721f
2 changed files with 112 additions and 0 deletions

View File

@@ -291,6 +291,29 @@ router.get('/upcoming', authenticate, async (req, res) => {
} catch(e) { res.status(500).json({ error: e.message }); }
});
// GET /api/tools/media/search?q=TITEL Filmsuche
router.get('/search', authenticate, async (req, res) => {
try {
const q = (req.query.q || '').trim();
if (!q || q.length < 2) return res.json([]);
const [results, genreMap] = await Promise.all([
tmdb('/search/movie', { query: q, include_adult: 'false' }),
getGenreMap(),
]);
const seen = new Set();
const filtered = (results.results || [])
.filter(m => {
if (BLOCKED_LANGS.has(m.original_language)) return false;
if (seen.has(m.id)) return false;
seen.add(m.id);
return true;
})
.slice(0, 20)
.map(m => enrichMovie(m, genreMap, null, null));
res.json(filtered);
} catch(e) { res.status(500).json({ error: e.message }); }
});
// Modal: TMDb-Daten sofort, xREL via separaten Endpoint
router.get('/movie/:id', authenticate, async (req, res) => {
try {