39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
/**
|
|
* TMDB pass for the movies & TV tracker: match unmatched titles to TMDB ids, merge rows that turn
|
|
* out to be the same TMDB title, and cache posters, genres, year, runtime, cast and episode numbers.
|
|
* Needs TMDB_API_KEY (v3 key or v4 read token); scripts/movies-run.sh loads it from
|
|
* ~/.config/movies/tmdb.env. Without a key it exits 0 and changes nothing.
|
|
*
|
|
* scripts/movies-run.sh tmdb # pending titles + missing/old metadata
|
|
* scripts/movies-run.sh tmdb --retry-not-found # also retry titles TMDB didn't find before
|
|
* scripts/movies-run.sh tmdb --refresh-days 30 # refetch metadata older than 30 days (default 90)
|
|
*/
|
|
import postgres from 'postgres';
|
|
import { Tmdb, runTmdb } from '../src/lib/server/movies/tmdb';
|
|
|
|
const args = process.argv.slice(2);
|
|
const opt = (n: string) => {
|
|
const i = args.indexOf(`--${n}`);
|
|
return i >= 0 ? args[i + 1] : undefined;
|
|
};
|
|
if (!process.env.TMDB_API_KEY) {
|
|
console.log('No TMDB_API_KEY set: nothing to do');
|
|
process.exit(0);
|
|
}
|
|
if (!process.env.DB_URL)
|
|
throw new Error('DB_URL is required (use scripts/movies-run.sh on stan-ovh)');
|
|
const sql = postgres(process.env.DB_URL, { max: 1, onnotice: () => {} });
|
|
try {
|
|
const m = await runTmdb(sql, new Tmdb(process.env.TMDB_API_KEY), {
|
|
retryNotFound: args.includes('--retry-not-found'),
|
|
refreshDays: opt('refresh-days') ? Number(opt('refresh-days')) : undefined,
|
|
limit: opt('limit') ? Number(opt('limit')) : undefined,
|
|
log: (l) => console.log(` ${l}`)
|
|
});
|
|
console.log(
|
|
`TMDB: tried ${m.tried}, ${m.matched} matched, ${m.merged} merged, ${m.notFound} not found, ${m.refreshed} refreshed, ${m.errors} errors`
|
|
);
|
|
} finally {
|
|
await sql.end();
|
|
}
|