diff --git a/backend/src/tools/media/routes.js b/backend/src/tools/media/routes.js
index 51b5ef9..49247d1 100644
--- a/backend/src/tools/media/routes.js
+++ b/backend/src/tools/media/routes.js
@@ -65,6 +65,26 @@ function extractFSK(rd) {
for (const r of sorted) { const c = (r.certification||'').trim(); if (c) return c; }
return null;
}
+
+function extractReleaseDates(rd) {
+ const out = {};
+ // DE Kinostart (type 3)
+ const de = rd?.results?.find(r => r.iso_3166_1 === 'DE');
+ if (de) {
+ const theatrical = de.release_dates.find(r => r.type === 3);
+ if (theatrical?.release_date) out.de_cinema = theatrical.release_date.slice(0,10);
+ }
+ // US Kinostart (type 3)
+ const us = rd?.results?.find(r => r.iso_3166_1 === 'US');
+ if (us) {
+ const theatrical = us.release_dates.find(r => r.type === 3);
+ if (theatrical?.release_date) out.us_cinema = theatrical.release_date.slice(0,10);
+ // US Digital (type 4)
+ const digital = us.release_dates.find(r => r.type === 4);
+ if (digital?.release_date) out.us_digital = digital.release_date.slice(0,10);
+ }
+ return out;
+}
async function fetchAllPages(path, maxPages = 3) {
const first = await tmdb(path, { page: 1 });
const total = Math.min(first.total_pages || 1, maxPages);
@@ -262,6 +282,7 @@ router.get('/movie/:id', authenticate, async (req, res) => {
backdrop_path: detail.backdrop_path, release_date: detail.release_date,
runtime: detail.runtime, vote_average: detail.vote_average,
genres: (detail.genres||[]).map(g => g.name), fsk,
+ release_dates: extractReleaseDates(detail.release_dates),
cast: (detail.credits?.cast||[]).slice(0,8).map(a => a.name),
director: detail.credits?.crew?.find(c => c.job==='Director')?.name||null,
tmdb_url: `https://www.themoviedb.org/movie/${detail.id}`,
diff --git a/frontend/src/tools/media.jsx b/frontend/src/tools/media.jsx
index d8730be..8a1409b 100644
--- a/frontend/src/tools/media.jsx
+++ b/frontend/src/tools/media.jsx
@@ -580,8 +580,12 @@ function MovieModal({ tmdbId, onClose, mobile, onHasXrel }) {
{detail.vote_average > 0 &&