diff --git a/backend/src/tools/media/routes.js b/backend/src/tools/media/routes.js index 5c636f3..4157af4 100644 --- a/backend/src/tools/media/routes.js +++ b/backend/src/tools/media/routes.js @@ -507,17 +507,30 @@ router.get('/streaming/:providerId', authenticate, async (req, res) => { const provider = STREAMING_PROVIDERS.find(p => p.id === req.params.providerId); if (!provider) return res.status(404).json({ error: 'Unbekannter Anbieter' }); - const discoverParams = { + // Nur Titel der letzten 5 Jahre + const minYear = new Date().getFullYear() - 5; + const minDate = `${minYear}-01-01`; + + const movieParams = { watch_region: 'DE', with_watch_providers: provider.tmdbId, with_watch_monetization_types: 'flatrate', sort_by: 'popularity.desc', 'vote_count.gte': 10, + 'primary_release_date.gte': minDate, + }; + const tvParams = { + watch_region: 'DE', + with_watch_providers: provider.tmdbId, + with_watch_monetization_types: 'flatrate', + sort_by: 'popularity.desc', + 'vote_count.gte': 10, + 'first_air_date.gte': minDate, }; const [movieResults, tvResults, genreMap] = await Promise.all([ - tmdb('/discover/movie', discoverParams), - tmdb('/discover/tv', { ...discoverParams, first_air_date_year: undefined }), + tmdb('/discover/movie', movieParams), + tmdb('/discover/tv', tvParams), getGenreMap(), ]); @@ -638,6 +651,23 @@ router.post('/favorites/:id/acknowledge', authenticate, requireAdmin, (req, res) res.json({ ok: true }); }); +// Admin: ALLE verfügbaren Watch-Provider für Deutschland live von TMDb holen +router.get('/streaming/all-providers', authenticate, requireAdmin, async (req, res) => { + try { + const [movieProv, tvProv] = await Promise.all([ + tmdb('/watch/providers/movie', { watch_region: 'DE' }), + tmdb('/watch/providers/tv', { watch_region: 'DE' }), + ]); + const merged = {}; + for (const p of [...(movieProv.results||[]), ...(tvProv.results||[])]) { + merged[p.provider_id] = { id: p.provider_id, name: p.provider_name, logo: p.logo_path, + priority: p.display_priorities?.DE ?? p.display_priority ?? 999 }; + } + const list = Object.values(merged).sort((a,b) => a.priority - b.priority); + res.json(list); + } catch(e) { res.status(500).json({ error: e.message }); } +}); + router.get('/settings', authenticate, requireAdmin, (req, res) => res.json({ configured: !!getToken() })); router.put('/settings', authenticate, requireAdmin, (req, res) => { const { tmdb_token } = req.body;