diff --git a/backend/src/tools/media/routes.js b/backend/src/tools/media/routes.js
index 49247d1..fbb8bca 100644
--- a/backend/src/tools/media/routes.js
+++ b/backend/src/tools/media/routes.js
@@ -66,24 +66,27 @@ function extractFSK(rd) {
return null;
}
+const RELEASE_TYPE_LABEL = { 2:'Kino (limited)', 3:'Kinostart', 4:'Web', 5:'Retail', 6:'TV' };
+
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);
+ if (!rd?.results) return [];
+ const PRIORITY = ['DE','US','GB','FR','AT','CH'];
+ const entries = [];
+ for (const country of PRIORITY) {
+ const c = rd.results.find(r => r.iso_3166_1 === country);
+ if (!c) continue;
+ for (const r of c.release_dates) {
+ if (!r.release_date) continue;
+ if (!RELEASE_TYPE_LABEL[r.type]) continue; // Premiere+TV überspringen
+ entries.push({
+ country,
+ label: `${RELEASE_TYPE_LABEL[r.type]} (${country})`,
+ date: r.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;
+ entries.sort((a, b) => a.date.localeCompare(b.date));
+ return entries;
}
async function fetchAllPages(path, maxPages = 3) {
const first = await tmdb(path, { page: 1 });
diff --git a/frontend/src/tools/media.jsx b/frontend/src/tools/media.jsx
index 8a1409b..d00504d 100644
--- a/frontend/src/tools/media.jsx
+++ b/frontend/src/tools/media.jsx
@@ -580,11 +580,7 @@ function MovieModal({ tmdbId, onClose, mobile, onHasXrel }) {
{detail.vote_average > 0 &&