Full overhaul of the repo please see changelog

This commit is contained in:
Inside4ndroid
2025-09-16 18:54:12 +01:00
parent 2119398460
commit e0ad35d2b1
115 changed files with 26066 additions and 6426 deletions
+38
View File
@@ -0,0 +1,38 @@
const fetch = (...args) => import('node-fetch').then(m => m.default(...args));
const { config } = require('./config');
const cache = {
imdbByTmdb: new Map(),
details: new Map(),
};
const TTL_MS = 6 * 60 * 60 * 1000;
function isFresh(entry) { return entry && (Date.now() - entry.ts) < TTL_MS; }
async function tmdbFetchJson(url) {
if (!config.tmdbApiKey) throw new Error('TMDB_API_KEY missing');
const sep = url.includes('?') ? '&' : '?';
const full = `${url}${sep}api_key=${config.tmdbApiKey}`;
const res = await fetch(full, { timeout: 15000 });
if (!res.ok) throw new Error(`TMDB request failed ${res.status}`);
return res.json();
}
async function getExternalIds(type, tmdbId) {
const key = `${type}:${tmdbId}`;
const cached = cache.imdbByTmdb.get(key);
if (isFresh(cached)) return cached.data;
const json = await tmdbFetchJson(`https://api.themoviedb.org/3/${type}/${tmdbId}/external_ids`);
cache.imdbByTmdb.set(key, { data: json, ts: Date.now() });
return json;
}
async function getDetails(type, tmdbId) {
const key = `${type}:${tmdbId}:details`;
const cached = cache.details.get(key);
if (isFresh(cached)) return cached.data;
const json = await tmdbFetchJson(`https://api.themoviedb.org/3/${type}/${tmdbId}`);
cache.details.set(key, { data: json, ts: Date.now() });
return json;
}
async function resolveImdbId(type, tmdbId) {
try { const ext = await getExternalIds(type, tmdbId); return ext.imdb_id || null; } catch { return null; }
}
module.exports = { getExternalIds, getDetails, resolveImdbId };