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
@@ -1,21 +1,22 @@
1
1
  import { writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { CHAPTER_SELECTOR_TIMEOUT, DOWNLOAD_DELAY, IMAGE_CONCURRENCY, IMAGE_LOAD_DELAY, NEXT_PAGE_TIMEOUT, PAD_MIN_LENGTH, PAGE_LOAD_TIMEOUT, pickUserAgent, RETRY_BACKOFF_BASE, RETRY_COUNT, VIEWPORT_MAX_HEIGHT, VIEWPORT_MAX_WIDTH, VIEWPORT_MIN_HEIGHT, VIEWPORT_MIN_WIDTH, } from "./config.js";
3
+ import { createBrowserContext, handleAdultCheck } from "./browser.js";
4
+ import { config } from "./config.js";
4
5
  import { rotateHost } from "./download.js";
5
6
  import { logger } from "./logger.js";
6
- import { ensureDir, randInt, sleep } from "./utils.js";
7
+ import { ensureDir, sleep } from "./utils.js";
7
8
  export function computePadLength(count) {
8
- return Math.max(PAD_MIN_LENGTH, String(count).length);
9
+ return Math.max(config.padMinLength, String(count).length);
9
10
  }
10
11
  export function extractExtension(url) {
11
12
  const match = url.match(/\.(\w{3,4})(?:\?|$)/);
12
13
  return match?.[1] ?? "webp";
13
14
  }
14
- export function buildFilePath(outputDir, index, padLen, ext) {
15
- const padNum = String(index + 1).padStart(padLen, "0");
16
- return join(outputDir, `${padNum}.${ext}`);
15
+ export function buildFilePath(opts) {
16
+ const padNum = String(opts.index + 1).padStart(opts.padLen, "0");
17
+ return join(opts.outputDir, `${padNum}.${opts.ext}`);
17
18
  }
18
- async function getPageCount(page) {
19
+ export async function getPageCount(page) {
19
20
  return page.evaluate(() => {
20
21
  const pageSpan = document.querySelector("#page");
21
22
  if (pageSpan?.parentElement) {
@@ -29,8 +30,25 @@ async function getPageCount(page) {
29
30
  return 0;
30
31
  });
31
32
  }
32
- async function collectImageUrls(page, pageCount) {
33
+ export async function getSubPageUrls(page) {
34
+ try {
35
+ await page.waitForSelector("#pagination a", { timeout: config.tabLoadTimeout });
36
+ return await page.evaluate(() => {
37
+ const links = document.querySelectorAll("#pagination a");
38
+ if (links.length <= 1)
39
+ return [];
40
+ return Array.from(links)
41
+ .map((a) => a.href)
42
+ .filter((href) => href.startsWith("http"));
43
+ });
44
+ }
45
+ catch {
46
+ return [];
47
+ }
48
+ }
49
+ export async function collectImageUrls(page, pageCount) {
33
50
  const urls = [];
51
+ const pagePath = page.url().split("#")[0];
34
52
  let currentUrl = await page.$eval("#mangaFile", (img) => img.src);
35
53
  urls.push(currentUrl);
36
54
  for (let i = 1; i < pageCount; i++) {
@@ -42,68 +60,104 @@ async function collectImageUrls(page, pageCount) {
42
60
  await page.waitForFunction((prev) => {
43
61
  const img = document.querySelector("#mangaFile");
44
62
  return img !== null && img.src !== "" && img.src !== prev;
45
- }, prevUrl, { timeout: NEXT_PAGE_TIMEOUT });
46
- await page.waitForTimeout(IMAGE_LOAD_DELAY);
63
+ }, prevUrl, { timeout: config.nextPageTimeout });
64
+ await page.waitForTimeout(config.imageLoadDelay);
65
+ if (page.url().split("#")[0] !== pagePath)
66
+ break;
47
67
  currentUrl = await page.$eval("#mangaFile", (img) => img.src);
48
68
  urls.push(currentUrl);
49
69
  }
50
70
  return urls;
51
71
  }
52
- async function downloadImage(dlPage, chapterUrl, url, outputDir, imageIndex, padLen) {
72
+ async function navigateToChapterPage(page, url) {
73
+ await page.goto(url, {
74
+ waitUntil: "domcontentloaded",
75
+ timeout: config.pageLoadTimeout,
76
+ });
77
+ await handleAdultCheck(page);
78
+ await page.waitForSelector("#mangaFile", { timeout: config.chapterSelectorTimeout });
79
+ }
80
+ export function validateImageResponse(response) {
81
+ if (response?.status() !== 200) {
82
+ throw new Error(`HTTP ${response?.status() ?? "no response"}`);
83
+ }
84
+ const contentType = response?.headers()?.["content-type"] ?? "";
85
+ if (contentType && !contentType.startsWith("image/")) {
86
+ throw new Error(`Unexpected content type: ${contentType}`);
87
+ }
88
+ }
89
+ async function fetchImageAsBase64(page) {
90
+ return page.evaluate(async () => {
91
+ const res = await fetch(window.location.href);
92
+ if (!res.ok)
93
+ throw new Error(`Fetch failed: ${res.status}`);
94
+ const buf = await res.arrayBuffer();
95
+ const bytes = new Uint8Array(buf);
96
+ let binary = "";
97
+ const step = 0x8000;
98
+ for (let j = 0; j < bytes.length; j += step) {
99
+ binary += String.fromCharCode.apply(null, Array.from(bytes.subarray(j, j + step)));
100
+ }
101
+ return btoa(binary);
102
+ });
103
+ }
104
+ async function downloadImage(opts) {
105
+ const { dlPage, chapterUrl, url, outputDir, imageIndex, padLen } = opts;
53
106
  const ext = extractExtension(url);
54
- const filePath = buildFilePath(outputDir, imageIndex, padLen, ext);
107
+ const filePath = buildFilePath({ outputDir, index: imageIndex, padLen, ext });
55
108
  let downloadUrl = url;
56
- for (let attempt = 0; attempt < RETRY_COUNT; attempt++) {
109
+ for (let attempt = 0; attempt < config.retryCount; attempt++) {
57
110
  try {
111
+ const started = Date.now();
58
112
  const response = await dlPage.goto(downloadUrl, {
59
113
  referer: chapterUrl,
60
114
  waitUntil: "load",
61
- timeout: PAGE_LOAD_TIMEOUT,
115
+ timeout: config.pageLoadTimeout,
62
116
  });
63
- if (response?.status() !== 200) {
64
- throw new Error(`HTTP ${response?.status() ?? "no response"}`);
65
- }
66
- const contentType = response?.headers()?.["content-type"] ?? "";
67
- if (contentType && !contentType.startsWith("image/")) {
68
- throw new Error(`Unexpected content type: ${contentType}`);
69
- }
70
- const base64 = await dlPage.evaluate(async () => {
71
- const res = await fetch(window.location.href);
72
- if (!res.ok)
73
- throw new Error(`Fetch failed: ${res.status}`);
74
- const buf = await res.arrayBuffer();
75
- const bytes = new Uint8Array(buf);
76
- let binary = "";
77
- const step = 0x8000;
78
- for (let j = 0; j < bytes.length; j += step) {
79
- binary += String.fromCharCode.apply(null, Array.from(bytes.subarray(j, j + step)));
80
- }
81
- return btoa(binary);
82
- });
83
- writeFileSync(filePath, Buffer.from(base64, "base64"));
84
- return true;
117
+ validateImageResponse(response);
118
+ const base64 = await fetchImageAsBase64(dlPage);
119
+ const buffer = Buffer.from(base64, "base64");
120
+ writeFileSync(filePath, buffer);
121
+ return { ok: true, bytes: buffer.length, durationMs: Date.now() - started };
85
122
  }
86
123
  catch {
87
- if (attempt < RETRY_COUNT - 1) {
124
+ if (attempt < config.retryCount - 1) {
88
125
  downloadUrl = rotateHost(downloadUrl);
89
- await sleep(RETRY_BACKOFF_BASE * (attempt + 1));
126
+ await sleep(config.retryBackoffBase * (attempt + 1));
90
127
  }
91
128
  }
92
129
  }
93
- logger.warn(`Failed to download after ${RETRY_COUNT} retries: ${url}`);
94
- return false;
130
+ logger.warn(`Failed to download after ${config.retryCount} retries: ${url}`);
131
+ return { ok: false, bytes: 0, durationMs: 0 };
95
132
  }
96
- async function downloadImages(context, chapterUrl, outputDir, urls, padLen) {
97
- const concurrency = Math.min(IMAGE_CONCURRENCY, urls.length);
133
+ async function downloadImages(opts) {
134
+ const { context, chapterUrl, outputDir, urls, padLen, tracker, onProgress } = opts;
135
+ const concurrency = Math.min(config.imageConcurrency, urls.length);
98
136
  const downloadPages = await Promise.all(Array.from({ length: concurrency }, () => context.newPage()));
99
137
  try {
100
138
  for (let i = 0; i < urls.length; i += concurrency) {
101
139
  const batch = urls.slice(i, i + concurrency);
102
- const results = await Promise.all(batch.map((url, idx) => downloadImage(downloadPages[idx], chapterUrl, url, outputDir, i + idx, padLen)));
103
- if (results.some((r) => !r))
140
+ const results = await Promise.all(batch.map((url, idx) => downloadImage({
141
+ dlPage: downloadPages[idx],
142
+ chapterUrl,
143
+ url,
144
+ outputDir,
145
+ imageIndex: i + idx,
146
+ padLen,
147
+ })));
148
+ let batchBytes = 0;
149
+ for (const r of results) {
150
+ if (r.ok) {
151
+ tracker.record(r.bytes, r.durationMs);
152
+ batchBytes += r.bytes;
153
+ }
154
+ }
155
+ if (results.some((r) => !r.ok))
104
156
  return;
105
- if (DOWNLOAD_DELAY > 0) {
106
- await sleep(Math.round(DOWNLOAD_DELAY * (0.5 + Math.random())));
157
+ onProgress?.(Math.min(i + batch.length, urls.length), batchBytes);
158
+ const isLast = i + concurrency >= urls.length;
159
+ if (!isLast && config.downloadDelay > 0) {
160
+ await sleep(Math.round(config.downloadDelay * (0.5 + Math.random())));
107
161
  }
108
162
  }
109
163
  }
@@ -111,28 +165,53 @@ async function downloadImages(context, chapterUrl, outputDir, urls, padLen) {
111
165
  await Promise.all(downloadPages.map((p) => p.close()));
112
166
  }
113
167
  }
114
- export async function extractChapterImages(chapterUrl, browser, outputDir) {
168
+ async function collectImageUrlsFromSubPages(page, subPageUrls) {
169
+ const allUrls = [];
170
+ for (let i = 0; i < subPageUrls.length; i++) {
171
+ if (i > 0) {
172
+ await navigateToChapterPage(page, subPageUrls[i]);
173
+ }
174
+ const tabPageCount = await getPageCount(page);
175
+ if (tabPageCount <= 0)
176
+ continue;
177
+ const tabUrls = await collectImageUrls(page, tabPageCount);
178
+ allUrls.push(...tabUrls);
179
+ }
180
+ return allUrls;
181
+ }
182
+ export async function extractChapterImages(opts) {
183
+ const { chapterUrl, browser, outputDir, tracker, onProgress } = opts;
115
184
  ensureDir(outputDir);
116
- const context = await browser.newContext({
117
- userAgent: pickUserAgent(),
118
- viewport: {
119
- width: randInt(VIEWPORT_MIN_WIDTH, VIEWPORT_MAX_WIDTH),
120
- height: randInt(VIEWPORT_MIN_HEIGHT, VIEWPORT_MAX_HEIGHT),
121
- },
122
- });
185
+ const context = await createBrowserContext(browser);
123
186
  const page = await context.newPage();
124
187
  try {
125
- await page.goto(chapterUrl, {
126
- waitUntil: "domcontentloaded",
127
- timeout: PAGE_LOAD_TIMEOUT,
128
- });
129
- await page.waitForSelector("#mangaFile", { timeout: CHAPTER_SELECTOR_TIMEOUT });
130
- const pageCount = await getPageCount(page);
131
- if (pageCount <= 0)
188
+ await navigateToChapterPage(page, chapterUrl);
189
+ const subPageUrls = await getSubPageUrls(page);
190
+ let urls;
191
+ if (subPageUrls.length > 0) {
192
+ urls = await collectImageUrlsFromSubPages(page, subPageUrls);
193
+ }
194
+ else {
195
+ const expectedCount = await getPageCount(page);
196
+ if (expectedCount <= 0)
197
+ return [];
198
+ onProgress?.(0, expectedCount, 0);
199
+ urls = await collectImageUrls(page, expectedCount);
200
+ }
201
+ if (urls.length === 0)
132
202
  return [];
133
- const urls = await collectImageUrls(page, pageCount);
134
203
  const padLen = computePadLength(urls.length);
135
- await downloadImages(context, chapterUrl, outputDir, urls, padLen);
204
+ const actualCount = urls.length;
205
+ onProgress?.(0, actualCount, 0);
206
+ await downloadImages({
207
+ context,
208
+ chapterUrl,
209
+ outputDir,
210
+ urls,
211
+ padLen,
212
+ tracker,
213
+ onProgress: (downloaded, bytes) => onProgress?.(downloaded, actualCount, bytes),
214
+ });
136
215
  return urls;
137
216
  }
138
217
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"chapter.js","sourceRoot":"","sources":["../../src/lib/chapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chapter.js","sourceRoot":"","sources":["../../src/lib/chapter.ts"],"names":[],"mappings":"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"}
package/dist/lib/cli.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import type { Section } from "./types.js";
2
+ export declare function applyFilters(sections: Section[], sectionFilter?: string, chapterFilter?: string): Section[];
1
3
  export declare const command: import("citty").CommandDef<{
2
4
  readonly url: {
3
5
  readonly type: "positional";
@@ -26,5 +28,23 @@ export declare const command: import("citty").CommandDef<{
26
28
  readonly alias: "d";
27
29
  readonly default: false;
28
30
  };
31
+ readonly output: {
32
+ readonly type: "string";
33
+ readonly description: "下载输出目录 / Output directory for downloads";
34
+ readonly alias: "o";
35
+ };
36
+ readonly concurrency: {
37
+ readonly type: "string";
38
+ readonly description: "章节内图片并发下载数 / Concurrent image downloads per chapter";
39
+ readonly alias: "C";
40
+ };
41
+ readonly retry: {
42
+ readonly type: "string";
43
+ readonly description: "图片下载重试次数 / Retry count per image";
44
+ };
45
+ readonly "log-level": {
46
+ readonly type: "string";
47
+ readonly description: "日志级别: debug | info | warn | error / Log level";
48
+ };
29
49
  }>;
30
50
  //# sourceMappingURL=cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/lib/cli.ts"],"names":[],"mappings":"AA2SA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDlB,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/lib/cli.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAa,OAAO,EAAE,MAAM,YAAY,CAAC;AAmBrD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,EAAE,EACnB,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,EAAE,CAgBX;AAuMD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmFlB,CAAC"}