xenforo-dl
Version:
XenForo Forum Downloader
50 lines • 2.03 kB
JavaScript
import path from 'path';
import { pickDefined } from './utils/Misc.js';
const DEFAULT_DOWNLOADER_CONFIG = {
outDir: process.cwd(),
dirStructure: {
site: true,
parentForumsAndSections: 'all',
thread: true,
attachments: true
},
request: {
maxRetries: 3,
maxConcurrent: 10,
minTime: {
page: 500,
attachment: 200
},
cookie: null
},
overwrite: false,
continue: false
};
export function getDownloaderConfig(url, options) {
const defaults = DEFAULT_DOWNLOADER_CONFIG;
return {
outDir: options?.outDir ? path.resolve(options.outDir) : defaults.outDir,
dirStructure: {
site: pickDefined(options?.dirStructure?.site, defaults.dirStructure.site),
parentForumsAndSections: pickDefined(options?.dirStructure?.parentForumsAndSections, defaults.dirStructure.parentForumsAndSections),
thread: pickDefined(options?.dirStructure?.thread, defaults.dirStructure.thread),
attachments: pickDefined(options?.dirStructure?.attachments, defaults.dirStructure.attachments)
},
request: {
maxRetries: pickDefined(options?.request?.maxRetries, defaults.request.maxRetries),
maxConcurrent: pickDefined(options?.request?.maxConcurrent, defaults.request.maxConcurrent),
minTime: {
page: pickDefined(options?.request?.minTime?.page, defaults.request.minTime.page),
attachment: pickDefined(options?.request?.minTime?.attachment, defaults.request.minTime.attachment)
},
cookie: pickDefined(options?.request?.cookie, defaults.request.cookie)
},
overwrite: pickDefined(options?.overwrite, defaults.overwrite),
continue: pickDefined(options?.continue, defaults.continue),
targetURL: url
};
}
export function getDefaultDownloaderOutDir() {
return DEFAULT_DOWNLOADER_CONFIG.outDir;
}
//# sourceMappingURL=DownloaderOptions.js.map