(async () => { const apiClient = window.ApiClient; if (!apiClient) { console.error("ApiClient not found. Are you logged in?"); return; } const userId = apiClient.getCurrentUserId(); const serverAddress = apiClient.serverAddress(); const maxDaysRecent = 30; // 30 Tage Limit const pastDate = new Date(); pastDate.setDate(pastDate.getDate() - maxDaysRecent); const dateStr = pastDate.toISOString(); console.log(`\n%c=== TEST: DateCreated Direkt-Abfrage ===`, "color: #00a4dc; font-weight: bold; font-size: 14px;"); console.log(`Wir suchen Filme, die nach dem ${dateStr} hinzugefügt wurden.\n`); // Wir probieren alle denkbaren Parameter-Schreibweisen aus, // die Jellyfin historisch oder in Forks für "DateCreated" akzeptieren könnte. const testCases = [ { name: "MinDateCreated (PascalCase)", param: `MinDateCreated=${dateStr}` }, { name: "minDateCreated (camelCase)", param: `minDateCreated=${dateStr}` }, { name: "DateCreatedMin", param: `DateCreatedMin=${dateStr}` }, { name: "dateCreatedMin", param: `dateCreatedMin=${dateStr}` }, { name: "StartDate", param: `StartDate=${dateStr}` }, { name: "startDate", param: `startDate=${dateStr}` } ]; try { for (let i = 0; i < testCases.length; i++) { const test = testCases[i]; const apiUrl = `${serverAddress}/Items?IncludeItemTypes=Movie,Series&Recursive=true&enableUserData=true&Limit=5&fields=Id,DateCreated&userId=${userId}&${test.param}`; console.log(`%cTest ${i+1}: ${test.name}`, "color: yellow;"); console.log(`URL: ${apiUrl}`); const response = await fetch(apiUrl, { headers: { Authorization: `MediaBrowser Client="${apiClient.appName()}", Device="${apiClient.deviceName()}", DeviceId="${apiClient.deviceId()}", Version="${apiClient.appVersion()}", Token="${apiClient.accessToken()}"` } }); if (!response.ok) { console.error(`-> ❌ HTTP Fehler: ${response.status}`); continue; } const data = await response.json(); const items = data.Items || []; // Zur Auswertung: Wenn die Abfrage ignoriert wird, liefert er oft ALLE (hier max 5) zurück. // Filtert er wirklich, sollten es WENIGER als 5, und zwar im besten Fall genau die RICHTIGEN sein. console.log(`-> Ergebnis: ${items.length} Items zurückgeliefert.`); if (items.length > 0) { // Wir checken, ob die zurückgelieferten Items WIRKLICH neu sind const oldItems = items.filter(item => new Date(item.DateCreated) < pastDate); if (oldItems.length > 0) { console.log(` ❌ Filter FEHLGESCHLAGEN: Es wurden ${oldItems.length} "alte" Filme zurückgegeben (z.B. ${oldItems[0].Name}). Er ignoriert also den Parameter.`); } else { console.log(` ✅ Filter KÖNNTE funktionieren: Alle zurückgegebenen Filme sind neuer als unser Datum! (Erster: ${items[0].Name})`); } } else { console.log(` ❓ Keine Items gefunden (entweder strenger Filter oder gar keine neuen Filme vorhanden).`); } console.log("\n"); } } catch (error) { console.error("Fehler beim Abruf:", error); } })();