'use strict'; const { SlowHttp } = require('../lib/http'); const { mangaDexInfo, discoverMangaDexCatalog } = require('../adapters/mangadex'); const { runMangaDexArchive } = require('../jobs/mangadex-archive'); const { controlledHttp } = require('./common'); module.exports = { id: 'mangadex', label: 'MangaDex', match: mangaDexInfo, async discover(item, options) { const http = new SlowHttp({ gateKey: 'mangadex', minMs: options.settings.minMs, maxMs: options.settings.maxMs, maxRetries: 2, userAgent: 'MangaCircus-Scraper/1.0 (personal archival; sequential MangaDex requests)', onEvent: options.onEvent }); return discoverMangaDexCatalog(item.url, controlledHttp(http, options.shouldStop)); }, run(item, options) { return runMangaDexArchive({ seriesUrl: item.url, title: item.title, libraryRoot: options.libraryRoot, metadataSearch: item.metadataSearch || item.title, minMs: options.settings.minMs, maxMs: options.settings.maxMs, chapterMinMs: options.settings.chapterMinMs, chapterMaxMs: options.settings.chapterMaxMs, shouldStop: options.shouldStop, scope: item.scope, existingPolicy: item.existingPolicy, libraryMangaId: item.libraryMangaId, onPublished: options.onPublished, onCatalog: options.onCatalog, }); }, };