Add movies & TV tracker: movies schema, Netflix/Letterboxd/Plex/JSON/recs importers, TMDB matching, stats, owner visibility
This commit is contained in:
38
scripts/movies-tmdb.ts
Normal file
38
scripts/movies-tmdb.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* 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();
|
||||
}
|
||||
Reference in New Issue
Block a user