48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
import fs from 'fs'
|
|
import path from 'path'
|
|
import { DATA_DIR } from './config.js'
|
|
|
|
const DATA_PATH = path.join(DATA_DIR, 'settings.json')
|
|
|
|
export interface Settings {
|
|
mediaPath : string
|
|
completePath : string
|
|
organizeMode : 'hardlink' | 'copy' | 'move'
|
|
category : string
|
|
nfoSupport : boolean
|
|
autoImport : boolean
|
|
devMode : boolean
|
|
deleteTorrentOnMove : boolean
|
|
requestAutoDownloadUsers: 'all' | string[] // IDs users autorisés au dl auto sur approbation ; [] = désactivé
|
|
jellyfinUrl : string // URL du serveur Jellyfin (ex: http://jellyfin:8096)
|
|
jellyfinAdminToken : string // Token admin Jellyfin pour la sync
|
|
}
|
|
|
|
const defaults: Settings = {
|
|
mediaPath : '',
|
|
completePath : '',
|
|
organizeMode : 'hardlink',
|
|
category : 'fankai',
|
|
nfoSupport : false,
|
|
autoImport : true,
|
|
devMode : false,
|
|
deleteTorrentOnMove: false,
|
|
requestAutoDownloadUsers: [],
|
|
jellyfinUrl : '',
|
|
jellyfinAdminToken : '',
|
|
}
|
|
|
|
export function readSettings(): Settings {
|
|
try {
|
|
if (!fs.existsSync(DATA_PATH)) return { ...defaults }
|
|
return { ...defaults, ...JSON.parse(fs.readFileSync(DATA_PATH, 'utf-8')) }
|
|
} catch { return { ...defaults } }
|
|
}
|
|
|
|
export function writeSettings(settings: Partial<Settings>): Settings {
|
|
const current = readSettings()
|
|
const updated = { ...current, ...settings }
|
|
fs.mkdirSync(path.dirname(DATA_PATH), { recursive: true })
|
|
fs.writeFileSync(DATA_PATH, JSON.stringify(updated, null, 2))
|
|
return updated
|
|
} |