@moontaiworks/fanbox-dl 1.5.5 → 1.6.0

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 (41) hide show
  1. package/dist/cjs/downloader/cli/options.d.ts +3 -1
  2. package/dist/cjs/downloader/cli/options.d.ts.map +1 -1
  3. package/dist/cjs/downloader/cli/options.js +7 -0
  4. package/dist/cjs/downloader/cli/options.js.map +1 -1
  5. package/dist/cjs/downloader/creator/sync.js +1 -1
  6. package/dist/cjs/downloader/creator/sync.js.map +1 -1
  7. package/dist/cjs/downloader/fs/path-manager.d.ts +10 -3
  8. package/dist/cjs/downloader/fs/path-manager.d.ts.map +1 -1
  9. package/dist/cjs/downloader/fs/path-manager.js +102 -12
  10. package/dist/cjs/downloader/fs/path-manager.js.map +1 -1
  11. package/dist/cjs/downloader/index.d.ts +1 -1
  12. package/dist/cjs/downloader/index.d.ts.map +1 -1
  13. package/dist/cjs/downloader/index.js +11 -5
  14. package/dist/cjs/downloader/index.js.map +1 -1
  15. package/dist/cjs/downloader/manifest/creator-manager.d.ts.map +1 -1
  16. package/dist/cjs/downloader/manifest/creator-manager.js +6 -1
  17. package/dist/cjs/downloader/manifest/creator-manager.js.map +1 -1
  18. package/dist/cjs/downloader/post/sync.d.ts.map +1 -1
  19. package/dist/cjs/downloader/post/sync.js +13 -3
  20. package/dist/cjs/downloader/post/sync.js.map +1 -1
  21. package/dist/esm/downloader/cli/options.d.ts +3 -1
  22. package/dist/esm/downloader/cli/options.d.ts.map +1 -1
  23. package/dist/esm/downloader/cli/options.js +7 -0
  24. package/dist/esm/downloader/cli/options.js.map +1 -1
  25. package/dist/esm/downloader/creator/sync.js +1 -1
  26. package/dist/esm/downloader/creator/sync.js.map +1 -1
  27. package/dist/esm/downloader/fs/path-manager.d.ts +10 -3
  28. package/dist/esm/downloader/fs/path-manager.d.ts.map +1 -1
  29. package/dist/esm/downloader/fs/path-manager.js +102 -12
  30. package/dist/esm/downloader/fs/path-manager.js.map +1 -1
  31. package/dist/esm/downloader/index.d.ts +1 -1
  32. package/dist/esm/downloader/index.d.ts.map +1 -1
  33. package/dist/esm/downloader/index.js +11 -5
  34. package/dist/esm/downloader/index.js.map +1 -1
  35. package/dist/esm/downloader/manifest/creator-manager.d.ts.map +1 -1
  36. package/dist/esm/downloader/manifest/creator-manager.js +6 -1
  37. package/dist/esm/downloader/manifest/creator-manager.js.map +1 -1
  38. package/dist/esm/downloader/post/sync.d.ts.map +1 -1
  39. package/dist/esm/downloader/post/sync.js +13 -3
  40. package/dist/esm/downloader/post/sync.js.map +1 -1
  41. package/package.json +1 -1
@@ -1,13 +1,15 @@
1
1
  import type { Logger } from "pino";
2
- export declare const DOWNLOAD_HELP = "Usage: fanbox-dl download [options]\n\nDownload FANBOX posts for selected creators.\n\nSelectors:\n --creator <id> Add a creator ID. Can be repeated.\n --following Add all followed creators.\n --supporting Add all supporting creators.\n --ignore-creator <id> Exclude a creator ID. Can be repeated.\n\nAuth:\n --cookie <value> Raw session ID or FANBOXSESSID=... cookie.\n --cookie-file <path> Read raw cookie or Netscape cookies.txt.\n --user-agent <value> Send the User-Agent from your logged-in browser.\n FANBOX_SESSION_ID Environment fallback.\n FANBOX_USER_AGENT User-Agent environment fallback.\n\nDownload:\n --output <path> Output directory. Default: fanbox-downloads.\n --flat-posts Store post files directly under each creator.\n\nRequests:\n --concurrency <n> Concurrent requests. Default: 10.\n --http2-session-multiplier <n>\n HTTP/2 sessions per origin multiplier based on concurrency. Default: 10.\n --request-interval-ms <n> Delay between request starts. Default: 500.\n --rate-limit-pause-ms <n> Force overwrite pause ms when 429.\n --max-retries <n> Retry attempts. Default: 3.\n\nOutput:\n --log-level <level> fatal|error|warn|info|debug|trace|silent. Default: info.\n --help Show this help.\n";
2
+ export declare const DOWNLOAD_HELP = "Usage: fanbox-dl download [options]\n\nDownload FANBOX posts for selected creators.\n\nSelectors:\n --creator <id> Add a creator ID. Can be repeated.\n --following Add all followed creators.\n --supporting Add all supporting creators.\n --ignore-creator <id> Exclude a creator ID. Can be repeated.\n\nAuth:\n --cookie <value> Raw session ID or FANBOXSESSID=... cookie.\n --cookie-file <path> Read raw cookie or Netscape cookies.txt.\n --user-agent <value> Send the User-Agent from your logged-in browser.\n FANBOX_SESSION_ID Environment fallback.\n FANBOX_USER_AGENT User-Agent environment fallback.\n\nDownload:\n --output <path> Output directory. Default: fanbox-downloads.\n --flat-posts Store post files directly under each creator.\n --max-filename-bytes <n> Max filename bytes including .part temp suffix. Default: 256.\n --flat-parent-min-bytes <n>\n Min optional parent/post name bytes to preserve in flat-posts filenames. Default: 35.\n\nRequests:\n --concurrency <n> Concurrent requests. Default: 10.\n --http2-session-multiplier <n>\n HTTP/2 sessions per origin multiplier based on concurrency. Default: 10.\n --request-interval-ms <n> Delay between request starts. Default: 500.\n --rate-limit-pause-ms <n> Force overwrite pause ms when 429.\n --max-retries <n> Retry attempts. Default: 3.\n\nOutput:\n --log-level <level> fatal|error|warn|info|debug|trace|silent. Default: info.\n --help Show this help.\n";
3
3
  export interface DownloadOptions {
4
4
  concurrency: number;
5
5
  cookie?: string;
6
6
  creatorIds: string[];
7
+ flatParentMinBytes: number;
7
8
  flatPosts: boolean;
8
9
  following: boolean;
9
10
  http2SessionMultiplier: number;
10
11
  ignoreCreatorIds: string[];
12
+ maxFilenameBytes: number;
11
13
  maxRetries: number;
12
14
  output: string;
13
15
  rateLimitPauseMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/downloader/cli/options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,eAAO,MAAM,aAAa,03CAgCzB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,wBAAwB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,oBAAoB,CAClC,EAAE,MAAM,EAAE,EAAE,wBAAwB,EACpC,IAAI,EAAE,MAAM,EAAE,GACb,eAAe,CAmCjB"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/downloader/cli/options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,eAAO,MAAM,aAAa,umDAmCzB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,wBAAwB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,oBAAoB,CAClC,EAAE,MAAM,EAAE,EAAE,wBAAwB,EACpC,IAAI,EAAE,MAAM,EAAE,GACb,eAAe,CA2CjB"}
@@ -26,6 +26,9 @@ Auth:
26
26
  Download:
27
27
  --output <path> Output directory. Default: fanbox-downloads.
28
28
  --flat-posts Store post files directly under each creator.
29
+ --max-filename-bytes <n> Max filename bytes including .part temp suffix. Default: 256.
30
+ --flat-parent-min-bytes <n>
31
+ Min optional parent/post name bytes to preserve in flat-posts filenames. Default: 35.
29
32
 
30
33
  Requests:
31
34
  --concurrency <n> Concurrent requests. Default: 10.
@@ -50,10 +53,12 @@ function parseDownloadOptions({ logger }, args) {
50
53
  concurrency: parsePositiveInteger("concurrency", values.concurrency),
51
54
  cookie,
52
55
  creatorIds,
56
+ flatParentMinBytes: parsePositiveInteger("flat-parent-min-bytes", values["flat-parent-min-bytes"]),
53
57
  flatPosts: values["flat-posts"],
54
58
  following: values.following,
55
59
  http2SessionMultiplier: parsePositiveInteger("http2-session-multiplier", values["http2-session-multiplier"]),
56
60
  ignoreCreatorIds: values["ignore-creator"] ?? [],
61
+ maxFilenameBytes: parsePositiveInteger("max-filename-bytes", values["max-filename-bytes"]),
57
62
  maxRetries: parseNonNegativeInteger("max-retries", values["max-retries"]),
58
63
  output: values.output,
59
64
  rateLimitPauseMs: values["rate-limit-pause-ms"]
@@ -92,11 +97,13 @@ function parseDownloadArgs(args) {
92
97
  "cookie-file": { type: "string" },
93
98
  creator: { multiple: true, type: "string" },
94
99
  "dry-run": { default: false, type: "boolean" },
100
+ "flat-parent-min-bytes": { default: "35", type: "string" },
95
101
  "flat-posts": { default: false, type: "boolean" },
96
102
  following: { default: false, type: "boolean" },
97
103
  "http2-session-multiplier": { default: "10", type: "string" },
98
104
  "ignore-creator": { multiple: true, type: "string" },
99
105
  "log-level": { default: "info", type: "string" },
106
+ "max-filename-bytes": { default: "256", type: "string" },
100
107
  "max-retries": { default: "3", type: "string" },
101
108
  output: { default: "fanbox-downloads", type: "string" },
102
109
  "rate-limit-pause-ms": { type: "string" },
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/downloader/cli/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/downloader/cli/options.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,7 @@ async function syncCreator({ client, headers, logger, manifest, pathManager, tra
51
51
  });
52
52
  processingPosts.push(syncPostPromise);
53
53
  }
54
- logger.info(`All ${processingPosts.length} posts of creator ${manifest.creatorId} have been initialized for download, waiting for all to complete...`);
54
+ logger.info(`All ${postSummaries.length} posts of creator ${manifest.creatorId} have been initialized for sync, waiting for all to complete...`);
55
55
  await Promise.all(processingPosts);
56
56
  }
57
57
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/creator/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/creator/sync.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,22 @@
1
1
  import type { Post } from "../../client/types.js";
2
+ export interface FilenameSegment {
3
+ context: string;
4
+ required: boolean;
5
+ }
2
6
  interface PathManagerOptions {
7
+ flatParentMinBytes?: number;
3
8
  flatPosts: boolean;
9
+ maxFilenameBytes?: number;
10
+ nameSegments?: FilenameSegment[];
4
11
  rootPath: string;
5
12
  }
6
13
  export declare class PathManager {
7
14
  #private;
8
15
  name: string;
9
16
  path: string;
10
- constructor({ flatPosts, rootPath }: PathManagerOptions);
11
- asset(index: string, name: string, extension: string): string;
12
- dir(name: string): PathManager;
17
+ constructor({ flatParentMinBytes, flatPosts, maxFilenameBytes, nameSegments, rootPath, }: PathManagerOptions);
18
+ asset(segments: FilenameSegment[], extension: string): string;
19
+ dir(segments: FilenameSegment[]): PathManager;
13
20
  file(name: string): string;
14
21
  post(post: Pick<Post, "id" | "publishedDatetime" | "title">): PathManager;
15
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"path-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,qBAAa,WAAW;;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAGD,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB;IAMvD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAYpD,GAAG,CAAC,IAAI,EAAE,MAAM;IAOhB,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,mBAAmB,GAAG,OAAO,CAAC;CAO5D"}
1
+ {"version":3,"file":"path-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,kBAAkB;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD,qBAAa,WAAW;;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAMD,EACV,kBAAwD,EACxD,SAAS,EACT,gBAA6C,EAC7C,YAAY,EACZ,QAAQ,GACT,EAAE,kBAAkB;IAWrB,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,MAAM;IA2BpD,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE;IAa/B,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,mBAAmB,GAAG,OAAO,CAAC;CAQ5D"}
@@ -10,30 +10,50 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _PathManager_flatPosts;
13
+ var _PathManager_flatParentMinBytes, _PathManager_flatPosts, _PathManager_maxFilenameBytes, _PathManager_nameSegments;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.PathManager = void 0;
16
16
  const node_path_1 = require("node:path");
17
17
  const INVALID_FILENAME_CHARS = /[<>:"/\\|?*\x00-\x1F]/g;
18
+ const DEFAULT_MAX_FILENAME_BYTES = 250;
19
+ const TEMP_FILE_SUFFIX = ".part";
20
+ const TRUNCATED_MARKER = "⋯";
18
21
  class PathManager {
19
- constructor({ flatPosts, rootPath }) {
22
+ constructor({ flatParentMinBytes = Buffer.byteLength(TRUNCATED_MARKER), flatPosts, maxFilenameBytes = DEFAULT_MAX_FILENAME_BYTES, nameSegments, rootPath, }) {
23
+ _PathManager_flatParentMinBytes.set(this, void 0);
20
24
  _PathManager_flatPosts.set(this, void 0);
25
+ _PathManager_maxFilenameBytes.set(this, void 0);
26
+ _PathManager_nameSegments.set(this, void 0);
21
27
  this.path = (0, node_path_1.resolve)(rootPath);
28
+ __classPrivateFieldSet(this, _PathManager_flatParentMinBytes, flatParentMinBytes, "f");
22
29
  __classPrivateFieldSet(this, _PathManager_flatPosts, flatPosts, "f");
30
+ __classPrivateFieldSet(this, _PathManager_maxFilenameBytes, maxFilenameBytes, "f");
23
31
  this.name = (0, node_path_1.basename)(this.path);
32
+ __classPrivateFieldSet(this, _PathManager_nameSegments, nameSegments ?? [
33
+ { context: this.name, required: true },
34
+ ], "f");
24
35
  }
25
- asset(index, name, extension) {
26
- const sanitizedName = name.replace(INVALID_FILENAME_CHARS, "-");
27
- const fileName = `${index}-${sanitizedName}.${extension}`;
36
+ asset(segments, extension) {
37
+ const sanitizedSegments = segments.map(({ context, required }) => ({
38
+ context: context.replace(INVALID_FILENAME_CHARS, "-"),
39
+ required,
40
+ }));
41
+ const maxFinalFilenameBytes = __classPrivateFieldGet(this, _PathManager_maxFilenameBytes, "f") - Buffer.byteLength(TEMP_FILE_SUFFIX);
28
42
  if (__classPrivateFieldGet(this, _PathManager_flatPosts, "f")) {
29
43
  const parent = (0, node_path_1.dirname)(this.path);
30
- return (0, node_path_1.join)(parent, `${this.name}.${fileName}`);
44
+ const fullname = formatFlatAssetFilename(__classPrivateFieldGet(this, _PathManager_nameSegments, "f"), sanitizedSegments, extension, maxFinalFilenameBytes, __classPrivateFieldGet(this, _PathManager_flatParentMinBytes, "f"));
45
+ return (0, node_path_1.join)(parent, fullname);
31
46
  }
32
- return (0, node_path_1.join)(this.path, fileName);
47
+ return (0, node_path_1.join)(this.path, formatAssetFilename(sanitizedSegments, extension, maxFinalFilenameBytes));
33
48
  }
34
- dir(name) {
49
+ dir(segments) {
50
+ const sanitizedSegments = sanitizeSegments(segments);
51
+ const name = formatName(sanitizedSegments, __classPrivateFieldGet(this, _PathManager_maxFilenameBytes, "f"));
35
52
  return new PathManager({
53
+ flatParentMinBytes: __classPrivateFieldGet(this, _PathManager_flatParentMinBytes, "f"),
36
54
  flatPosts: __classPrivateFieldGet(this, _PathManager_flatPosts, "f"),
55
+ maxFilenameBytes: __classPrivateFieldGet(this, _PathManager_maxFilenameBytes, "f"),
56
+ nameSegments: sanitizedSegments,
37
57
  rootPath: (0, node_path_1.join)(this.path, name),
38
58
  });
39
59
  }
@@ -42,11 +62,81 @@ class PathManager {
42
62
  }
43
63
  post(post) {
44
64
  const date = post.publishedDatetime.split("T")[0];
45
- const sanitizedTitle = post.title.replace(INVALID_FILENAME_CHARS, "-");
46
- const title = `${date}-${post.id}-${sanitizedTitle}`;
47
- return this.dir(title);
65
+ return this.dir([
66
+ { context: date, required: true },
67
+ { context: post.id, required: true },
68
+ { context: post.title, required: false },
69
+ ]);
48
70
  }
49
71
  }
50
72
  exports.PathManager = PathManager;
51
- _PathManager_flatPosts = new WeakMap();
73
+ _PathManager_flatParentMinBytes = new WeakMap(), _PathManager_flatPosts = new WeakMap(), _PathManager_maxFilenameBytes = new WeakMap(), _PathManager_nameSegments = new WeakMap();
74
+ function formatAssetFilename(segments, extension, maxBytes) {
75
+ const suffix = `.${extension}`;
76
+ return `${formatSegments(segments, maxBytes - Buffer.byteLength(suffix)).join("-")}${suffix}`;
77
+ }
78
+ function formatFlatAssetFilename(postNameSegments, segments, extension, maxBytes, flatParentMinBytes) {
79
+ const fileName = formatAssetFilename(segments, extension, maxBytes);
80
+ const postName = formatName(postNameSegments, maxBytes);
81
+ const candidate = `${postName}.${fileName}`;
82
+ if (Buffer.byteLength(candidate) <= maxBytes)
83
+ return candidate;
84
+ const separatorBytes = Buffer.byteLength(".");
85
+ const minimumPostNameBytes = Math.min(Buffer.byteLength(postName), minimumSegmentsBytes(postNameSegments, flatParentMinBytes));
86
+ const fileNameBytes = maxBytes - separatorBytes - minimumPostNameBytes;
87
+ const truncatedFileName = formatAssetFilename(segments, extension, fileNameBytes);
88
+ const postNameBytes = maxBytes - separatorBytes - Buffer.byteLength(truncatedFileName);
89
+ return `${formatName(postNameSegments, postNameBytes)}.${truncatedFileName}`;
90
+ }
91
+ function formatName(segments, maxBytes) {
92
+ return formatSegments(segments, maxBytes).join("-");
93
+ }
94
+ function formatSegments(segments, maxBytes) {
95
+ const separator = "-";
96
+ const separatorBytes = Math.max(segments.length - 1, 0) * Buffer.byteLength(separator);
97
+ const requiredBytes = segments.reduce((total, segment) => segment.required ? total + Buffer.byteLength(segment.context) : total, separatorBytes);
98
+ let optionalBytes = maxBytes - requiredBytes;
99
+ return segments.map((segment) => {
100
+ if (segment.required)
101
+ return segment.context;
102
+ const formatted = truncateUtf8(segment.context, optionalBytes);
103
+ optionalBytes -= Buffer.byteLength(formatted);
104
+ return formatted;
105
+ });
106
+ }
107
+ function minimumSegmentsBytes(segments, optionalSegmentBytes) {
108
+ if (!segments.length)
109
+ return 0;
110
+ const separatorBytes = Math.max(segments.length - 1, 0) * Buffer.byteLength("-");
111
+ const optionalBytes = segments.reduce((total, segment) => segment.required ? total : total + Buffer.byteLength(segment.context), 0);
112
+ return segments.reduce((total, segment) => segment.required ? total + Buffer.byteLength(segment.context) : total, separatorBytes + Math.min(optionalBytes, optionalSegmentBytes));
113
+ }
114
+ function sanitizeSegments(segments) {
115
+ return segments.map(({ context, required }) => ({
116
+ context: context.replace(INVALID_FILENAME_CHARS, "-"),
117
+ required,
118
+ }));
119
+ }
120
+ function truncateUtf8(value, maxBytes) {
121
+ if (maxBytes <= 0)
122
+ return "";
123
+ if (Buffer.byteLength(value) <= maxBytes)
124
+ return value;
125
+ let result = "";
126
+ let bytes = 0;
127
+ const markerBytes = Buffer.byteLength(TRUNCATED_MARKER);
128
+ const contentBytes = maxBytes - markerBytes;
129
+ if (contentBytes < 0)
130
+ return "";
131
+ if (contentBytes === 0)
132
+ return TRUNCATED_MARKER;
133
+ for (const char of value) {
134
+ const charBytes = Buffer.byteLength(char);
135
+ if (bytes + charBytes > contentBytes)
136
+ break;
137
+ result += char;
138
+ bytes += charBytes;
139
+ }
140
+ return `${result}${TRUNCATED_MARKER}`;
141
+ }
52
142
  //# sourceMappingURL=path-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"path-manager.js","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA6D;AAU7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAExD,MAAa,WAAW;IAKtB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAsB;QAFvD,yCAAoB;QAGlB,IAAI,CAAC,IAAI,GAAG,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC;QAC9B,uBAAA,IAAI,0BAAc,SAAS,MAAA,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAa,EAAE,IAAY,EAAE,SAAiB;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,aAAa,IAAI,SAAS,EAAE,CAAC;QAE1D,IAAI,uBAAA,IAAI,8BAAW,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,IAAA,gBAAI,EAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,IAAA,gBAAI,EAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,WAAW,CAAC;YACrB,SAAS,EAAE,uBAAA,IAAI,8BAAW;YAC1B,QAAQ,EAAE,IAAA,gBAAI,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAA,gBAAI,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,IAAsD;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,cAAc,EAAE,CAAC;QAErD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;CACF;AAzCD,kCAyCC"}
1
+ {"version":3,"file":"path-manager.js","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,5 @@ export interface RunCliDependencies {
5
5
  logger: Logger;
6
6
  transport?: HttpTransport;
7
7
  }
8
- export declare function download({ logger, transport: customTransport }: RunCliDependencies, options: DownloadOptions): Promise<boolean>;
8
+ export declare function download({ logger, transport: customTransport }: RunCliDependencies, options: DownloadOptions): Promise<string[]>;
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/downloader/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOxD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,wBAAsB,QAAQ,CAC5B,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,kBAAkB,EAC1D,OAAO,EAAE,eAAe,oBAkEzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/downloader/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOxD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,wBAAsB,QAAQ,CAC5B,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,kBAAkB,EAC1D,OAAO,EAAE,eAAe,qBA2EzB"}
@@ -24,11 +24,13 @@ async function download({ logger, transport: customTransport }, options) {
24
24
  transport: customTransport,
25
25
  });
26
26
  const pathManager = new path_manager_js_1.PathManager({
27
+ flatParentMinBytes: options.flatParentMinBytes,
27
28
  flatPosts: options.flatPosts,
29
+ maxFilenameBytes: options.maxFilenameBytes,
28
30
  rootPath: options.output,
29
31
  });
30
32
  const client = new client_js_1.FanboxClient({ headers, transport });
31
- let failed = false;
33
+ const failed = [];
32
34
  const creatorIds = await (0, resolver_js_1.resolveCreatorIds)({ client, logger }, options);
33
35
  const creatorManifestManager = new creator_manager_js_1.CreatorManifestManager({
34
36
  logger,
@@ -38,7 +40,9 @@ async function download({ logger, transport: customTransport }, options) {
38
40
  for (const creatorId of creatorIds) {
39
41
  logger.debug(`Initializing download for creator ${creatorId}`);
40
42
  const creatorManifest = await creatorManifestManager.load(creatorId);
41
- const creatorPathManager = pathManager.dir(creatorId);
43
+ const creatorPathManager = pathManager.dir([
44
+ { context: creatorId, required: true },
45
+ ]);
42
46
  const syncCreatorPromise = (0, sync_js_1.syncCreator)({
43
47
  client,
44
48
  headers,
@@ -48,15 +52,17 @@ async function download({ logger, transport: customTransport }, options) {
48
52
  transport,
49
53
  }).catch(() => {
50
54
  logger.error(`Error occurred while syncing creator ${creatorId}, skipping.`);
51
- failed = true;
55
+ failed.push(creatorId);
52
56
  });
53
57
  processingCreators.push(syncCreatorPromise);
54
58
  const success = !hasFailures(creatorManifest);
55
- failed || (failed = !success);
59
+ if (!success)
60
+ failed.push(creatorId);
56
61
  }
57
- logger.info(`All ${processingCreators.length} creators have been initialized for download, waiting for all to complete...`);
62
+ logger.info(`All ${creatorIds.length} creators have been initialized for download, waiting for all to complete...`);
58
63
  await Promise.all(processingCreators);
59
64
  await creatorManifestManager.saveAll();
65
+ logger.info({ failed }, `Download completed for ${creatorIds.length} creators, with ${failed.length} failures.`);
60
66
  return failed;
61
67
  }
62
68
  function hasFailures(manifest) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/downloader/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/downloader/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"creator-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,sBAAsB;;gBAKrB,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,0BAA0B;IAKzD,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IASjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAa/B"}
1
+ {"version":3,"file":"creator-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,sBAAsB;;gBAKrB,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,0BAA0B;IAKzD,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IASjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB/B"}
@@ -35,7 +35,12 @@ class CreatorManifestManager {
35
35
  }
36
36
  exports.CreatorManifestManager = CreatorManifestManager;
37
37
  _CreatorManifestManager_logger = new WeakMap(), _CreatorManifestManager_manifests = new WeakMap(), _CreatorManifestManager_pathManager = new WeakMap(), _CreatorManifestManager_instances = new WeakSet(), _CreatorManifestManager_createManifest = function _CreatorManifestManager_createManifest(creatorId) {
38
- const manifest = new creator_js_1.CreatorManifest({ logger: __classPrivateFieldGet(this, _CreatorManifestManager_logger, "f"), pathManager: __classPrivateFieldGet(this, _CreatorManifestManager_pathManager, "f").dir(creatorId) }, creatorId);
38
+ const manifest = new creator_js_1.CreatorManifest({
39
+ logger: __classPrivateFieldGet(this, _CreatorManifestManager_logger, "f"),
40
+ pathManager: __classPrivateFieldGet(this, _CreatorManifestManager_pathManager, "f").dir([
41
+ { context: creatorId, required: true },
42
+ ]),
43
+ }, creatorId);
39
44
  __classPrivateFieldGet(this, _CreatorManifestManager_manifests, "f").set(creatorId, manifest);
40
45
  return manifest;
41
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"creator-manager.js","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,6CAA+C;AAO/C,MAAa,sBAAsB;IAKjC,YAAY,EAAE,MAAM,EAAE,WAAW,EAA8B;;QAJ/D,iDAAgB;QAChB,4CAAa,IAAI,GAAG,EAA2B,EAAC;QAChD,sDAA0B;QAGxB,uBAAA,IAAI,kCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,uCAAgB,WAAW,MAAA,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,MAAM,QAAQ,GACZ,uBAAA,IAAI,yCAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,uBAAA,IAAI,iFAAgB,MAApB,IAAI,EAAiB,SAAS,CAAC,CAAC;QAEpE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,yCAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CAUF;AAhCD,wDAgCC;oSARiB,SAAiB;IAC/B,MAAM,QAAQ,GAAG,IAAI,4BAAe,CAClC,EAAE,MAAM,EAAE,uBAAA,IAAI,sCAAQ,EAAE,WAAW,EAAE,uBAAA,IAAI,2CAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EACvE,SAAS,CACV,CAAC;IACF,uBAAA,IAAI,yCAAW,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"creator-manager.js","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,6CAA+C;AAO/C,MAAa,sBAAsB;IAKjC,YAAY,EAAE,MAAM,EAAE,WAAW,EAA8B;;QAJ/D,iDAAgB;QAChB,4CAAa,IAAI,GAAG,EAA2B,EAAC;QAChD,sDAA0B;QAGxB,uBAAA,IAAI,kCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,uCAAgB,WAAW,MAAA,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,MAAM,QAAQ,GACZ,uBAAA,IAAI,yCAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,uBAAA,IAAI,iFAAgB,MAApB,IAAI,EAAiB,SAAS,CAAC,CAAC;QAEpE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,yCAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CAeF;AArCD,wDAqCC;oSAbiB,SAAiB;IAC/B,MAAM,QAAQ,GAAG,IAAI,4BAAe,CAClC;QACE,MAAM,EAAE,uBAAA,IAAI,sCAAQ;QACpB,WAAW,EAAE,uBAAA,IAAI,2CAAa,CAAC,GAAG,CAAC;YACjC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;SACvC,CAAC;KACH,EACD,SAAS,CACV,CAAC;IACF,uBAAA,IAAI,yCAAW,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAEV,eAAe,EACf,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAShC,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,EAC1C,WAAW,EAAE,WAAW,GACvB,gBAAgB,CA6BlB;AAED,wBAAsB,QAAQ,CAC5B,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,YAAY,EACzD,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,gBAAgB,CAAC,CAgI3B"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAEV,eAAe,EACf,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAShC,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,EAC1C,WAAW,EAAE,WAAW,GACvB,gBAAgB,CA6BlB;AAED,wBAAsB,QAAQ,CAC5B,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,YAAY,EACzD,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,gBAAgB,CAAC,CA2I3B"}
@@ -49,7 +49,10 @@ async function syncPost({ headers, logger, pathManager, transport }, post) {
49
49
  const results = await Promise.allSettled(contents.map(async (content, index) => {
50
50
  const indexPadded = index.toString().padStart(totalDigits, "0");
51
51
  if (content instanceof content_js_1.ImageContent) {
52
- const destination = pathManager.asset(indexPadded, content.id, content.extension);
52
+ const destination = pathManager.asset([
53
+ { context: indexPadded, required: true },
54
+ { context: content.id, required: true },
55
+ ], content.extension);
53
56
  const { bytes, sha256 } = await download({
54
57
  destination,
55
58
  fallbackDateTime: post.updatedDatetime,
@@ -73,7 +76,11 @@ async function syncPost({ headers, logger, pathManager, transport }, post) {
73
76
  return (0, asset_js_1.formatImageAsset)({ assetPath: destination });
74
77
  }
75
78
  if (content instanceof content_js_1.FileContent) {
76
- const destination = pathManager.asset(indexPadded, `${content.name}-${content.id}`, content.extension);
79
+ const destination = pathManager.asset([
80
+ { context: indexPadded, required: true },
81
+ { context: content.name, required: false },
82
+ { context: content.id, required: true },
83
+ ], content.extension);
77
84
  const { bytes, sha256 } = await download({
78
85
  destination,
79
86
  fallbackDateTime: post.updatedDatetime,
@@ -109,7 +116,10 @@ async function syncPost({ headers, logger, pathManager, transport }, post) {
109
116
  const err = String(result.reason);
110
117
  return `<!-- Error occurred while processing content: ${err} -->`;
111
118
  });
112
- await (0, promises_1.writeFile)(pathManager.asset("0".padStart(totalDigits, "0"), "content", "md"), markdownContent.join("\n\n"));
119
+ await (0, promises_1.writeFile)(pathManager.asset([
120
+ { context: "0".padStart(totalDigits, "0"), required: true },
121
+ { context: "content", required: true },
122
+ ], "md"), markdownContent.join("\n\n"));
113
123
  return {
114
124
  assets: assetManifestData,
115
125
  id: post.id,
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,15 @@
1
1
  import type { Logger } from "pino";
2
- export declare const DOWNLOAD_HELP = "Usage: fanbox-dl download [options]\n\nDownload FANBOX posts for selected creators.\n\nSelectors:\n --creator <id> Add a creator ID. Can be repeated.\n --following Add all followed creators.\n --supporting Add all supporting creators.\n --ignore-creator <id> Exclude a creator ID. Can be repeated.\n\nAuth:\n --cookie <value> Raw session ID or FANBOXSESSID=... cookie.\n --cookie-file <path> Read raw cookie or Netscape cookies.txt.\n --user-agent <value> Send the User-Agent from your logged-in browser.\n FANBOX_SESSION_ID Environment fallback.\n FANBOX_USER_AGENT User-Agent environment fallback.\n\nDownload:\n --output <path> Output directory. Default: fanbox-downloads.\n --flat-posts Store post files directly under each creator.\n\nRequests:\n --concurrency <n> Concurrent requests. Default: 10.\n --http2-session-multiplier <n>\n HTTP/2 sessions per origin multiplier based on concurrency. Default: 10.\n --request-interval-ms <n> Delay between request starts. Default: 500.\n --rate-limit-pause-ms <n> Force overwrite pause ms when 429.\n --max-retries <n> Retry attempts. Default: 3.\n\nOutput:\n --log-level <level> fatal|error|warn|info|debug|trace|silent. Default: info.\n --help Show this help.\n";
2
+ export declare const DOWNLOAD_HELP = "Usage: fanbox-dl download [options]\n\nDownload FANBOX posts for selected creators.\n\nSelectors:\n --creator <id> Add a creator ID. Can be repeated.\n --following Add all followed creators.\n --supporting Add all supporting creators.\n --ignore-creator <id> Exclude a creator ID. Can be repeated.\n\nAuth:\n --cookie <value> Raw session ID or FANBOXSESSID=... cookie.\n --cookie-file <path> Read raw cookie or Netscape cookies.txt.\n --user-agent <value> Send the User-Agent from your logged-in browser.\n FANBOX_SESSION_ID Environment fallback.\n FANBOX_USER_AGENT User-Agent environment fallback.\n\nDownload:\n --output <path> Output directory. Default: fanbox-downloads.\n --flat-posts Store post files directly under each creator.\n --max-filename-bytes <n> Max filename bytes including .part temp suffix. Default: 256.\n --flat-parent-min-bytes <n>\n Min optional parent/post name bytes to preserve in flat-posts filenames. Default: 35.\n\nRequests:\n --concurrency <n> Concurrent requests. Default: 10.\n --http2-session-multiplier <n>\n HTTP/2 sessions per origin multiplier based on concurrency. Default: 10.\n --request-interval-ms <n> Delay between request starts. Default: 500.\n --rate-limit-pause-ms <n> Force overwrite pause ms when 429.\n --max-retries <n> Retry attempts. Default: 3.\n\nOutput:\n --log-level <level> fatal|error|warn|info|debug|trace|silent. Default: info.\n --help Show this help.\n";
3
3
  export interface DownloadOptions {
4
4
  concurrency: number;
5
5
  cookie?: string;
6
6
  creatorIds: string[];
7
+ flatParentMinBytes: number;
7
8
  flatPosts: boolean;
8
9
  following: boolean;
9
10
  http2SessionMultiplier: number;
10
11
  ignoreCreatorIds: string[];
12
+ maxFilenameBytes: number;
11
13
  maxRetries: number;
12
14
  output: string;
13
15
  rateLimitPauseMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/downloader/cli/options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,eAAO,MAAM,aAAa,03CAgCzB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,wBAAwB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,oBAAoB,CAClC,EAAE,MAAM,EAAE,EAAE,wBAAwB,EACpC,IAAI,EAAE,MAAM,EAAE,GACb,eAAe,CAmCjB"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/downloader/cli/options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,eAAO,MAAM,aAAa,umDAmCzB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,wBAAwB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,oBAAoB,CAClC,EAAE,MAAM,EAAE,EAAE,wBAAwB,EACpC,IAAI,EAAE,MAAM,EAAE,GACb,eAAe,CA2CjB"}
@@ -22,6 +22,9 @@ Auth:
22
22
  Download:
23
23
  --output <path> Output directory. Default: fanbox-downloads.
24
24
  --flat-posts Store post files directly under each creator.
25
+ --max-filename-bytes <n> Max filename bytes including .part temp suffix. Default: 256.
26
+ --flat-parent-min-bytes <n>
27
+ Min optional parent/post name bytes to preserve in flat-posts filenames. Default: 35.
25
28
 
26
29
  Requests:
27
30
  --concurrency <n> Concurrent requests. Default: 10.
@@ -46,10 +49,12 @@ export function parseDownloadOptions({ logger }, args) {
46
49
  concurrency: parsePositiveInteger("concurrency", values.concurrency),
47
50
  cookie,
48
51
  creatorIds,
52
+ flatParentMinBytes: parsePositiveInteger("flat-parent-min-bytes", values["flat-parent-min-bytes"]),
49
53
  flatPosts: values["flat-posts"],
50
54
  following: values.following,
51
55
  http2SessionMultiplier: parsePositiveInteger("http2-session-multiplier", values["http2-session-multiplier"]),
52
56
  ignoreCreatorIds: values["ignore-creator"] ?? [],
57
+ maxFilenameBytes: parsePositiveInteger("max-filename-bytes", values["max-filename-bytes"]),
53
58
  maxRetries: parseNonNegativeInteger("max-retries", values["max-retries"]),
54
59
  output: values.output,
55
60
  rateLimitPauseMs: values["rate-limit-pause-ms"]
@@ -88,11 +93,13 @@ function parseDownloadArgs(args) {
88
93
  "cookie-file": { type: "string" },
89
94
  creator: { multiple: true, type: "string" },
90
95
  "dry-run": { default: false, type: "boolean" },
96
+ "flat-parent-min-bytes": { default: "35", type: "string" },
91
97
  "flat-posts": { default: false, type: "boolean" },
92
98
  following: { default: false, type: "boolean" },
93
99
  "http2-session-multiplier": { default: "10", type: "string" },
94
100
  "ignore-creator": { multiple: true, type: "string" },
95
101
  "log-level": { default: "info", type: "string" },
102
+ "max-filename-bytes": { default: "256", type: "string" },
96
103
  "max-retries": { default: "3", type: "string" },
97
104
  output: { default: "fanbox-downloads", type: "string" },
98
105
  "rate-limit-pause-ms": { type: "string" },
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/downloader/cli/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/downloader/cli/options.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,7 @@ export async function syncCreator({ client, headers, logger, manifest, pathManag
48
48
  });
49
49
  processingPosts.push(syncPostPromise);
50
50
  }
51
- logger.info(`All ${processingPosts.length} posts of creator ${manifest.creatorId} have been initialized for download, waiting for all to complete...`);
51
+ logger.info(`All ${postSummaries.length} posts of creator ${manifest.creatorId} have been initialized for sync, waiting for all to complete...`);
52
52
  await Promise.all(processingPosts);
53
53
  }
54
54
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/creator/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/creator/sync.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,22 @@
1
1
  import type { Post } from "../../client/types.js";
2
+ export interface FilenameSegment {
3
+ context: string;
4
+ required: boolean;
5
+ }
2
6
  interface PathManagerOptions {
7
+ flatParentMinBytes?: number;
3
8
  flatPosts: boolean;
9
+ maxFilenameBytes?: number;
10
+ nameSegments?: FilenameSegment[];
4
11
  rootPath: string;
5
12
  }
6
13
  export declare class PathManager {
7
14
  #private;
8
15
  name: string;
9
16
  path: string;
10
- constructor({ flatPosts, rootPath }: PathManagerOptions);
11
- asset(index: string, name: string, extension: string): string;
12
- dir(name: string): PathManager;
17
+ constructor({ flatParentMinBytes, flatPosts, maxFilenameBytes, nameSegments, rootPath, }: PathManagerOptions);
18
+ asset(segments: FilenameSegment[], extension: string): string;
19
+ dir(segments: FilenameSegment[]): PathManager;
13
20
  file(name: string): string;
14
21
  post(post: Pick<Post, "id" | "publishedDatetime" | "title">): PathManager;
15
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"path-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,qBAAa,WAAW;;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAGD,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB;IAMvD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAYpD,GAAG,CAAC,IAAI,EAAE,MAAM;IAOhB,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,mBAAmB,GAAG,OAAO,CAAC;CAO5D"}
1
+ {"version":3,"file":"path-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,kBAAkB;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD,qBAAa,WAAW;;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAMD,EACV,kBAAwD,EACxD,SAAS,EACT,gBAA6C,EAC7C,YAAY,EACZ,QAAQ,GACT,EAAE,kBAAkB;IAWrB,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,MAAM;IA2BpD,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE;IAa/B,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,mBAAmB,GAAG,OAAO,CAAC;CAQ5D"}
@@ -9,28 +9,48 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _PathManager_flatPosts;
12
+ var _PathManager_flatParentMinBytes, _PathManager_flatPosts, _PathManager_maxFilenameBytes, _PathManager_nameSegments;
13
13
  import { basename, dirname, join, resolve } from "node:path";
14
14
  const INVALID_FILENAME_CHARS = /[<>:"/\\|?*\x00-\x1F]/g;
15
+ const DEFAULT_MAX_FILENAME_BYTES = 250;
16
+ const TEMP_FILE_SUFFIX = ".part";
17
+ const TRUNCATED_MARKER = "⋯";
15
18
  export class PathManager {
16
- constructor({ flatPosts, rootPath }) {
19
+ constructor({ flatParentMinBytes = Buffer.byteLength(TRUNCATED_MARKER), flatPosts, maxFilenameBytes = DEFAULT_MAX_FILENAME_BYTES, nameSegments, rootPath, }) {
20
+ _PathManager_flatParentMinBytes.set(this, void 0);
17
21
  _PathManager_flatPosts.set(this, void 0);
22
+ _PathManager_maxFilenameBytes.set(this, void 0);
23
+ _PathManager_nameSegments.set(this, void 0);
18
24
  this.path = resolve(rootPath);
25
+ __classPrivateFieldSet(this, _PathManager_flatParentMinBytes, flatParentMinBytes, "f");
19
26
  __classPrivateFieldSet(this, _PathManager_flatPosts, flatPosts, "f");
27
+ __classPrivateFieldSet(this, _PathManager_maxFilenameBytes, maxFilenameBytes, "f");
20
28
  this.name = basename(this.path);
29
+ __classPrivateFieldSet(this, _PathManager_nameSegments, nameSegments ?? [
30
+ { context: this.name, required: true },
31
+ ], "f");
21
32
  }
22
- asset(index, name, extension) {
23
- const sanitizedName = name.replace(INVALID_FILENAME_CHARS, "-");
24
- const fileName = `${index}-${sanitizedName}.${extension}`;
33
+ asset(segments, extension) {
34
+ const sanitizedSegments = segments.map(({ context, required }) => ({
35
+ context: context.replace(INVALID_FILENAME_CHARS, "-"),
36
+ required,
37
+ }));
38
+ const maxFinalFilenameBytes = __classPrivateFieldGet(this, _PathManager_maxFilenameBytes, "f") - Buffer.byteLength(TEMP_FILE_SUFFIX);
25
39
  if (__classPrivateFieldGet(this, _PathManager_flatPosts, "f")) {
26
40
  const parent = dirname(this.path);
27
- return join(parent, `${this.name}.${fileName}`);
41
+ const fullname = formatFlatAssetFilename(__classPrivateFieldGet(this, _PathManager_nameSegments, "f"), sanitizedSegments, extension, maxFinalFilenameBytes, __classPrivateFieldGet(this, _PathManager_flatParentMinBytes, "f"));
42
+ return join(parent, fullname);
28
43
  }
29
- return join(this.path, fileName);
44
+ return join(this.path, formatAssetFilename(sanitizedSegments, extension, maxFinalFilenameBytes));
30
45
  }
31
- dir(name) {
46
+ dir(segments) {
47
+ const sanitizedSegments = sanitizeSegments(segments);
48
+ const name = formatName(sanitizedSegments, __classPrivateFieldGet(this, _PathManager_maxFilenameBytes, "f"));
32
49
  return new PathManager({
50
+ flatParentMinBytes: __classPrivateFieldGet(this, _PathManager_flatParentMinBytes, "f"),
33
51
  flatPosts: __classPrivateFieldGet(this, _PathManager_flatPosts, "f"),
52
+ maxFilenameBytes: __classPrivateFieldGet(this, _PathManager_maxFilenameBytes, "f"),
53
+ nameSegments: sanitizedSegments,
34
54
  rootPath: join(this.path, name),
35
55
  });
36
56
  }
@@ -39,10 +59,80 @@ export class PathManager {
39
59
  }
40
60
  post(post) {
41
61
  const date = post.publishedDatetime.split("T")[0];
42
- const sanitizedTitle = post.title.replace(INVALID_FILENAME_CHARS, "-");
43
- const title = `${date}-${post.id}-${sanitizedTitle}`;
44
- return this.dir(title);
62
+ return this.dir([
63
+ { context: date, required: true },
64
+ { context: post.id, required: true },
65
+ { context: post.title, required: false },
66
+ ]);
45
67
  }
46
68
  }
47
- _PathManager_flatPosts = new WeakMap();
69
+ _PathManager_flatParentMinBytes = new WeakMap(), _PathManager_flatPosts = new WeakMap(), _PathManager_maxFilenameBytes = new WeakMap(), _PathManager_nameSegments = new WeakMap();
70
+ function formatAssetFilename(segments, extension, maxBytes) {
71
+ const suffix = `.${extension}`;
72
+ return `${formatSegments(segments, maxBytes - Buffer.byteLength(suffix)).join("-")}${suffix}`;
73
+ }
74
+ function formatFlatAssetFilename(postNameSegments, segments, extension, maxBytes, flatParentMinBytes) {
75
+ const fileName = formatAssetFilename(segments, extension, maxBytes);
76
+ const postName = formatName(postNameSegments, maxBytes);
77
+ const candidate = `${postName}.${fileName}`;
78
+ if (Buffer.byteLength(candidate) <= maxBytes)
79
+ return candidate;
80
+ const separatorBytes = Buffer.byteLength(".");
81
+ const minimumPostNameBytes = Math.min(Buffer.byteLength(postName), minimumSegmentsBytes(postNameSegments, flatParentMinBytes));
82
+ const fileNameBytes = maxBytes - separatorBytes - minimumPostNameBytes;
83
+ const truncatedFileName = formatAssetFilename(segments, extension, fileNameBytes);
84
+ const postNameBytes = maxBytes - separatorBytes - Buffer.byteLength(truncatedFileName);
85
+ return `${formatName(postNameSegments, postNameBytes)}.${truncatedFileName}`;
86
+ }
87
+ function formatName(segments, maxBytes) {
88
+ return formatSegments(segments, maxBytes).join("-");
89
+ }
90
+ function formatSegments(segments, maxBytes) {
91
+ const separator = "-";
92
+ const separatorBytes = Math.max(segments.length - 1, 0) * Buffer.byteLength(separator);
93
+ const requiredBytes = segments.reduce((total, segment) => segment.required ? total + Buffer.byteLength(segment.context) : total, separatorBytes);
94
+ let optionalBytes = maxBytes - requiredBytes;
95
+ return segments.map((segment) => {
96
+ if (segment.required)
97
+ return segment.context;
98
+ const formatted = truncateUtf8(segment.context, optionalBytes);
99
+ optionalBytes -= Buffer.byteLength(formatted);
100
+ return formatted;
101
+ });
102
+ }
103
+ function minimumSegmentsBytes(segments, optionalSegmentBytes) {
104
+ if (!segments.length)
105
+ return 0;
106
+ const separatorBytes = Math.max(segments.length - 1, 0) * Buffer.byteLength("-");
107
+ const optionalBytes = segments.reduce((total, segment) => segment.required ? total : total + Buffer.byteLength(segment.context), 0);
108
+ return segments.reduce((total, segment) => segment.required ? total + Buffer.byteLength(segment.context) : total, separatorBytes + Math.min(optionalBytes, optionalSegmentBytes));
109
+ }
110
+ function sanitizeSegments(segments) {
111
+ return segments.map(({ context, required }) => ({
112
+ context: context.replace(INVALID_FILENAME_CHARS, "-"),
113
+ required,
114
+ }));
115
+ }
116
+ function truncateUtf8(value, maxBytes) {
117
+ if (maxBytes <= 0)
118
+ return "";
119
+ if (Buffer.byteLength(value) <= maxBytes)
120
+ return value;
121
+ let result = "";
122
+ let bytes = 0;
123
+ const markerBytes = Buffer.byteLength(TRUNCATED_MARKER);
124
+ const contentBytes = maxBytes - markerBytes;
125
+ if (contentBytes < 0)
126
+ return "";
127
+ if (contentBytes === 0)
128
+ return TRUNCATED_MARKER;
129
+ for (const char of value) {
130
+ const charBytes = Buffer.byteLength(char);
131
+ if (bytes + charBytes > contentBytes)
132
+ break;
133
+ result += char;
134
+ bytes += charBytes;
135
+ }
136
+ return `${result}${TRUNCATED_MARKER}`;
137
+ }
48
138
  //# sourceMappingURL=path-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"path-manager.js","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAU7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAExD,MAAM,OAAO,WAAW;IAKtB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAsB;QAFvD,yCAAoB;QAGlB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,uBAAA,IAAI,0BAAc,SAAS,MAAA,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAa,EAAE,IAAY,EAAE,SAAiB;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,aAAa,IAAI,SAAS,EAAE,CAAC;QAE1D,IAAI,uBAAA,IAAI,8BAAW,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,WAAW,CAAC;YACrB,SAAS,EAAE,uBAAA,IAAI,8BAAW;YAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,IAAsD;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,cAAc,EAAE,CAAC;QAErD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"path-manager.js","sourceRoot":"","sources":["../../../../src/downloader/fs/path-manager.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,5 @@ export interface RunCliDependencies {
5
5
  logger: Logger;
6
6
  transport?: HttpTransport;
7
7
  }
8
- export declare function download({ logger, transport: customTransport }: RunCliDependencies, options: DownloadOptions): Promise<boolean>;
8
+ export declare function download({ logger, transport: customTransport }: RunCliDependencies, options: DownloadOptions): Promise<string[]>;
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/downloader/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOxD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,wBAAsB,QAAQ,CAC5B,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,kBAAkB,EAC1D,OAAO,EAAE,eAAe,oBAkEzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/downloader/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOxD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,wBAAsB,QAAQ,CAC5B,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,kBAAkB,EAC1D,OAAO,EAAE,eAAe,qBA2EzB"}
@@ -21,11 +21,13 @@ export async function download({ logger, transport: customTransport }, options)
21
21
  transport: customTransport,
22
22
  });
23
23
  const pathManager = new PathManager({
24
+ flatParentMinBytes: options.flatParentMinBytes,
24
25
  flatPosts: options.flatPosts,
26
+ maxFilenameBytes: options.maxFilenameBytes,
25
27
  rootPath: options.output,
26
28
  });
27
29
  const client = new FanboxClient({ headers, transport });
28
- let failed = false;
30
+ const failed = [];
29
31
  const creatorIds = await resolveCreatorIds({ client, logger }, options);
30
32
  const creatorManifestManager = new CreatorManifestManager({
31
33
  logger,
@@ -35,7 +37,9 @@ export async function download({ logger, transport: customTransport }, options)
35
37
  for (const creatorId of creatorIds) {
36
38
  logger.debug(`Initializing download for creator ${creatorId}`);
37
39
  const creatorManifest = await creatorManifestManager.load(creatorId);
38
- const creatorPathManager = pathManager.dir(creatorId);
40
+ const creatorPathManager = pathManager.dir([
41
+ { context: creatorId, required: true },
42
+ ]);
39
43
  const syncCreatorPromise = syncCreator({
40
44
  client,
41
45
  headers,
@@ -45,15 +49,17 @@ export async function download({ logger, transport: customTransport }, options)
45
49
  transport,
46
50
  }).catch(() => {
47
51
  logger.error(`Error occurred while syncing creator ${creatorId}, skipping.`);
48
- failed = true;
52
+ failed.push(creatorId);
49
53
  });
50
54
  processingCreators.push(syncCreatorPromise);
51
55
  const success = !hasFailures(creatorManifest);
52
- failed || (failed = !success);
56
+ if (!success)
57
+ failed.push(creatorId);
53
58
  }
54
- logger.info(`All ${processingCreators.length} creators have been initialized for download, waiting for all to complete...`);
59
+ logger.info(`All ${creatorIds.length} creators have been initialized for download, waiting for all to complete...`);
55
60
  await Promise.all(processingCreators);
56
61
  await creatorManifestManager.saveAll();
62
+ logger.info({ failed }, `Download completed for ${creatorIds.length} creators, with ${failed.length} failures.`);
57
63
  return failed;
58
64
  }
59
65
  function hasFailures(manifest) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/downloader/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/downloader/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"creator-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,sBAAsB;;gBAKrB,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,0BAA0B;IAKzD,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IASjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAa/B"}
1
+ {"version":3,"file":"creator-manager.d.ts","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,sBAAsB;;gBAKrB,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,0BAA0B;IAKzD,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IASjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB/B"}
@@ -31,7 +31,12 @@ export class CreatorManifestManager {
31
31
  }
32
32
  }
33
33
  _CreatorManifestManager_logger = new WeakMap(), _CreatorManifestManager_manifests = new WeakMap(), _CreatorManifestManager_pathManager = new WeakMap(), _CreatorManifestManager_instances = new WeakSet(), _CreatorManifestManager_createManifest = function _CreatorManifestManager_createManifest(creatorId) {
34
- const manifest = new CreatorManifest({ logger: __classPrivateFieldGet(this, _CreatorManifestManager_logger, "f"), pathManager: __classPrivateFieldGet(this, _CreatorManifestManager_pathManager, "f").dir(creatorId) }, creatorId);
34
+ const manifest = new CreatorManifest({
35
+ logger: __classPrivateFieldGet(this, _CreatorManifestManager_logger, "f"),
36
+ pathManager: __classPrivateFieldGet(this, _CreatorManifestManager_pathManager, "f").dir([
37
+ { context: creatorId, required: true },
38
+ ]),
39
+ }, creatorId);
35
40
  __classPrivateFieldGet(this, _CreatorManifestManager_manifests, "f").set(creatorId, manifest);
36
41
  return manifest;
37
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"creator-manager.js","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAO/C,MAAM,OAAO,sBAAsB;IAKjC,YAAY,EAAE,MAAM,EAAE,WAAW,EAA8B;;QAJ/D,iDAAgB;QAChB,4CAAa,IAAI,GAAG,EAA2B,EAAC;QAChD,sDAA0B;QAGxB,uBAAA,IAAI,kCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,uCAAgB,WAAW,MAAA,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,MAAM,QAAQ,GACZ,uBAAA,IAAI,yCAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,uBAAA,IAAI,iFAAgB,MAApB,IAAI,EAAiB,SAAS,CAAC,CAAC;QAEpE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,yCAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CAUF;oSARiB,SAAiB;IAC/B,MAAM,QAAQ,GAAG,IAAI,eAAe,CAClC,EAAE,MAAM,EAAE,uBAAA,IAAI,sCAAQ,EAAE,WAAW,EAAE,uBAAA,IAAI,2CAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EACvE,SAAS,CACV,CAAC;IACF,uBAAA,IAAI,yCAAW,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"creator-manager.js","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAO/C,MAAM,OAAO,sBAAsB;IAKjC,YAAY,EAAE,MAAM,EAAE,WAAW,EAA8B;;QAJ/D,iDAAgB;QAChB,4CAAa,IAAI,GAAG,EAA2B,EAAC;QAChD,sDAA0B;QAGxB,uBAAA,IAAI,kCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,uCAAgB,WAAW,MAAA,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,MAAM,QAAQ,GACZ,uBAAA,IAAI,yCAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,uBAAA,IAAI,iFAAgB,MAApB,IAAI,EAAiB,SAAS,CAAC,CAAC;QAEpE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,yCAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CAeF;oSAbiB,SAAiB;IAC/B,MAAM,QAAQ,GAAG,IAAI,eAAe,CAClC;QACE,MAAM,EAAE,uBAAA,IAAI,sCAAQ;QACpB,WAAW,EAAE,uBAAA,IAAI,2CAAa,CAAC,GAAG,CAAC;YACjC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;SACvC,CAAC;KACH,EACD,SAAS,CACV,CAAC;IACF,uBAAA,IAAI,yCAAW,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAEV,eAAe,EACf,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAShC,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,EAC1C,WAAW,EAAE,WAAW,GACvB,gBAAgB,CA6BlB;AAED,wBAAsB,QAAQ,CAC5B,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,YAAY,EACzD,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,gBAAgB,CAAC,CAgI3B"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAEV,eAAe,EACf,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAShC,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,EAC1C,WAAW,EAAE,WAAW,GACvB,gBAAgB,CA6BlB;AAED,wBAAsB,QAAQ,CAC5B,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,YAAY,EACzD,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,gBAAgB,CAAC,CA2I3B"}
@@ -45,7 +45,10 @@ export async function syncPost({ headers, logger, pathManager, transport }, post
45
45
  const results = await Promise.allSettled(contents.map(async (content, index) => {
46
46
  const indexPadded = index.toString().padStart(totalDigits, "0");
47
47
  if (content instanceof ImageContent) {
48
- const destination = pathManager.asset(indexPadded, content.id, content.extension);
48
+ const destination = pathManager.asset([
49
+ { context: indexPadded, required: true },
50
+ { context: content.id, required: true },
51
+ ], content.extension);
49
52
  const { bytes, sha256 } = await download({
50
53
  destination,
51
54
  fallbackDateTime: post.updatedDatetime,
@@ -69,7 +72,11 @@ export async function syncPost({ headers, logger, pathManager, transport }, post
69
72
  return formatImageAsset({ assetPath: destination });
70
73
  }
71
74
  if (content instanceof FileContent) {
72
- const destination = pathManager.asset(indexPadded, `${content.name}-${content.id}`, content.extension);
75
+ const destination = pathManager.asset([
76
+ { context: indexPadded, required: true },
77
+ { context: content.name, required: false },
78
+ { context: content.id, required: true },
79
+ ], content.extension);
73
80
  const { bytes, sha256 } = await download({
74
81
  destination,
75
82
  fallbackDateTime: post.updatedDatetime,
@@ -105,7 +112,10 @@ export async function syncPost({ headers, logger, pathManager, transport }, post
105
112
  const err = String(result.reason);
106
113
  return `<!-- Error occurred while processing content: ${err} -->`;
107
114
  });
108
- await writeFile(pathManager.asset("0".padStart(totalDigits, "0"), "content", "md"), markdownContent.join("\n\n"));
115
+ await writeFile(pathManager.asset([
116
+ { context: "0".padStart(totalDigits, "0"), required: true },
117
+ { context: "content", required: true },
118
+ ], "md"), markdownContent.join("\n\n"));
109
119
  return {
110
120
  assets: assetManifestData,
111
121
  id: post.id,
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moontaiworks/fanbox-dl",
3
- "version": "1.5.5",
3
+ "version": "1.6.0",
4
4
  "description": "A TypeScript PixivFanbox Downloader and SDK",
5
5
  "author": "moontai0724",
6
6
  "license": "MIT",