manhuagui-cli 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +172 -58
  2. package/README_EN.md +172 -56
  3. package/dist/lib/browser.d.ts +4 -0
  4. package/dist/lib/browser.d.ts.map +1 -0
  5. package/dist/lib/browser.js +22 -0
  6. package/dist/lib/browser.js.map +1 -0
  7. package/dist/lib/chapter.d.ts +19 -3
  8. package/dist/lib/chapter.d.ts.map +1 -1
  9. package/dist/lib/chapter.js +142 -63
  10. package/dist/lib/chapter.js.map +1 -1
  11. package/dist/lib/cli.d.ts +20 -0
  12. package/dist/lib/cli.d.ts.map +1 -1
  13. package/dist/lib/cli.js +142 -131
  14. package/dist/lib/cli.js.map +1 -1
  15. package/dist/lib/comic.d.ts.map +1 -1
  16. package/dist/lib/comic.js +26 -17
  17. package/dist/lib/comic.js.map +1 -1
  18. package/dist/lib/config.d.ts +26 -19
  19. package/dist/lib/config.d.ts.map +1 -1
  20. package/dist/lib/config.js +92 -33
  21. package/dist/lib/config.js.map +1 -1
  22. package/dist/lib/logger.d.ts +3 -0
  23. package/dist/lib/logger.d.ts.map +1 -1
  24. package/dist/lib/logger.js +6 -2
  25. package/dist/lib/logger.js.map +1 -1
  26. package/dist/lib/progress.d.ts +11 -5
  27. package/dist/lib/progress.d.ts.map +1 -1
  28. package/dist/lib/progress.js +17 -15
  29. package/dist/lib/progress.js.map +1 -1
  30. package/dist/lib/prompts.d.ts +1 -0
  31. package/dist/lib/prompts.d.ts.map +1 -1
  32. package/dist/lib/prompts.js +9 -12
  33. package/dist/lib/prompts.js.map +1 -1
  34. package/dist/lib/speed.d.ts +16 -0
  35. package/dist/lib/speed.d.ts.map +1 -0
  36. package/dist/lib/speed.js +83 -0
  37. package/dist/lib/speed.js.map +1 -0
  38. package/dist/lib/tasks.d.ts +21 -0
  39. package/dist/lib/tasks.d.ts.map +1 -0
  40. package/dist/lib/tasks.js +124 -0
  41. package/dist/lib/tasks.js.map +1 -0
  42. package/dist/lib/ui.d.ts +33 -0
  43. package/dist/lib/ui.d.ts.map +1 -0
  44. package/dist/lib/ui.js +216 -0
  45. package/dist/lib/ui.js.map +1 -0
  46. package/package.json +5 -3
package/dist/lib/cli.js CHANGED
@@ -1,27 +1,21 @@
1
1
  import { join } from "node:path";
2
2
  import { intro, isCancel, outro, spinner } from "@clack/prompts";
3
3
  import { defineCommand } from "citty";
4
- import { Listr } from "listr2";
5
4
  import { chromium } from "playwright";
6
- import { extractChapterImages } from "./chapter.js";
5
+ import { createBrowserContext } from "./browser.js";
7
6
  import { parseComicPage } from "./comic.js";
8
- import { CHAPTER_DELAY_MAX, CHAPTER_DELAY_MIN, OUTPUT_BASE, pickUserAgent, VIEWPORT_MAX_HEIGHT, VIEWPORT_MAX_WIDTH, VIEWPORT_MIN_HEIGHT, VIEWPORT_MIN_WIDTH, } from "./config.js";
7
+ import { config, initConfig } from "./config.js";
9
8
  import { CancelledError } from "./errors.js";
10
9
  import { logger } from "./logger.js";
11
- import { chapterKey, createProgress, filterPending, loadProgress, markChapter, saveProgress, } from "./progress.js";
10
+ import { chapterKey, filterPending, loadProgress } from "./progress.js";
12
11
  import { promptConfirm, promptResume, promptSections, promptUrl } from "./prompts.js";
13
- import { atomicSaveJSON, humanDelay, randInt, slugify } from "./utils.js";
12
+ import { runPipeline } from "./tasks.js";
13
+ import { atomicSaveJSON, slugify } from "./utils.js";
14
14
  async function launchBrowser() {
15
15
  return chromium.launch({ headless: true });
16
16
  }
17
17
  async function parseComicWithSpinner(browser, url) {
18
- const ctx = await browser.newContext({
19
- userAgent: pickUserAgent(),
20
- viewport: {
21
- width: randInt(VIEWPORT_MIN_WIDTH, VIEWPORT_MAX_WIDTH),
22
- height: randInt(VIEWPORT_MIN_HEIGHT, VIEWPORT_MAX_HEIGHT),
23
- },
24
- });
18
+ const ctx = await createBrowserContext(browser);
25
19
  const page = await ctx.newPage();
26
20
  const s = spinner();
27
21
  s.start("Parsing comic page");
@@ -30,7 +24,7 @@ async function parseComicWithSpinner(browser, url) {
30
24
  s.stop(comic.title);
31
25
  return comic;
32
26
  }
33
- function applyFilters(sections, sectionFilter, chapterFilter) {
27
+ export function applyFilters(sections, sectionFilter, chapterFilter) {
34
28
  let result = sections;
35
29
  if (sectionFilter) {
36
30
  result = result.filter((s) => s.name === sectionFilter || s.name.includes(sectionFilter));
@@ -45,78 +39,70 @@ function applyFilters(sections, sectionFilter, chapterFilter) {
45
39
  }
46
40
  return result;
47
41
  }
48
- function reportResults(collected, errors, totalChapters) {
49
- if (Object.keys(collected).length > 0) {
50
- logger.info(`Downloaded ${Object.keys(collected).length}/${totalChapters} chapters`);
42
+ function logSectionSummary(sections) {
43
+ const total = sections.reduce((sum, s) => sum + s.chapters.length, 0);
44
+ logger.info(`Sections: ${sections.map((s) => `${s.name}(${s.chapters.length})`).join(", ")}`);
45
+ logger.info(`Total chapters: ${total}`);
46
+ return total;
47
+ }
48
+ function displayDryRun(sections) {
49
+ for (const section of sections) {
50
+ for (const ch of section.chapters) {
51
+ logger.info(` [${section.name}] ${ch.title}`);
52
+ }
51
53
  }
52
- if (errors.length > 0) {
53
- logger.warn(`${errors.length} errors:`);
54
- for (const e of errors)
55
- logger.warn(` ! ${e}`);
54
+ logger.info("Dry run complete. No files downloaded.");
55
+ }
56
+ function reportResults(result, attempted) {
57
+ logger.info(`Done. ${result.ok} OK, ${result.failed} failed, ${attempted} total attempted.`);
58
+ if (Object.keys(result.collected).length > 0) {
59
+ logger.info(`Downloaded ${Object.keys(result.collected).length} chapters.`);
60
+ }
61
+ if (result.errors.length > 0) {
62
+ logger.warn(`${result.errors.length} errors:`);
63
+ for (const e of result.errors)
64
+ logger.warn(` - ${e}`);
56
65
  }
57
- logger.info(`Done. Processed ${totalChapters} chapters.`);
58
66
  }
59
- async function processChapter(chapter, sectionName, comicTitle, browser) {
60
- const dirName = slugify(chapter.title);
61
- const outputDir = join(OUTPUT_BASE, slugify(comicTitle), slugify(sectionName), dirName);
62
- const urls = await extractChapterImages(chapter.url, browser, outputDir);
63
- if (urls.length === 0)
64
- return null;
65
- return { title: chapter.title, urls, chapterUrl: chapter.url };
67
+ async function executeAndReport(opts) {
68
+ const { sections, comic, url, browser, resume, totalChapters, totalPagesExpected } = opts;
69
+ const result = await runPipeline({
70
+ sections,
71
+ comicTitle: comic.title,
72
+ comicUrl: url,
73
+ browser,
74
+ resume,
75
+ totalPagesExpected,
76
+ });
77
+ if (Object.keys(result.collected).length > 0) {
78
+ atomicSaveJSON(join(config.outputBase, slugify(comic.title), "urls.json"), result.collected);
79
+ }
80
+ reportResults(result, totalChapters);
66
81
  }
67
- function createDownloadTasks(sections, comicTitle, comicUrl, browser, resume) {
68
- const collected = {};
69
- const errors = [];
70
- const comicDir = join(OUTPUT_BASE, slugify(comicTitle));
71
- const progress = resume
72
- ? (loadProgress(comicDir) ?? createProgress(comicTitle, comicUrl))
73
- : createProgress(comicTitle, comicUrl);
74
- saveProgress(comicDir, progress);
75
- return {
76
- collected,
77
- errors,
78
- tasks: new Listr(sections.map((section) => ({
79
- title: section.name,
80
- task: async (_, task) => {
81
- const total = section.chapters.length;
82
- const label = section.name;
83
- for (let i = 0; i < section.chapters.length; i++) {
84
- const ch = section.chapters[i];
85
- task.title = `${label} ${i + 1}/${total}`;
86
- try {
87
- const r = await processChapter(ch, section.name, comicTitle, browser);
88
- if (r) {
89
- collected[r.title] = { urls: r.urls, chapterUrl: r.chapterUrl };
90
- markChapter(comicDir, progress, chapterKey(section.name, ch.title), "done", {
91
- pageCount: r.urls.length,
92
- });
93
- }
94
- else {
95
- markChapter(comicDir, progress, chapterKey(section.name, ch.title), "failed", {
96
- error: "No images found",
97
- });
98
- }
99
- }
100
- catch (err) {
101
- const errMsg = err instanceof Error ? err.message : String(err);
102
- errors.push(`${ch.title}: ${errMsg}`);
103
- markChapter(comicDir, progress, chapterKey(section.name, ch.title), "failed", {
104
- error: errMsg,
105
- });
106
- }
107
- if (i < section.chapters.length - 1) {
108
- await humanDelay(CHAPTER_DELAY_MIN, CHAPTER_DELAY_MAX);
109
- }
110
- }
111
- task.title = label;
112
- },
113
- })), {
114
- concurrent: false,
115
- rendererOptions: { collapseSubtasks: false },
116
- }),
117
- };
82
+ // interactive mode only
83
+ async function promptResumeCheck(opts) {
84
+ const { comic: _comic, sections, resume, comicDir } = opts;
85
+ if (resume)
86
+ return true;
87
+ const progress = loadProgress(comicDir);
88
+ if (!progress)
89
+ return false;
90
+ let done = 0;
91
+ let total = 0;
92
+ for (const s of sections) {
93
+ for (const c of s.chapters) {
94
+ total++;
95
+ if (progress.chapters[chapterKey(s.name, c.title)]?.status === "done")
96
+ done++;
97
+ }
98
+ }
99
+ if (total > 0 && done > 0) {
100
+ return promptResume(done, total);
101
+ }
102
+ return false;
118
103
  }
119
- async function runDirect(url, sectionFilter, chapterFilter, resume, dryRun) {
104
+ async function runDirect(opts) {
105
+ const { url, sectionFilter, chapterFilter, resume, dryRun } = opts;
120
106
  const browser = await launchBrowser();
121
107
  try {
122
108
  const comic = await parseComicWithSpinner(browser, url);
@@ -124,8 +110,9 @@ async function runDirect(url, sectionFilter, chapterFilter, resume, dryRun) {
124
110
  if (sections.length === 0) {
125
111
  throw new Error("No chapters found matching filters");
126
112
  }
113
+ const totalPagesExpected = sections.reduce((sum, s) => sum + s.chapters.reduce((cs, c) => cs + c.pageCount, 0), 0);
127
114
  if (resume) {
128
- const comicDir = join(OUTPUT_BASE, slugify(comic.title));
115
+ const comicDir = join(config.outputBase, slugify(comic.title));
129
116
  const progress = loadProgress(comicDir);
130
117
  if (progress) {
131
118
  sections = filterPending(progress, sections);
@@ -135,24 +122,20 @@ async function runDirect(url, sectionFilter, chapterFilter, resume, dryRun) {
135
122
  }
136
123
  }
137
124
  }
138
- const totalChapters = sections.reduce((sum, s) => sum + s.chapters.length, 0);
139
- logger.info(`Sections: ${sections.map((s) => `${s.name}(${s.chapters.length})`).join(", ")}`);
140
- logger.info(`Total chapters: ${totalChapters}`);
125
+ const totalChapters = logSectionSummary(sections);
141
126
  if (dryRun) {
142
- for (const section of sections) {
143
- for (const ch of section.chapters) {
144
- logger.info(` [${section.name}] ${ch.title}`);
145
- }
146
- }
147
- logger.info("Dry run complete. No files downloaded.");
127
+ displayDryRun(sections);
148
128
  return;
149
129
  }
150
- const { collected, errors, tasks: dl, } = createDownloadTasks(sections, comic.title, url, browser, resume);
151
- await dl.run();
152
- if (Object.keys(collected).length > 0) {
153
- atomicSaveJSON(join(OUTPUT_BASE, slugify(comic.title), "urls.json"), collected);
154
- }
155
- reportResults(collected, errors, totalChapters);
130
+ await executeAndReport({
131
+ sections,
132
+ comic,
133
+ url,
134
+ browser,
135
+ resume,
136
+ totalChapters,
137
+ totalPagesExpected,
138
+ });
156
139
  }
157
140
  finally {
158
141
  await browser.close();
@@ -164,52 +147,45 @@ async function runInteractive(resume, dryRun) {
164
147
  const browser = await launchBrowser();
165
148
  try {
166
149
  const comic = await parseComicWithSpinner(browser, url);
167
- let shouldResume = resume;
168
- const comicDir = join(OUTPUT_BASE, slugify(comic.title));
169
- const progress = loadProgress(comicDir);
170
- if (progress && !resume) {
171
- let done = 0;
172
- let total = 0;
173
- for (const s of comic.sections) {
174
- for (const c of s.chapters) {
175
- total++;
176
- if (progress.chapters[chapterKey(s.name, c.title)]?.status === "done")
177
- done++;
178
- }
179
- }
180
- if (total > 0 && done > 0) {
181
- shouldResume = await promptResume(done, total);
182
- }
183
- }
150
+ const comicDir = join(config.outputBase, slugify(comic.title));
151
+ const shouldResume = await promptResumeCheck({
152
+ comic,
153
+ sections: comic.sections,
154
+ resume,
155
+ comicDir,
156
+ });
184
157
  let selected = await promptSections(comic.sections);
185
- if (shouldResume && progress) {
186
- selected = filterPending(progress, selected);
187
- if (selected.length === 0) {
188
- outro("All chapters already downloaded.");
189
- return;
158
+ const totalPagesExpected = selected.reduce((sum, s) => sum + s.chapters.reduce((cs, c) => cs + c.pageCount, 0), 0);
159
+ if (shouldResume) {
160
+ const progress = loadProgress(comicDir);
161
+ if (progress) {
162
+ selected = filterPending(progress, selected);
163
+ if (selected.length === 0) {
164
+ outro("All chapters already downloaded.");
165
+ return;
166
+ }
190
167
  }
191
168
  }
192
- const totalChapters = selected.reduce((sum, s) => sum + s.chapters.length, 0);
169
+ const totalChapters = logSectionSummary(selected);
193
170
  const confirmed = await promptConfirm(totalChapters);
194
171
  if (!confirmed || isCancel(confirmed)) {
195
172
  outro("Cancelled.");
196
173
  return;
197
174
  }
198
175
  if (dryRun) {
199
- for (const section of selected) {
200
- for (const ch of section.chapters) {
201
- logger.info(` [${section.name}] ${ch.title}`);
202
- }
203
- }
176
+ displayDryRun(selected);
204
177
  outro(`Dry run complete. ${totalChapters} chapters would be downloaded.`);
205
178
  return;
206
179
  }
207
- const { collected, errors, tasks: dl, } = createDownloadTasks(selected, comic.title, url, browser, shouldResume);
208
- await dl.run();
209
- if (Object.keys(collected).length > 0) {
210
- atomicSaveJSON(join(OUTPUT_BASE, slugify(comic.title), "urls.json"), collected);
211
- }
212
- reportResults(collected, errors, totalChapters);
180
+ await executeAndReport({
181
+ sections: selected,
182
+ comic,
183
+ url,
184
+ browser,
185
+ resume: shouldResume,
186
+ totalChapters,
187
+ totalPagesExpected,
188
+ });
213
189
  }
214
190
  finally {
215
191
  await browser.close();
@@ -249,11 +225,46 @@ export const command = defineCommand({
249
225
  alias: "d",
250
226
  default: false,
251
227
  },
228
+ output: {
229
+ type: "string",
230
+ description: "下载输出目录 / Output directory for downloads",
231
+ alias: "o",
232
+ },
233
+ concurrency: {
234
+ type: "string",
235
+ description: "章节内图片并发下载数 / Concurrent image downloads per chapter",
236
+ alias: "C",
237
+ },
238
+ retry: {
239
+ type: "string",
240
+ description: "图片下载重试次数 / Retry count per image",
241
+ },
242
+ "log-level": {
243
+ type: "string",
244
+ description: "日志级别: debug | info | warn | error / Log level",
245
+ },
252
246
  },
253
247
  async run({ args }) {
248
+ const cliOverrides = {};
249
+ if (args.output)
250
+ cliOverrides.outputBase = args.output;
251
+ if (args.concurrency)
252
+ cliOverrides.imageConcurrency = Number(args.concurrency);
253
+ if (args.retry)
254
+ cliOverrides.retryCount = Number(args.retry);
255
+ if (args["log-level"] && ["debug", "info", "warn", "error"].includes(args["log-level"])) {
256
+ cliOverrides.logLevel = args["log-level"];
257
+ }
258
+ initConfig(cliOverrides);
254
259
  try {
255
260
  if (args.url) {
256
- await runDirect(args.url, args.section, args.chapter, args.resume, args["dry-run"]);
261
+ await runDirect({
262
+ url: args.url,
263
+ sectionFilter: args.section,
264
+ chapterFilter: args.chapter,
265
+ resume: args.resume,
266
+ dryRun: args["dry-run"],
267
+ });
257
268
  }
258
269
  else {
259
270
  await runInteractive(args.resume, args["dry-run"]);
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/lib/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/lib/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"comic.d.ts","sourceRoot":"","sources":["../../src/lib/comic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAW,MAAM,YAAY,CAAC;AAE9D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAgBxE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CA6BvE;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAkBhF"}
1
+ {"version":3,"file":"comic.d.ts","sourceRoot":"","sources":["../../src/lib/comic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAW,MAAM,YAAY,CAAC;AA6B9D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAgBxE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAoBvE;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAYhF"}
package/dist/lib/comic.js CHANGED
@@ -1,5 +1,26 @@
1
1
  import * as cheerio from "cheerio";
2
- import { ADULT_CLICK_SETTLE_DELAY, ADULT_SELECTOR_TIMEOUT, PAGE_LOAD_TIMEOUT } from "./config.js";
2
+ import { handleAdultCheck } from "./browser.js";
3
+ import { config } from "./config.js";
4
+ function extractComicId(url) {
5
+ const match = url.match(/\/comic\/(\d+)\//);
6
+ return match?.[1] ?? "0";
7
+ }
8
+ function parseSectionChapters($, h4, baseUrl) {
9
+ const chapters = [];
10
+ const directUl = $(h4).next("ul");
11
+ if (directUl.length) {
12
+ chapters.push(...parseChapters(directUl.html() ?? "", baseUrl));
13
+ }
14
+ else {
15
+ const chapterList = $(h4).nextAll(".chapter-list").first();
16
+ if (!chapterList.length)
17
+ return chapters;
18
+ chapterList.find("ul").each((_, ulEl) => {
19
+ chapters.push(...parseChapters($(ulEl).html() ?? "", baseUrl));
20
+ });
21
+ }
22
+ return chapters;
23
+ }
3
24
  export function parseChapters(ulHTML, baseUrl) {
4
25
  const $ = cheerio.load(ulHTML);
5
26
  const chapters = [];
@@ -18,8 +39,7 @@ export function parseChapters(ulHTML, baseUrl) {
18
39
  export function parseComicHTML(html, baseUrl) {
19
40
  const $ = cheerio.load(html);
20
41
  const title = $("h1").first().text().trim() || "unknown";
21
- const idMatch = baseUrl.match(/\/comic\/(\d+)\//);
22
- const id = idMatch?.[1] ?? "0";
42
+ const id = extractComicId(baseUrl);
23
43
  const sections = [];
24
44
  const chapterDiv = $(".chapter.cf").first();
25
45
  if (!chapterDiv.length)
@@ -28,13 +48,7 @@ export function parseComicHTML(html, baseUrl) {
28
48
  const sectionName = $(h4).find("span").text().trim();
29
49
  if (!sectionName)
30
50
  return;
31
- let ul = $(h4).next("ul");
32
- if (!ul.length) {
33
- ul = $(h4).next(".chapter-list").find("ul").first();
34
- if (!ul.length)
35
- return;
36
- }
37
- const chapters = parseChapters(ul.html() ?? "", baseUrl);
51
+ const chapters = parseSectionChapters($, h4, baseUrl);
38
52
  if (chapters.length > 0) {
39
53
  sections.push({ name: sectionName, chapters });
40
54
  }
@@ -44,17 +58,12 @@ export function parseComicHTML(html, baseUrl) {
44
58
  export async function parseComicPage(page, url) {
45
59
  const response = await page.goto(url, {
46
60
  waitUntil: "domcontentloaded",
47
- timeout: PAGE_LOAD_TIMEOUT,
61
+ timeout: config.pageLoadTimeout,
48
62
  });
49
63
  if (!response?.ok()) {
50
64
  throw new Error(`Failed to load comic page: ${response?.status()}`);
51
65
  }
52
- const checkAdult = await page.$("#checkAdult");
53
- if (checkAdult) {
54
- await checkAdult.click();
55
- await page.waitForSelector(".chapter h4", { timeout: ADULT_SELECTOR_TIMEOUT });
56
- await page.waitForTimeout(ADULT_CLICK_SETTLE_DELAY);
57
- }
66
+ await handleAdultCheck(page, ".chapter h4");
58
67
  const html = await page.content();
59
68
  return parseComicHTML(html, url);
60
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"comic.js","sourceRoot":"","sources":["../../src/lib/comic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comic.js","sourceRoot":"","sources":["../../src/lib/comic.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,28 @@
1
- export declare const OUTPUT_BASE: string;
2
- export declare const IMAGE_CONCURRENCY: number;
3
- export declare const DOWNLOAD_DELAY: number;
4
- export declare const CHAPTER_DELAY_MIN: number;
5
- export declare const CHAPTER_DELAY_MAX: number;
6
- export declare const RETRY_COUNT: number;
7
- export declare const RETRY_BACKOFF_BASE: number;
8
- export declare const IMAGE_LOAD_DELAY: number;
9
- export declare const PAD_MIN_LENGTH = 3;
10
- export declare const PAGE_LOAD_TIMEOUT = 30000;
11
- export declare const CHAPTER_SELECTOR_TIMEOUT = 30000;
12
- export declare const ADULT_SELECTOR_TIMEOUT = 10000;
13
- export declare const ADULT_CLICK_SETTLE_DELAY = 300;
14
- export declare const NEXT_PAGE_TIMEOUT = 15000;
15
- export declare const USER_AGENTS: string[];
1
+ export interface Config {
2
+ outputBase: string;
3
+ imageConcurrency: number;
4
+ downloadDelay: number;
5
+ chapterDelayMin: number;
6
+ chapterDelayMax: number;
7
+ retryCount: number;
8
+ retryBackoffBase: number;
9
+ imageLoadDelay: number;
10
+ logLevel: string;
11
+ userAgents: string[];
12
+ padMinLength: number;
13
+ pageLoadTimeout: number;
14
+ chapterSelectorTimeout: number;
15
+ adultSelectorTimeout: number;
16
+ tabLoadTimeout: number;
17
+ adultClickSettleDelay: number;
18
+ nextPageTimeout: number;
19
+ viewportMinWidth: number;
20
+ viewportMaxWidth: number;
21
+ viewportMinHeight: number;
22
+ viewportMaxHeight: number;
23
+ }
24
+ export type UserConfigOverrides = Partial<Pick<Config, "outputBase" | "imageConcurrency" | "downloadDelay" | "chapterDelayMin" | "chapterDelayMax" | "retryCount" | "retryBackoffBase" | "imageLoadDelay" | "logLevel" | "userAgents">>;
25
+ export declare let config: Config;
26
+ export declare function initConfig(cliOverrides?: UserConfigOverrides): void;
16
27
  export declare function pickUserAgent(): string;
17
- export declare const VIEWPORT_MIN_WIDTH = 1200;
18
- export declare const VIEWPORT_MAX_WIDTH = 1600;
19
- export declare const VIEWPORT_MIN_HEIGHT = 800;
20
- export declare const VIEWPORT_MAX_HEIGHT = 1000;
21
28
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,WAAW,QAAwC,CAAC;AAEjE,eAAO,MAAM,iBAAiB,QAA6C,CAAC;AAE5E,eAAO,MAAM,cAAc,QAA6C,CAAC;AAEzE,eAAO,MAAM,iBAAiB,QAAgD,CAAC;AAC/E,eAAO,MAAM,iBAAiB,QAAiD,CAAC;AAEhF,eAAO,MAAM,WAAW,QAAuC,CAAC;AAChE,eAAO,MAAM,kBAAkB,QAAiD,CAAC;AACjF,eAAO,MAAM,gBAAgB,QAA8C,CAAC;AAC5E,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAC5C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAGvC,eAAO,MAAM,WAAW,UAWnB,CAAC;AAEN,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,mBAAmB,OAAO,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,IAAI,CACF,MAAM,EACJ,YAAY,GACZ,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,YAAY,GACZ,kBAAkB,GAClB,gBAAgB,GAChB,UAAU,GACV,YAAY,CACf,CACF,CAAC;AAoFF,eAAO,IAAI,MAAM,EAAE,MAAsB,CAAC;AAE1C,wBAAgB,UAAU,CAAC,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAGnE;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}