diff --git a/backend/src/tools/media/routes.js b/backend/src/tools/media/routes.js index 1af456f..79ff379 100644 --- a/backend/src/tools/media/routes.js +++ b/backend/src/tools/media/routes.js @@ -309,4 +309,27 @@ router.put('/settings', authenticate, requireAdmin, (req, res) => { res.json({ ok: true }); }); +// DEBUG – nach Test entfernen +router.get('/debug-xrel2', authenticate, async (req, res) => { + const title = req.query.title || 'Thunderbolts'; + const original = req.query.original || title; + const log = {}; + try { + log.step1_query = title; + const searchData = await xrelFetch('/search/ext_info.json', { q: title, type: 'movie', limit: 5 }); + log.step1_results = (searchData.results || []).map(r => ({ id: r.id, title: r.title, type: r.type })); + const extInfoId = (searchData.results || []).find(h => h.type === 'movie')?.id; + log.ext_info_id = extInfoId || null; + if (extInfoId) { + const p2p = await xrelFetch('/p2p/releases.json', { ext_info_id: extInfoId, per_page: 5 }); + log.p2p_total = p2p.total_count; + log.p2p_sample = (p2p.list || []).slice(0, 3).map(r => ({ dirname: r.dirname, main_lang: r.main_lang, pub_time: r.pub_time })); + const scene = await xrelFetch('/release/ext_info.json', { id: extInfoId, per_page: 5 }); + log.scene_total = scene.total_count; + log.scene_sample = (scene.list || []).slice(0, 3).map(r => ({ dirname: r.dirname, time: r.time })); + } + } catch (e) { log.error = e.message; } + res.json(log); +}); + module.exports = router; diff --git a/frontend/src/tools/media.jsx b/frontend/src/tools/media.jsx index 4d00885..c6f4851 100644 --- a/frontend/src/tools/media.jsx +++ b/frontend/src/tools/media.jsx @@ -495,28 +495,36 @@ function MovieModal({ tmdbId, onClose, mobile }) { borderRadius: mobile ? '16px 16px 0 0' : 16, width: mobile ? '100%' : 560, maxHeight: mobile ? '88vh' : '85vh', - overflowY:'auto', - WebkitOverflowScrolling:'touch', + display:'flex', flexDirection:'column', position:'relative', }}> - {/* Backdrop */} - {detail?.backdrop_path && ( -
+ {/* Backdrop + fixer Schließen-Button – NICHT im scrollenden Bereich */} +
+ {detail?.backdrop_path && ( -
-
- )} + )} +
- {/* Schließen */} + {/* Schließen – sticky außerhalb des Scroll-Containers */} + {/* Scrollbarer Inhalt */} +
{loading && ⏳ Lädt…} {error && } @@ -630,6 +638,7 @@ function MovieModal({ tmdbId, onClose, mobile }) { )} )}
+
{/* Ende scroll-wrapper */}
);