41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const CONFIG_PATH = path.join(__dirname, '..', 'config.json');
|
|
|
|
const DEFAULTS = {
|
|
tmdbKey: '',
|
|
enabledProviders: ['videasy', 'vidfast'],
|
|
timeoutMs: 30000,
|
|
apiHost: '0.0.0.0',
|
|
apiPort: 8789,
|
|
filters: {
|
|
minQuality: 'any',
|
|
audioCodec: 'any',
|
|
subtitles: 'any',
|
|
subtitleLang: '',
|
|
},
|
|
};
|
|
|
|
function loadConfig() {
|
|
let cfg = { ...DEFAULTS, filters: { ...DEFAULTS.filters } };
|
|
if (fs.existsSync(CONFIG_PATH)) {
|
|
const saved = JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf8'));
|
|
cfg = { ...cfg, ...saved, filters: { ...cfg.filters, ...(saved.filters || {}) } };
|
|
} else {
|
|
saveConfig(cfg);
|
|
}
|
|
if (!cfg.tmdbKey && process.env.TMDB_API_KEY) cfg.tmdbKey = process.env.TMDB_API_KEY;
|
|
if (!cfg.tmdbKey) {
|
|
console.error('No TMDB API key found. Set "tmdbKey" in config.json or the TMDB_API_KEY env var.');
|
|
process.exit(1);
|
|
}
|
|
return cfg;
|
|
}
|
|
|
|
function saveConfig(cfg) {
|
|
fs.writeFileSync(CONFIG_PATH, JSON.stringify(cfg, null, 2) + '\n');
|
|
}
|
|
|
|
module.exports = { loadConfig, saveConfig, CONFIG_PATH };
|