--- import { timePatterns, hallRotation, weekdayShort, type MovieInterface, type ITMDBResponse, } from "../scripts/bigConstants"; async function getTopMovies(): Promise { const API_KEY = import.meta.env.TMDB_API_KEY; console.log("Fetching with Key:", API_KEY ? "Key found" : "KEY MISSING!"); const IMAGE_BASE_URL = "https://image.tmdb.org/t/p/w500"; // 1. Corrected "discover" spelling const response = await fetch( `https://api.themoviedb.org/3/discover/movie?api_key=${API_KEY}&language=de-DE&sort_by=popularity.desc`, ); console.log("Response Status:", response.status); const data: ITMDBResponse = await response.json(); console.log("Results found:", data.results?.length); if (!data.results) return []; return data.results?.map((movie) => ({ id: movie.id, title: movie.title || "Unknown Title", poster: movie.poster_path ? `${IMAGE_BASE_URL}${movie.poster_path}` : "/placeholder.jpg", rating: movie.vote_average || 0, // Add optional chaining (?.) and a fallback year: movie.release_date?.split("-")[0] || "N/A", genre: "Movie", // Discover doesn't provide the name, only an ID duration: 120, // Discover doesn't provide duration fsk: "12", description: movie.overview || "No description available.", backdrop: movie.backdrop_path, })); } const formatDateShort = (dateObj: Date) => { const day = String(dateObj.getDate()).padStart(2, "0"); const month = String(dateObj.getMonth() + 1).padStart(2, "0"); return `${day}.${month}.`; }; const buildDayMeta = (offset: number) => { const date = new Date(); date.setHours(0, 0, 0, 0); date.setDate(date.getDate() + offset); const weekday = weekdayShort[date.getDay()]; const formattedDate = formatDateShort(date); if (offset === 0) return { offset, date, short: "Heute", long: `Heute, ${formattedDate}`, }; if (offset === 1) return { offset, date, short: "Morgen", long: `Morgen, ${formattedDate}`, }; return { offset, date, short: weekday, long: `${weekday}, ${formattedDate}`, }; }; const buildScheduleForMovie = (movieIndex: number) => { return Array.from({ length: 7 }, (_, dayOffset) => { const dayMeta = buildDayMeta(dayOffset); const pattern = timePatterns[(movieIndex + dayOffset) % timePatterns.length]; const desiredCount = 4 + ((movieIndex + dayOffset) % 2); const showCount = Math.min(pattern.length, desiredCount); const showings = pattern .slice(0, showCount) .map((time: string, slotIndex: number) => { const hall = hallRotation[ (movieIndex + dayOffset + slotIndex) % hallRotation.length ]; return { time, hall }; }); return { ...dayMeta, showings }; }); }; let movieCatalog = await getTopMovies(); const movieProgram = movieCatalog?.map((movie, movieIndex) => ({ ...movie, schedule: buildScheduleForMovie(movieIndex), })); ---

Aktuelle Filme & Spielzeiten

Alle Filme mit 7 Tagen Spielplan. Erste Vorstellung täglich ab 13:00 Uhr.

{ movieProgram?.map((movie, programIndex) => (
{movie.title} {movie.fsk}

{movie.title}

{movie.duration} Min. | {movie.genre} | FSK:{" "} {movie.fsk}

{movie.description}

{movie.schedule.map((day, dayIndex) => ( ))}
Tag Kinosaal Uhrzeit
{movie.schedule[0].showings.map( (showing) => ( ), )}
)) }