pixivflow 2.14.0 → 2.16.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 (192) hide show
  1. package/dist/auth/PixivAuth.d.ts +18 -0
  2. package/dist/auth/PixivAuth.d.ts.map +1 -0
  3. package/dist/auth/PixivAuth.js +200 -0
  4. package/dist/auth/PixivAuth.js.map +1 -0
  5. package/dist/commands/DoctorCommand.d.ts.map +1 -1
  6. package/dist/commands/DoctorCommand.js +23 -0
  7. package/dist/commands/DoctorCommand.js.map +1 -1
  8. package/dist/commands/DownloadCommand.js +4 -4
  9. package/dist/commands/DownloadCommand.js.map +1 -1
  10. package/dist/commands/HealthCommand.d.ts.map +1 -1
  11. package/dist/commands/HealthCommand.js +14 -1
  12. package/dist/commands/HealthCommand.js.map +1 -1
  13. package/dist/commands/OutboxCommand.d.ts.map +1 -1
  14. package/dist/commands/OutboxCommand.js +49 -2
  15. package/dist/commands/OutboxCommand.js.map +1 -1
  16. package/dist/commands/RandomDownloadCommand.js +4 -4
  17. package/dist/commands/RandomDownloadCommand.js.map +1 -1
  18. package/dist/commands/RunsCommand.d.ts +21 -0
  19. package/dist/commands/RunsCommand.d.ts.map +1 -0
  20. package/dist/commands/RunsCommand.js +65 -0
  21. package/dist/commands/RunsCommand.js.map +1 -0
  22. package/dist/commands/TagsCommand.js +4 -4
  23. package/dist/commands/TagsCommand.js.map +1 -1
  24. package/dist/commands/TopicCommand.d.ts.map +1 -1
  25. package/dist/commands/TopicCommand.js +4 -4
  26. package/dist/commands/TopicCommand.js.map +1 -1
  27. package/dist/commands/VersionCommand.d.ts +2 -0
  28. package/dist/commands/VersionCommand.d.ts.map +1 -1
  29. package/dist/commands/VersionCommand.js +10 -46
  30. package/dist/commands/VersionCommand.js.map +1 -1
  31. package/dist/commands/index.d.ts +2 -1
  32. package/dist/commands/index.d.ts.map +1 -1
  33. package/dist/commands/index.js +4 -1
  34. package/dist/commands/index.js.map +1 -1
  35. package/dist/commands/scheduler-runtime.d.ts +2 -2
  36. package/dist/commands/scheduler-runtime.d.ts.map +1 -1
  37. package/dist/commands/scheduler-runtime.js +6 -4
  38. package/dist/commands/scheduler-runtime.js.map +1 -1
  39. package/dist/config/types.d.ts +7 -0
  40. package/dist/config/types.d.ts.map +1 -1
  41. package/dist/delivery/DeliveryDispatcher.d.ts +3 -0
  42. package/dist/delivery/DeliveryDispatcher.d.ts.map +1 -1
  43. package/dist/delivery/DeliveryDispatcher.js +6 -2
  44. package/dist/delivery/DeliveryDispatcher.js.map +1 -1
  45. package/dist/delivery/HttpMultipartDelivery.d.ts +13 -0
  46. package/dist/delivery/HttpMultipartDelivery.d.ts.map +1 -1
  47. package/dist/delivery/HttpMultipartDelivery.js +34 -19
  48. package/dist/delivery/HttpMultipartDelivery.js.map +1 -1
  49. package/dist/delivery/OutboxWorker.d.ts +14 -0
  50. package/dist/delivery/OutboxWorker.d.ts.map +1 -1
  51. package/dist/delivery/OutboxWorker.js +120 -5
  52. package/dist/delivery/OutboxWorker.js.map +1 -1
  53. package/dist/delivery/errorClass.d.ts +12 -0
  54. package/dist/delivery/errorClass.d.ts.map +1 -0
  55. package/dist/delivery/errorClass.js +34 -0
  56. package/dist/delivery/errorClass.js.map +1 -0
  57. package/dist/download/IllustrationDownloader.d.ts +1 -1
  58. package/dist/download/IllustrationDownloader.d.ts.map +1 -1
  59. package/dist/download/NovelDownloader.d.ts +1 -1
  60. package/dist/download/NovelDownloader.d.ts.map +1 -1
  61. package/dist/download/RankingService.d.ts +1 -1
  62. package/dist/download/RankingService.d.ts.map +1 -1
  63. package/dist/download/handlers/IllustrationTargetHandler.d.ts.map +1 -1
  64. package/dist/download/handlers/IllustrationTargetHandler.js +12 -5
  65. package/dist/download/handlers/IllustrationTargetHandler.js.map +1 -1
  66. package/dist/download/handlers/NovelTargetHandler.d.ts.map +1 -1
  67. package/dist/download/handlers/NovelTargetHandler.js +12 -5
  68. package/dist/download/handlers/NovelTargetHandler.js.map +1 -1
  69. package/dist/download/pipeline/DownloadPipeline.d.ts +1 -1
  70. package/dist/download/pipeline/DownloadPipeline.d.ts.map +1 -1
  71. package/dist/download/plan/DownloadPlanner.d.ts +1 -1
  72. package/dist/download/plan/DownloadPlanner.d.ts.map +1 -1
  73. package/dist/download/recovery/ErrorRecovery.d.ts.map +1 -1
  74. package/dist/download/recovery/ErrorRecovery.js +8 -2
  75. package/dist/download/recovery/ErrorRecovery.js.map +1 -1
  76. package/dist/index.js +1 -1
  77. package/dist/index.js.map +1 -1
  78. package/dist/interfaces/IPixivClient.d.ts +1 -5
  79. package/dist/interfaces/IPixivClient.d.ts.map +1 -1
  80. package/dist/package.json +1 -1
  81. package/dist/pixiv/AuthClient.d.ts +6 -12
  82. package/dist/pixiv/AuthClient.d.ts.map +1 -1
  83. package/dist/pixiv/AuthClient.js +7 -188
  84. package/dist/pixiv/AuthClient.js.map +1 -1
  85. package/dist/pixiv/PixivClient.d.ts +14 -156
  86. package/dist/pixiv/PixivClient.d.ts.map +1 -1
  87. package/dist/pixiv/PixivClient.js +15 -292
  88. package/dist/pixiv/PixivClient.js.map +1 -1
  89. package/dist/pixiv-client/PixivAuthTokenProvider.d.ts +16 -0
  90. package/dist/pixiv-client/PixivAuthTokenProvider.d.ts.map +1 -0
  91. package/dist/pixiv-client/PixivAuthTokenProvider.js +27 -0
  92. package/dist/pixiv-client/PixivAuthTokenProvider.js.map +1 -0
  93. package/dist/pixiv-client/PixivFlowPixivClient.d.ts +77 -0
  94. package/dist/pixiv-client/PixivFlowPixivClient.d.ts.map +1 -0
  95. package/dist/pixiv-client/PixivFlowPixivClient.js +146 -0
  96. package/dist/pixiv-client/PixivFlowPixivClient.js.map +1 -0
  97. package/dist/pixiv-client/TargetSearchRunner.d.ts +29 -0
  98. package/dist/pixiv-client/TargetSearchRunner.d.ts.map +1 -0
  99. package/dist/pixiv-client/TargetSearchRunner.js +182 -0
  100. package/dist/pixiv-client/TargetSearchRunner.js.map +1 -0
  101. package/dist/pixiv-client/createPixivFlowClient.d.ts +11 -0
  102. package/dist/pixiv-client/createPixivFlowClient.d.ts.map +1 -0
  103. package/dist/pixiv-client/createPixivFlowClient.js +29 -0
  104. package/dist/pixiv-client/createPixivFlowClient.js.map +1 -0
  105. package/dist/pixiv-client/query-mapper.d.ts +14 -0
  106. package/dist/pixiv-client/query-mapper.d.ts.map +1 -0
  107. package/dist/pixiv-client/query-mapper.js +63 -0
  108. package/dist/pixiv-client/query-mapper.js.map +1 -0
  109. package/dist/random-download.js +4 -4
  110. package/dist/random-download.js.map +1 -1
  111. package/dist/scheduler/SlotCoordinator.d.ts +7 -0
  112. package/dist/scheduler/SlotCoordinator.d.ts.map +1 -1
  113. package/dist/scheduler/SlotCoordinator.js +26 -0
  114. package/dist/scheduler/SlotCoordinator.js.map +1 -1
  115. package/dist/storage/Database.d.ts +4 -0
  116. package/dist/storage/Database.d.ts.map +1 -1
  117. package/dist/storage/Database.js +7 -0
  118. package/dist/storage/Database.js.map +1 -1
  119. package/dist/storage/DatabaseMigration.d.ts.map +1 -1
  120. package/dist/storage/DatabaseMigration.js +30 -0
  121. package/dist/storage/DatabaseMigration.js.map +1 -1
  122. package/dist/storage/repositories/OutboxRepository.d.ts +56 -0
  123. package/dist/storage/repositories/OutboxRepository.d.ts.map +1 -1
  124. package/dist/storage/repositories/OutboxRepository.js +189 -0
  125. package/dist/storage/repositories/OutboxRepository.js.map +1 -1
  126. package/dist/storage/repositories/RateLimitStateRepository.d.ts +17 -0
  127. package/dist/storage/repositories/RateLimitStateRepository.d.ts.map +1 -0
  128. package/dist/storage/repositories/RateLimitStateRepository.js +46 -0
  129. package/dist/storage/repositories/RateLimitStateRepository.js.map +1 -0
  130. package/dist/tags/types.d.ts +1 -1
  131. package/dist/tags/types.d.ts.map +1 -1
  132. package/dist/utils/concurrency.d.ts.map +1 -1
  133. package/dist/utils/concurrency.js +2 -1
  134. package/dist/utils/concurrency.js.map +1 -1
  135. package/dist/utils/errors.d.ts +20 -0
  136. package/dist/utils/errors.d.ts.map +1 -1
  137. package/dist/utils/errors.js +56 -1
  138. package/dist/utils/errors.js.map +1 -1
  139. package/dist/utils/pixiv-sort.d.ts +1 -1
  140. package/dist/utils/pixiv-sort.d.ts.map +1 -1
  141. package/dist/utils/pixiv-utils.d.ts +1 -1
  142. package/dist/utils/pixiv-utils.d.ts.map +1 -1
  143. package/dist/utils/redact.d.ts +14 -0
  144. package/dist/utils/redact.d.ts.map +1 -0
  145. package/dist/utils/redact.js +47 -0
  146. package/dist/utils/redact.js.map +1 -0
  147. package/dist/utils/token-maintenance.d.ts +1 -1
  148. package/dist/utils/token-maintenance.d.ts.map +1 -1
  149. package/dist/version.d.ts +5 -0
  150. package/dist/version.d.ts.map +1 -0
  151. package/dist/version.js +6 -0
  152. package/dist/version.js.map +1 -0
  153. package/dist/webui/package.json +1 -1
  154. package/dist/webui/services/DownloadTaskManager.js +4 -4
  155. package/dist/webui/services/DownloadTaskManager.js.map +1 -1
  156. package/package.json +11 -4
  157. package/dist/pixiv/IPixivRequestHandler.d.ts +0 -26
  158. package/dist/pixiv/IPixivRequestHandler.d.ts.map +0 -1
  159. package/dist/pixiv/IPixivRequestHandler.js +0 -3
  160. package/dist/pixiv/IPixivRequestHandler.js.map +0 -1
  161. package/dist/pixiv/RateLimitCoordinator.d.ts +0 -30
  162. package/dist/pixiv/RateLimitCoordinator.d.ts.map +0 -1
  163. package/dist/pixiv/RateLimitCoordinator.js +0 -66
  164. package/dist/pixiv/RateLimitCoordinator.js.map +0 -1
  165. package/dist/pixiv/client/IllustService.d.ts +0 -24
  166. package/dist/pixiv/client/IllustService.d.ts.map +0 -1
  167. package/dist/pixiv/client/IllustService.js +0 -70
  168. package/dist/pixiv/client/IllustService.js.map +0 -1
  169. package/dist/pixiv/client/MediaDownloadService.d.ts +0 -11
  170. package/dist/pixiv/client/MediaDownloadService.d.ts.map +0 -1
  171. package/dist/pixiv/client/MediaDownloadService.js +0 -22
  172. package/dist/pixiv/client/MediaDownloadService.js.map +0 -1
  173. package/dist/pixiv/client/NovelService.d.ts +0 -30
  174. package/dist/pixiv/client/NovelService.d.ts.map +0 -1
  175. package/dist/pixiv/client/NovelService.js +0 -203
  176. package/dist/pixiv/client/NovelService.js.map +0 -1
  177. package/dist/pixiv/client/PixivApiCore.d.ts +0 -52
  178. package/dist/pixiv/client/PixivApiCore.d.ts.map +0 -1
  179. package/dist/pixiv/client/PixivApiCore.js +0 -412
  180. package/dist/pixiv/client/PixivApiCore.js.map +0 -1
  181. package/dist/pixiv/client/SearchService.d.ts +0 -21
  182. package/dist/pixiv/client/SearchService.d.ts.map +0 -1
  183. package/dist/pixiv/client/SearchService.js +0 -207
  184. package/dist/pixiv/client/SearchService.js.map +0 -1
  185. package/dist/pixiv/client/search/SearchFilters.d.ts +0 -31
  186. package/dist/pixiv/client/search/SearchFilters.d.ts.map +0 -1
  187. package/dist/pixiv/client/search/SearchFilters.js +0 -102
  188. package/dist/pixiv/client/search/SearchFilters.js.map +0 -1
  189. package/dist/pixiv/types.d.ts +0 -72
  190. package/dist/pixiv/types.d.ts.map +0 -1
  191. package/dist/pixiv/types.js +0 -6
  192. package/dist/pixiv/types.js.map +0 -1
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IllustService = void 0;
4
- /**
5
- * Service for illustration related Pixiv API calls.
6
- * Depends on PixivApiCore for HTTP concerns (retry, timeout, proxy, rate limit).
7
- */
8
- class IllustService {
9
- api;
10
- constructor(api) {
11
- this.api = api;
12
- }
13
- async getIllustration(illustId) {
14
- const url = `/v1/illust/detail?illust_id=${encodeURIComponent(String(illustId))}`;
15
- const res = await this.api.request(url, { method: 'GET' });
16
- return res.illust;
17
- }
18
- async getIllustDetailWithTags(illustId) {
19
- const url = `/v1/illust/detail?illust_id=${encodeURIComponent(String(illustId))}`;
20
- const res = await this.api.request(url, { method: 'GET' });
21
- const tags = res.illust.tags ?? [];
22
- const { tags: _omit, ...illust } = res.illust;
23
- return { illust, tags };
24
- }
25
- async getUserIllustrations(userId, options) {
26
- const params = new URLSearchParams({
27
- user_id: userId,
28
- type: 'illust',
29
- filter: 'for_ios',
30
- });
31
- if (options?.offset)
32
- params.set('offset', String(options.offset));
33
- let nextUrl = `/v1/user/illusts?${params.toString()}`;
34
- const results = [];
35
- const limit = options?.limit ?? 30;
36
- while (nextUrl && results.length < limit) {
37
- // nextUrl may be a full URL from API, PixivApiCore can resolve it
38
- const res = await this.api.request(nextUrl, { method: 'GET' });
39
- const illusts = res.illusts ?? [];
40
- const remaining = limit - results.length;
41
- results.push(...illusts.slice(0, remaining));
42
- nextUrl = res.next_url ?? null;
43
- if (illusts.length === 0)
44
- break;
45
- }
46
- return results.slice(0, limit);
47
- }
48
- async getRankingIllustrations(mode, date, limit) {
49
- const params = new URLSearchParams({
50
- mode,
51
- filter: 'for_ios',
52
- });
53
- if (date)
54
- params.set('date', date);
55
- let nextUrl = `/v1/illust/ranking?${params.toString()}`;
56
- const results = [];
57
- while (nextUrl && (!limit || results.length < limit)) {
58
- const res = await this.api.request(nextUrl, { method: 'GET' });
59
- for (const item of res.illusts ?? []) {
60
- results.push(item);
61
- if (limit && results.length >= limit)
62
- break;
63
- }
64
- nextUrl = res.next_url ?? null;
65
- }
66
- return results;
67
- }
68
- }
69
- exports.IllustService = IllustService;
70
- //# sourceMappingURL=IllustService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IllustService.js","sourceRoot":"","sources":["../../../src/pixiv/client/IllustService.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { PixivApiCore } from './PixivApiCore';
2
- /**
3
- * Media download service: provides binary download helpers with sane defaults.
4
- * Returns raw ArrayBuffer for compatibility with existing callers.
5
- */
6
- export declare class MediaDownloadService {
7
- private readonly api;
8
- constructor(api: PixivApiCore);
9
- downloadImage(originalUrl: string, userAgent?: string): Promise<ArrayBuffer>;
10
- }
11
- //# sourceMappingURL=MediaDownloadService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MediaDownloadService.d.ts","sourceRoot":"","sources":["../../../src/pixiv/client/MediaDownloadService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,YAAY;IAExC,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAOnF"}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MediaDownloadService = void 0;
4
- /**
5
- * Media download service: provides binary download helpers with sane defaults.
6
- * Returns raw ArrayBuffer for compatibility with existing callers.
7
- */
8
- class MediaDownloadService {
9
- api;
10
- constructor(api) {
11
- this.api = api;
12
- }
13
- async downloadImage(originalUrl, userAgent) {
14
- const headers = {
15
- Referer: 'https://app-api.pixiv.net/',
16
- ...(userAgent ? { 'User-Agent': userAgent } : {}),
17
- };
18
- return this.api.downloadBinary(originalUrl, { headers, method: 'GET' });
19
- }
20
- }
21
- exports.MediaDownloadService = MediaDownloadService;
22
- //# sourceMappingURL=MediaDownloadService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MediaDownloadService.js","sourceRoot":"","sources":["../../../src/pixiv/client/MediaDownloadService.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,oBAAoB;IACF;IAA7B,YAA6B,GAAiB;QAAjB,QAAG,GAAH,GAAG,CAAc;IAAG,CAAC;IAElD,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,SAAkB;QACzD,MAAM,OAAO,GAA2B;YACtC,OAAO,EAAE,4BAA4B;YACrC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF;AAVD,oDAUC"}
@@ -1,30 +0,0 @@
1
- import { PixivApiCore } from './PixivApiCore';
2
- import type { PixivNovel, PixivNovelTextResponse } from '../types';
3
- /**
4
- * Service for novel related Pixiv API calls.
5
- */
6
- export declare class NovelService {
7
- private readonly api;
8
- constructor(api: PixivApiCore);
9
- getNovel(novelId: number): Promise<PixivNovel>;
10
- getNovelDetailWithTags(novelId: number): Promise<{
11
- novel: PixivNovel;
12
- tags: Array<{
13
- name: string;
14
- translated_name?: string;
15
- }>;
16
- }>;
17
- getNovelDetail(novelId: number): Promise<PixivNovel>;
18
- getNovelText(novelId: number, opts?: {
19
- userAgent?: string;
20
- }): Promise<PixivNovelTextResponse>;
21
- private nonEmptyText;
22
- private errorMessage;
23
- getUserNovels(userId: string, options?: {
24
- limit?: number;
25
- offset?: number;
26
- }): Promise<PixivNovel[]>;
27
- getRankingNovels(mode: 'day' | 'week' | 'month' | 'day_male' | 'day_female' | 'day_r18' | 'day_male_r18' | 'day_female_r18' | 'week_r18' | 'week_r18g', date?: string, limit?: number): Promise<PixivNovel[]>;
28
- getNovelSeries(seriesId: number): Promise<PixivNovel[]>;
29
- }
30
- //# sourceMappingURL=NovelService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NovelService.d.ts","sourceRoot":"","sources":["../../../src/pixiv/client/NovelService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAa,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAG9E;;GAEG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,YAAY;IAExC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAO9C,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QACrD,KAAK,EAAE,UAAU,CAAC;QAClB,IAAI,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,eAAe,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzD,CAAC;IA0BI,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAepD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA2EnG,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAId,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,UAAU,EAAE,CAAC;IA0BlB,gBAAgB,CACpB,IAAI,EACA,KAAK,GACL,MAAM,GACN,OAAO,GACP,UAAU,GACV,YAAY,GACZ,SAAS,GACT,cAAc,GACd,gBAAgB,GAChB,UAAU,GACV,WAAW,EACf,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,EAAE,CAAC;IAwBlB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAiC9D"}
@@ -1,203 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NovelService = void 0;
4
- const errors_1 = require("../../utils/errors");
5
- /**
6
- * Service for novel related Pixiv API calls.
7
- */
8
- class NovelService {
9
- api;
10
- constructor(api) {
11
- this.api = api;
12
- }
13
- async getNovel(novelId) {
14
- // Prefer v2, fallback logic should be applied by higher layer if needed
15
- const url = `/v2/novel/detail?novel_id=${encodeURIComponent(String(novelId))}`;
16
- const res = await this.api.request(url, { method: 'GET' });
17
- return res.novel;
18
- }
19
- async getNovelDetailWithTags(novelId) {
20
- // Try v2 first
21
- let url = `/v2/novel/detail?novel_id=${encodeURIComponent(String(novelId))}`;
22
- try {
23
- const res = await this.api.request(url, { method: 'GET' });
24
- const tags = res.novel.tags ?? [];
25
- const { tags: _omit, ...novel } = res.novel;
26
- return { novel, tags };
27
- }
28
- catch (e) {
29
- const msg = e instanceof Error ? e.message : String(e);
30
- // Fallback to v1 if endpoint missing/404
31
- if (msg.includes('404') || msg.includes('end-point')) {
32
- url = `/v1/novel/detail?novel_id=${encodeURIComponent(String(novelId))}`;
33
- const res = await this.api.request(url, { method: 'GET' });
34
- const tags = res.novel.tags ?? [];
35
- const { tags: _omit, ...novel } = res.novel;
36
- return { novel, tags };
37
- }
38
- throw e;
39
- }
40
- }
41
- async getNovelDetail(novelId) {
42
- // Try v2 first, then v1
43
- try {
44
- return await this.getNovel(novelId);
45
- }
46
- catch (e) {
47
- const msg = e instanceof Error ? e.message : String(e);
48
- if (msg.includes('404') || msg.includes('end-point')) {
49
- const url = `/v1/novel/detail?novel_id=${encodeURIComponent(String(novelId))}`;
50
- const res = await this.api.request(url, { method: 'GET' });
51
- return res.novel;
52
- }
53
- throw e;
54
- }
55
- }
56
- async getNovelText(novelId, opts) {
57
- const failures = [];
58
- // Primary: the same webview endpoint used by gallery-dl. The legacy
59
- // /v1/novel/text endpoint can return a successful response with an empty
60
- // body for some works, so HTTP success alone must not be treated as a
61
- // successful novel download.
62
- try {
63
- const webviewUrl = `/webview/v2/novel?id=${encodeURIComponent(String(novelId))}&viewer_version=20221031_ai`;
64
- const html = await this.api.request(webviewUrl, {
65
- method: 'GET',
66
- responseType: 'text',
67
- });
68
- const marker = 'novel: ';
69
- const start = html.indexOf(marker);
70
- if (start !== -1) {
71
- const from = start + marker.length;
72
- const end = html.indexOf(',\n', from);
73
- if (end !== -1) {
74
- const parsed = JSON.parse(html.slice(from, end));
75
- const text = this.nonEmptyText(parsed?.text);
76
- if (text)
77
- return { novel_text: text };
78
- }
79
- }
80
- failures.push('webview returned no non-empty novel text');
81
- }
82
- catch (error) {
83
- failures.push(`webview (${this.errorMessage(error)})`);
84
- }
85
- // Fallback 1: legacy App API. Keep it for compatibility, but only accept a
86
- // genuinely non-empty novel_text value.
87
- const url = `/v1/novel/text?novel_id=${encodeURIComponent(String(novelId))}`;
88
- try {
89
- const response = await this.api.request(url, { method: 'GET' });
90
- const text = this.nonEmptyText(response?.novel_text);
91
- if (text)
92
- return { novel_text: text };
93
- failures.push('app-api returned no non-empty novel_text');
94
- }
95
- catch (error) {
96
- failures.push(`app-api (${this.errorMessage(error)})`);
97
- }
98
- // Fallback 2: web ajax endpoint. This one must NOT carry the App Bearer
99
- // token (www.pixiv.net/ajax rejects it with a different payload), so we
100
- // send browser-like headers with skipAuth instead.
101
- const BROWSER_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126 Safari/537.36';
102
- const ajaxUrl = `https://www.pixiv.net/ajax/novel/${novelId}`;
103
- try {
104
- const resp = await this.api.request(ajaxUrl, {
105
- method: 'GET',
106
- headers: {
107
- Referer: 'https://www.pixiv.net/',
108
- 'User-Agent': opts?.userAgent ?? BROWSER_UA,
109
- },
110
- skipAuth: true,
111
- });
112
- if (resp?.error) {
113
- throw new errors_1.NetworkError(`ajax endpoint returned error: ${resp.message || 'unknown'}`, ajaxUrl);
114
- }
115
- const text = this.nonEmptyText(resp?.body?.content);
116
- if (text)
117
- return { novel_text: text };
118
- failures.push('web ajax returned no non-empty content');
119
- }
120
- catch (fallbackError) {
121
- failures.push(`web ajax (${this.errorMessage(fallbackError)})`);
122
- }
123
- throw new errors_1.NetworkError(`novel text failed for ${novelId}: ${failures.join('; ')}`, ajaxUrl);
124
- }
125
- nonEmptyText(value) {
126
- return typeof value === 'string' && value.trim() ? value : null;
127
- }
128
- errorMessage(error) {
129
- return error instanceof Error ? error.message : String(error);
130
- }
131
- async getUserNovels(userId, options) {
132
- const params = new URLSearchParams({
133
- user_id: userId,
134
- filter: 'for_ios',
135
- });
136
- if (options?.offset)
137
- params.set('offset', String(options.offset));
138
- let nextUrl = `/v1/user/novels?${params.toString()}`;
139
- const results = [];
140
- const limit = options?.limit ?? 30;
141
- while (nextUrl && results.length < limit) {
142
- const responseData = await this.api.request(nextUrl, { method: 'GET' });
143
- const novels = responseData.novels ?? [];
144
- const remaining = limit - results.length;
145
- results.push(...novels.slice(0, remaining));
146
- nextUrl = responseData.next_url ?? null;
147
- if (novels.length === 0)
148
- break;
149
- }
150
- return results.slice(0, limit);
151
- }
152
- async getRankingNovels(mode, date, limit) {
153
- const params = new URLSearchParams({
154
- mode,
155
- });
156
- if (date)
157
- params.set('date', date);
158
- let nextUrl = `/v1/novel/ranking?${params.toString()}`;
159
- const results = [];
160
- while (nextUrl && (!limit || results.length < limit)) {
161
- const responseData = await this.api.request(nextUrl, { method: 'GET' });
162
- for (const item of responseData.novels ?? []) {
163
- results.push(item);
164
- if (limit && results.length >= limit)
165
- break;
166
- }
167
- nextUrl = responseData.next_url ?? null;
168
- }
169
- return results;
170
- }
171
- async getNovelSeries(seriesId) {
172
- let nextUrl = `/v1/novel/series?series_id=${encodeURIComponent(String(seriesId))}`;
173
- const results = [];
174
- while (nextUrl) {
175
- const res = await this.api.request(nextUrl, { method: 'GET' });
176
- let seriesContent = [];
177
- if (res.novel_series_detail?.series_content) {
178
- seriesContent = res.novel_series_detail.series_content;
179
- }
180
- else if (res.series_content) {
181
- seriesContent = res.series_content;
182
- }
183
- else if (Array.isArray(res.novels)) {
184
- seriesContent = res.novels;
185
- }
186
- else {
187
- throw new Error(`Unexpected response structure from novel series API.`);
188
- }
189
- for (const content of seriesContent) {
190
- results.push({
191
- id: content.id,
192
- title: content.title,
193
- user: content.user,
194
- create_date: content.create_date,
195
- });
196
- }
197
- nextUrl = res.next_url ?? null;
198
- }
199
- return results;
200
- }
201
- }
202
- exports.NovelService = NovelService;
203
- //# sourceMappingURL=NovelService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NovelService.js","sourceRoot":"","sources":["../../../src/pixiv/client/NovelService.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import { RateLimitCoordinator } from '../RateLimitCoordinator';
2
- export interface PixivApiCoreOptions {
3
- baseUrl?: string;
4
- userAgent?: string;
5
- defaultTimeoutMs?: number;
6
- maxRetries?: number;
7
- rateLimitPerSecond?: number;
8
- proxyUrl?: string;
9
- /**
10
- * Optional: Provide an access token for authenticated requests.
11
- * If provided, it will be attached as Authorization: Bearer <token>.
12
- */
13
- getAccessToken?: () => Promise<string> | string;
14
- /** Shared process-wide 429 gate. When provided all requests share one cooldown. */
15
- rateLimiter?: RateLimitCoordinator;
16
- }
17
- export interface PixivApiErrorBody {
18
- message?: string;
19
- reason?: string;
20
- errors?: unknown;
21
- status?: number;
22
- }
23
- export declare class PixivApiCore {
24
- private readonly baseUrl;
25
- private readonly userAgent;
26
- private readonly defaultTimeoutMs;
27
- private readonly maxRetries;
28
- private readonly rateLimitPerSecond;
29
- private readonly proxyUrl;
30
- private readonly getAccessToken?;
31
- private readonly proxyAgent?;
32
- private readonly socksAgent?;
33
- private readonly useAxiosForProxy;
34
- private readonly axiosInstance?;
35
- private readonly rateLimiter?;
36
- constructor(options?: PixivApiCoreOptions);
37
- request<T = any>(path: string, init?: RequestInit & {
38
- skipAuth?: boolean;
39
- responseType?: 'json' | 'text';
40
- }): Promise<T>;
41
- downloadBinary(pathOrUrl: string, init?: RequestInit & {
42
- timeoutMs?: number;
43
- }): Promise<ArrayBuffer>;
44
- calculateRateLimitWaitTime(): number;
45
- processResponse<T>(response: Response, url: string, attempt: number, responseType?: 'json' | 'text'): Promise<T>;
46
- private parseRetryAfterHeader;
47
- private resolveUrl;
48
- private exponentialBackoffMs;
49
- private backoffWaitMs;
50
- private tryReadText;
51
- }
52
- //# sourceMappingURL=PixivApiCore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PixivApiCore.d.ts","sourceRoot":"","sources":["../../../src/pixiv/client/PixivApiCore.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAChD,mFAAmF;IACnF,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAiC;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAuB;gBAExC,OAAO,GAAE,mBAAwB;IAmEvC,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAwHvH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA0I1G,0BAA0B,IAAI,MAAM;IAK9B,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAmDtH,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,aAAa;YASP,WAAW;CAO1B"}