import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; const __dirname = dirname(fileURLToPath(import.meta.url)); export const ROOT = __dirname; export const TMDBINTEGRAL_DIR = join(ROOT, 'tmdbintegral'); export const MOVIE_DIR = join(TMDBINTEGRAL_DIR, 'movie'); export const TV_DIR = join(TMDBINTEGRAL_DIR, 'tv'); export const JUSTWATCH_MOVIE_DIR = join(TMDBINTEGRAL_DIR, 'justwatchmovie'); export const JUSTWATCH_TV_DIR = join(TMDBINTEGRAL_DIR, 'justwatchtv'); export const IMDB_RATINGS = join(ROOT, 'imdbratings.tsv'); export const CRON_TXT = join(ROOT, 'cron.txt'); export const LASTCRON_TXT = join(ROOT, 'lastcron.txt'); function required(name) { const v = process.env[name]; if (!v) throw new Error(`Variable d'environnement manquante: ${name} (voir .env.example)`); return v; } function int(name, def) { const v = process.env[name]; return v ? parseInt(v, 10) : def; } function str(name, def) { return process.env[name] ?? def; } // Secrets / runtime export const TMDB_API_KEY = required('TMDB_API_KEY'); export const ADMIN_PASSWORD_HASH = required('ADMIN_PASSWORD_HASH'); export const SESSION_SECRET = required('SESSION_SECRET'); export const PORT = int('PORT', 3000); export const HOST = str('HOST', '0.0.0.0'); export const RATE_LIMIT_PER_SEC = int('RATE_LIMIT_PER_SEC', 50); // URLs externes export const TMDB_API_BASE = str('TMDB_API_BASE', 'https://api.themoviedb.org/3'); export const TMDB_EXPORTS_BASE = str('TMDB_EXPORTS_BASE', 'http://files.tmdb.org/p/exports'); export const IMDB_DATASETS_BASE = str('IMDB_DATASETS_BASE', 'https://datasets.imdbws.com'); export const MOVIE_URL = str('MOVIE_URL', 'https://www.themoviedb.org/movie'); export const TV_URL = str('TV_URL', 'https://www.themoviedb.org/tv'); export const MOVIE_API_URL = str('MOVIE_API_URL', 'https://tmdb.uklm.xyz/api?t=movie&q='); export const TV_API_URL = str('TV_API_URL', 'https://tmdb.uklm.xyz/api?t=tv&q='); export const POSTER_URL = str('POSTER_URL', 'https://image.tmdb.org/t/p/w200'); export const NO_POSTER_URL = str('NO_POSTER_URL', 'https://www.serveurperso.com/stats/noposter.jpg'); export const IMDB_URL = str('IMDB_URL', 'https://www.imdb.com/title'); // Reglages cron / recherche export const CHANGES_DAYS = int('CHANGES_DAYS', 3); export const NB_SEARCH_PARTS = int('NB_SEARCH_PARTS', 8); export const NB_WORKERS = int('NB_WORKERS', 8); export const TITLE_TOLERANCE = int('TITLE_TOLERANCE', 40); export const LEV_INS = int('LEV_INS', 10); export const LEV_REP = int('LEV_REP', 12); export const LEV_DEL = int('LEV_DEL', 10); export const LEV_SCALE = int('LEV_SCALE', 10); export const YEAR_TOLERANCE = int('YEAR_TOLERANCE', 1); export const TITLE = str('PAGE_TITLE', 'Index protégé');