pixivflow 2.23.0 → 2.25.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.
- package/dist/download/FileService.d.ts +10 -0
- package/dist/download/FileService.js +6 -0
- package/dist/download/NovelDownloader.js +68 -0
- package/dist/download/novelMarkers.d.ts +62 -0
- package/dist/download/novelMarkers.js +144 -0
- package/dist/interfaces/IFileService.d.ts +4 -0
- package/dist/notification/NotificationPolicy.js +18 -5
- package/dist/package.json +1 -1
- package/dist/version.js +1 -1
- package/dist/webui/package.json +1 -1
- package/node_modules/@redtidev/pixiv-client/dist/app-api/novels.d.ts.map +1 -1
- package/node_modules/@redtidev/pixiv-client/dist/app-api/novels.js +18 -2
- package/node_modules/@redtidev/pixiv-client/dist/app-api/novels.js.map +1 -1
- package/node_modules/@redtidev/pixiv-client/dist/index.d.ts +1 -1
- package/node_modules/@redtidev/pixiv-client/dist/index.d.ts.map +1 -1
- package/node_modules/@redtidev/pixiv-client/dist/index.js.map +1 -1
- package/node_modules/@redtidev/pixiv-client/dist/models/index.d.ts +40 -4
- package/node_modules/@redtidev/pixiv-client/dist/models/index.d.ts.map +1 -1
- package/node_modules/@redtidev/pixiv-client/src/app-api/novels.ts +28 -2
- package/node_modules/@redtidev/pixiv-client/src/index.ts +3 -0
- package/node_modules/@redtidev/pixiv-client/src/models/index.ts +34 -4
- package/package.json +2 -2
|
@@ -31,12 +31,22 @@ export interface PixivMetadata {
|
|
|
31
31
|
name: string;
|
|
32
32
|
is_chinese: boolean;
|
|
33
33
|
};
|
|
34
|
+
assets?: Array<{
|
|
35
|
+
marker: string;
|
|
36
|
+
kind: 'uploadedimage' | 'pixivimage';
|
|
37
|
+
sourceId: string;
|
|
38
|
+
url?: string;
|
|
39
|
+
localPath?: string;
|
|
40
|
+
status: 'pending' | 'downloaded' | 'failed' | 'unavailable';
|
|
41
|
+
failureReason?: string;
|
|
42
|
+
}>;
|
|
34
43
|
}
|
|
35
44
|
export declare class FileService implements IFileService {
|
|
36
45
|
private readonly storage;
|
|
37
46
|
constructor(storage: StorageConfig);
|
|
38
47
|
initialise(): Promise<void>;
|
|
39
48
|
saveImage(buffer: ArrayBuffer, fileName: string, metadata?: FileMetadata): Promise<string>;
|
|
49
|
+
saveBinary(buffer: ArrayBuffer, fileName: string, directory: string): Promise<string>;
|
|
40
50
|
saveText(content: string, fileName: string, metadata?: FileMetadata): Promise<string>;
|
|
41
51
|
private static readonly MAX_FILENAME_BYTES;
|
|
42
52
|
sanitizeFileName(name: string): string;
|
|
@@ -27,6 +27,12 @@ class FileService {
|
|
|
27
27
|
await node_fs_1.promises.writeFile(uniquePath, Buffer.from(buffer));
|
|
28
28
|
return uniquePath;
|
|
29
29
|
}
|
|
30
|
+
async saveBinary(buffer, fileName, directory) {
|
|
31
|
+
await (0, fs_1.ensureDir)(directory);
|
|
32
|
+
const uniquePath = await this.findUniquePath(directory, fileName);
|
|
33
|
+
await node_fs_1.promises.writeFile(uniquePath, Buffer.from(buffer));
|
|
34
|
+
return uniquePath;
|
|
35
|
+
}
|
|
30
36
|
async saveText(content, fileName, metadata) {
|
|
31
37
|
const baseDirectory = this.storage.novelDirectory ?? this.storage.downloadDirectory;
|
|
32
38
|
const organizationMode = this.storage.novelOrganization ?? 'flat';
|
|
@@ -35,7 +35,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.NovelDownloader = void 0;
|
|
37
37
|
const logger_1 = require("../logger");
|
|
38
|
+
const node_path_1 = require("node:path");
|
|
38
39
|
const language_detection_1 = require("../utils/language-detection");
|
|
40
|
+
const novelMarkers_1 = require("./novelMarkers");
|
|
39
41
|
const LANGUAGE_CACHE_TTL_MS = 7 * 24 * 60 * 60 * 1000;
|
|
40
42
|
class NovelDownloader {
|
|
41
43
|
client;
|
|
@@ -156,6 +158,45 @@ class NovelDownloader {
|
|
|
156
158
|
date: detail.create_date ? new Date(detail.create_date) : new Date(),
|
|
157
159
|
};
|
|
158
160
|
const filePath = await this.fileService.saveText(content, fileName, metadata);
|
|
161
|
+
const assets = typeof textResponse === 'string'
|
|
162
|
+
? []
|
|
163
|
+
: (0, novelMarkers_1.extractNovelAssets)(text, textResponse);
|
|
164
|
+
const hadImages = assets.length > 0;
|
|
165
|
+
const pendingAssets = assets.filter((a) => Boolean(a.url));
|
|
166
|
+
if (pendingAssets.length) {
|
|
167
|
+
const imagesDir = (0, node_path_1.join)((0, node_path_1.dirname)(filePath), 'images');
|
|
168
|
+
for (const asset of pendingAssets) {
|
|
169
|
+
try {
|
|
170
|
+
const buffer = await this.client.downloadImage(asset.url);
|
|
171
|
+
asset.localPath = await this.fileService.saveBinary(buffer, novelAssetFileName(asset), imagesDir);
|
|
172
|
+
asset.status = 'downloaded';
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
asset.status = 'failed';
|
|
176
|
+
asset.failureReason = error instanceof Error ? error.message : String(error);
|
|
177
|
+
logger_1.logger.warn(`Failed to download novel inline image ${asset.sourceId} for novel ${detail.id}`, {
|
|
178
|
+
novelId: detail.id,
|
|
179
|
+
sourceId: asset.sourceId,
|
|
180
|
+
reason: asset.failureReason,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (hadImages) {
|
|
185
|
+
logger_1.logger.info(`Novel ${detail.id} inline images: ${assets.filter((a) => a.status === 'downloaded').length}/${assets.length} downloaded`, { novelId: detail.id });
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// Rich-media markdown sidecar (RFC 1 Phase 2): same path as the .txt
|
|
189
|
+
// (compat format stays), inline images become relative 
|
|
190
|
+
// refs so a later TelePress/TelePost phase can render the Telegraph page.
|
|
191
|
+
if (assets.some((a) => a.status === 'downloaded')) {
|
|
192
|
+
try {
|
|
193
|
+
const mdPath = await this.fileService.saveText(`${header}\n${(0, novelMarkers_1.renderNovelMarkdown)(text, assets)}`, fileName.replace(/\.txt$/, '.md'), metadata);
|
|
194
|
+
logger_1.logger.info(`Saved novel ${detail.id} rich-media markdown sidecar`, { filePath: mdPath });
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
logger_1.logger.warn(`Failed to save rich-media markdown sidecar for novel ${detail.id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
159
200
|
const pixivMetadata = {
|
|
160
201
|
pixiv_id: detail.id,
|
|
161
202
|
title: detail.title,
|
|
@@ -181,6 +222,19 @@ class NovelDownloader {
|
|
|
181
222
|
},
|
|
182
223
|
}
|
|
183
224
|
: {}),
|
|
225
|
+
...(assets.length
|
|
226
|
+
? {
|
|
227
|
+
assets: assets.map((a) => ({
|
|
228
|
+
marker: a.marker,
|
|
229
|
+
kind: a.kind,
|
|
230
|
+
sourceId: a.sourceId,
|
|
231
|
+
url: a.url,
|
|
232
|
+
localPath: a.localPath,
|
|
233
|
+
status: a.status,
|
|
234
|
+
failureReason: a.failureReason,
|
|
235
|
+
})),
|
|
236
|
+
}
|
|
237
|
+
: {}),
|
|
184
238
|
};
|
|
185
239
|
let metadataPath;
|
|
186
240
|
try {
|
|
@@ -222,4 +276,18 @@ class NovelDownloader {
|
|
|
222
276
|
}
|
|
223
277
|
}
|
|
224
278
|
exports.NovelDownloader = NovelDownloader;
|
|
279
|
+
function novelAssetFileName(asset) {
|
|
280
|
+
let ext = '';
|
|
281
|
+
try {
|
|
282
|
+
const pathname = new URL(asset.url).pathname;
|
|
283
|
+
const last = pathname.split('/').pop() || '';
|
|
284
|
+
const dot = last.lastIndexOf('.');
|
|
285
|
+
if (dot >= 0)
|
|
286
|
+
ext = last.slice(dot);
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
// fall through: no extension
|
|
290
|
+
}
|
|
291
|
+
return `${asset.sourceId}${ext}` || asset.sourceId;
|
|
292
|
+
}
|
|
225
293
|
//# sourceMappingURL=NovelDownloader.js.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { PixivNovelTextResponse } from '@redtidev/pixiv-client';
|
|
2
|
+
/**
|
|
3
|
+
* Single-pass novel text tokenizer, ported from PixEz
|
|
4
|
+
* (Notsfsssf/pixez-flutter lib/page/novel/viewer/image_text.dart,
|
|
5
|
+
* NovelSpansGenerator.buildSpans). Same endpoint + same extraction path as
|
|
6
|
+
* PixivFlow's webview fallback; keeps the `[[...]]` double-bracket close rule so
|
|
7
|
+
* URLs/etc. inside jumpuri/ruby markers are not truncated early.
|
|
8
|
+
*/
|
|
9
|
+
export type NovelMarker = {
|
|
10
|
+
type: 'text';
|
|
11
|
+
value: string;
|
|
12
|
+
} | {
|
|
13
|
+
type: 'newpage';
|
|
14
|
+
raw: string;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'chapter';
|
|
17
|
+
raw: string;
|
|
18
|
+
title: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: 'pixivimage';
|
|
21
|
+
raw: string;
|
|
22
|
+
key: string;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'uploadedimage';
|
|
25
|
+
raw: string;
|
|
26
|
+
key: string;
|
|
27
|
+
} | {
|
|
28
|
+
type: 'jumpuri';
|
|
29
|
+
raw: string;
|
|
30
|
+
url?: string;
|
|
31
|
+
} | {
|
|
32
|
+
type: 'ruby';
|
|
33
|
+
raw: string;
|
|
34
|
+
reading: string;
|
|
35
|
+
};
|
|
36
|
+
export interface NovelAsset {
|
|
37
|
+
marker: string;
|
|
38
|
+
kind: 'uploadedimage' | 'pixivimage';
|
|
39
|
+
sourceId: string;
|
|
40
|
+
url?: string;
|
|
41
|
+
localPath?: string;
|
|
42
|
+
status: 'pending' | 'downloaded' | 'failed' | 'unavailable';
|
|
43
|
+
failureReason?: string;
|
|
44
|
+
}
|
|
45
|
+
export declare function scanNovelMarkers(source: string): NovelMarker[];
|
|
46
|
+
/**
|
|
47
|
+
* Build the ordered set of inline image assets referenced by the novel text.
|
|
48
|
+
* `unavailable` = the source is missing in the webview payload (deleted/no
|
|
49
|
+
* permission) so it will never succeed; `pending` = resolvable + downloadable.
|
|
50
|
+
*/
|
|
51
|
+
export declare function extractNovelAssets(text: string, response?: Pick<PixivNovelTextResponse, 'images' | 'illusts'>): NovelAsset[];
|
|
52
|
+
/** Minimal self-check for the scanner's double-bracket handling. */
|
|
53
|
+
export declare function demo(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Rich-media Markdown sidecar (RFC 1 Phase 2). Rebuilds the novel body with
|
|
56
|
+
* each downloaded inline resource as a relative `` reference
|
|
57
|
+
* (the `.txt` file remains the authoritative/compat format and its path is
|
|
58
|
+
* unchanged). Markers whose asset is `unavailable`/`failed` are left in the
|
|
59
|
+
* original text so nothing is silently dropped (partial success).
|
|
60
|
+
*/
|
|
61
|
+
export declare function renderNovelMarkdown(source: string, assets: NovelAsset[]): string;
|
|
62
|
+
//# sourceMappingURL=novelMarkers.d.ts.map
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scanNovelMarkers = scanNovelMarkers;
|
|
4
|
+
exports.extractNovelAssets = extractNovelAssets;
|
|
5
|
+
exports.demo = demo;
|
|
6
|
+
exports.renderNovelMarkdown = renderNovelMarkdown;
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const linkRegex = /https?:\/\/\S+/;
|
|
9
|
+
function parseMarker(span) {
|
|
10
|
+
if (span.startsWith('[newpage]'))
|
|
11
|
+
return { type: 'newpage', raw: span };
|
|
12
|
+
if (span.startsWith('[chapter:')) {
|
|
13
|
+
return { type: 'chapter', raw: span, title: span.slice('[chapter:'.length, -1) };
|
|
14
|
+
}
|
|
15
|
+
if (span.startsWith('[pixivimage:')) {
|
|
16
|
+
return { type: 'pixivimage', raw: span, key: span.slice('[pixivimage:'.length, -1) };
|
|
17
|
+
}
|
|
18
|
+
if (span.startsWith('[uploadedimage:')) {
|
|
19
|
+
return { type: 'uploadedimage', raw: span, key: span.slice('[uploadedimage:'.length, -1) };
|
|
20
|
+
}
|
|
21
|
+
if (span.startsWith('[[jumpuri:')) {
|
|
22
|
+
const body = span.slice('[[jumpuri:'.length, span.endsWith(']]') ? -2 : -1);
|
|
23
|
+
return { type: 'jumpuri', raw: span, url: body.match(linkRegex)?.[0] };
|
|
24
|
+
}
|
|
25
|
+
if (span.startsWith('[[rb:')) {
|
|
26
|
+
const reading = span.slice('[[rb:'.length, span.endsWith(']]') ? -2 : -1);
|
|
27
|
+
return { type: 'ruby', raw: span, reading };
|
|
28
|
+
}
|
|
29
|
+
return { type: 'text', value: span };
|
|
30
|
+
}
|
|
31
|
+
function scanNovelMarkers(source) {
|
|
32
|
+
const result = [];
|
|
33
|
+
let now = '';
|
|
34
|
+
for (const ch of source) {
|
|
35
|
+
if (ch === '[') {
|
|
36
|
+
if (!now) {
|
|
37
|
+
now = ch;
|
|
38
|
+
}
|
|
39
|
+
else if (now === '[') {
|
|
40
|
+
now += ch;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
result.push(parseMarker(now));
|
|
44
|
+
now = ch;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (ch === ']') {
|
|
48
|
+
if (now.startsWith('[[')) {
|
|
49
|
+
if (now.endsWith(']')) {
|
|
50
|
+
now += ch;
|
|
51
|
+
result.push(parseMarker(now));
|
|
52
|
+
now = '';
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
now += ch;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
now += ch;
|
|
60
|
+
result.push(parseMarker(now));
|
|
61
|
+
now = '';
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
now += ch;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (now)
|
|
69
|
+
result.push(parseMarker(now));
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
function uploadedImageUrl(img) {
|
|
73
|
+
if (!img?.urls)
|
|
74
|
+
return undefined;
|
|
75
|
+
return img.urls.original ?? img.urls.the1200X1200 ?? img.urls.the480Mw ?? img.urls.the240Mw ?? img.urls.the128X128;
|
|
76
|
+
}
|
|
77
|
+
function illustImageUrl(ref) {
|
|
78
|
+
if (!ref?.illust?.images)
|
|
79
|
+
return undefined;
|
|
80
|
+
return ref.illust.images.original ?? ref.illust.images.medium ?? ref.illust.images.small;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Build the ordered set of inline image assets referenced by the novel text.
|
|
84
|
+
* `unavailable` = the source is missing in the webview payload (deleted/no
|
|
85
|
+
* permission) so it will never succeed; `pending` = resolvable + downloadable.
|
|
86
|
+
*/
|
|
87
|
+
function extractNovelAssets(text, response) {
|
|
88
|
+
const assets = [];
|
|
89
|
+
for (const marker of scanNovelMarkers(text)) {
|
|
90
|
+
if (marker.type === 'uploadedimage') {
|
|
91
|
+
const url = uploadedImageUrl(response?.images?.[marker.key]);
|
|
92
|
+
assets.push({
|
|
93
|
+
marker: marker.raw,
|
|
94
|
+
kind: 'uploadedimage',
|
|
95
|
+
sourceId: marker.key,
|
|
96
|
+
url,
|
|
97
|
+
status: url ? 'pending' : 'unavailable',
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
else if (marker.type === 'pixivimage') {
|
|
101
|
+
const url = illustImageUrl(response?.illusts?.[marker.key]);
|
|
102
|
+
assets.push({
|
|
103
|
+
marker: marker.raw,
|
|
104
|
+
kind: 'pixivimage',
|
|
105
|
+
sourceId: marker.key,
|
|
106
|
+
url,
|
|
107
|
+
status: url ? 'pending' : 'unavailable',
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return assets;
|
|
112
|
+
}
|
|
113
|
+
/** Minimal self-check for the scanner's double-bracket handling. */
|
|
114
|
+
function demo() {
|
|
115
|
+
const { assert } = require('node:assert');
|
|
116
|
+
for (const s of [
|
|
117
|
+
'before [uploadedimage:11] after',
|
|
118
|
+
'[[jumpuri:Title > https://example.com/a]] tail',
|
|
119
|
+
'mixed [pixivimage:12551-1] and [[rb:漢字>かな]] done',
|
|
120
|
+
]) {
|
|
121
|
+
assert(Array.isArray(scanNovelMarkers(s)) && scanNovelMarkers(s).length > 0, 'markers parsed');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Rich-media Markdown sidecar (RFC 1 Phase 2). Rebuilds the novel body with
|
|
126
|
+
* each downloaded inline resource as a relative `` reference
|
|
127
|
+
* (the `.txt` file remains the authoritative/compat format and its path is
|
|
128
|
+
* unchanged). Markers whose asset is `unavailable`/`failed` are left in the
|
|
129
|
+
* original text so nothing is silently dropped (partial success).
|
|
130
|
+
*/
|
|
131
|
+
function renderNovelMarkdown(source, assets) {
|
|
132
|
+
const downloaded = new Map(assets
|
|
133
|
+
.filter((a) => a.status === 'downloaded' && Boolean(a.localPath))
|
|
134
|
+
.map((a) => [a.marker, a]));
|
|
135
|
+
return scanNovelMarkers(source)
|
|
136
|
+
.map((marker) => {
|
|
137
|
+
if (marker.type === 'text')
|
|
138
|
+
return marker.value;
|
|
139
|
+
const asset = downloaded.get(marker.raw);
|
|
140
|
+
return asset ? `(asset.localPath)})` : marker.raw;
|
|
141
|
+
})
|
|
142
|
+
.join('');
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=novelMarkers.js.map
|
|
@@ -16,6 +16,10 @@ export interface IFileService {
|
|
|
16
16
|
* Save text file (novel)
|
|
17
17
|
*/
|
|
18
18
|
saveText(content: string, fileName: string, metadata?: FileMetadata): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Save a binary asset into an explicit directory (e.g. novel inline images).
|
|
21
|
+
*/
|
|
22
|
+
saveBinary(buffer: ArrayBuffer, fileName: string, directory: string): Promise<string>;
|
|
19
23
|
/**
|
|
20
24
|
* Sanitize file name
|
|
21
25
|
*/
|
|
@@ -50,12 +50,18 @@ class NotificationPolicy {
|
|
|
50
50
|
};
|
|
51
51
|
noteOutcome(slotId, slot, schedule, target, outcome) {
|
|
52
52
|
const name = this.targetName(target);
|
|
53
|
-
if (!name)
|
|
53
|
+
if (!name) {
|
|
54
|
+
logger_1.logger.debug('Notification skipped: target has no delivery target name', {
|
|
55
|
+
targetId: target.id ?? target.filterTag ?? target.tag ?? target.type,
|
|
56
|
+
});
|
|
54
57
|
return;
|
|
58
|
+
}
|
|
55
59
|
// No notifiable endpoint configured: drop the notification instead of
|
|
56
60
|
// enqueuing it against a submission target that will reject it forever.
|
|
57
|
-
if (!this.notifiableTargets().has(name))
|
|
61
|
+
if (!this.notifiableTargets().has(name)) {
|
|
62
|
+
logger_1.logger.debug(`Notification skipped for ${name}: no notifiable endpoint configured`, { targetName: name });
|
|
58
63
|
return;
|
|
64
|
+
}
|
|
59
65
|
const label = target.id || target.filterTag || target.tag || target.type;
|
|
60
66
|
if (outcome.kind === 'no_candidate' && target.noMatchPolicy?.notify === true) {
|
|
61
67
|
this.send(name, NotificationPolicy.keys.noMatch(slotId, target.id ?? label), [
|
|
@@ -77,8 +83,16 @@ class NotificationPolicy {
|
|
|
77
83
|
}
|
|
78
84
|
/** One consolidated summary per slot, delivered to every notifying target's endpoint. */
|
|
79
85
|
sendSlotSummary(slot, schedule, rows) {
|
|
80
|
-
if (slot.manualRequestId || rows.length === 0
|
|
86
|
+
if (slot.manualRequestId || rows.length === 0)
|
|
81
87
|
return;
|
|
88
|
+
const nonSummaryRows = rows.filter((r) => !['submitted', 'no_candidate', 'duplicate', 'failed'].includes(r.status));
|
|
89
|
+
if (nonSummaryRows.length) {
|
|
90
|
+
logger_1.logger.warn(`Slot summary skipped: ${nonSummaryRows.length} row(s) with non-summarizable status`, {
|
|
91
|
+
slotId: slot.slotId,
|
|
92
|
+
targets: nonSummaryRows.map((r) => ({ targetId: r.targetId, status: r.status })),
|
|
93
|
+
});
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
82
96
|
const memberIds = new Set(rows.map((r) => r.targetId));
|
|
83
97
|
const targets = this.targetsWithUrl('scheduleOutcomeUrl', memberIds);
|
|
84
98
|
if (targets.size === 0)
|
|
@@ -174,8 +188,7 @@ class NotificationPolicy {
|
|
|
174
188
|
}
|
|
175
189
|
catch (error) {
|
|
176
190
|
// Durable enqueue failure must not unwind the content run.
|
|
177
|
-
|
|
178
|
-
console.warn('notification enqueue failed', { targetName, key, error: error.message });
|
|
191
|
+
logger_1.logger.warn('notification enqueue failed', { targetName, key, error: error.message });
|
|
179
192
|
}
|
|
180
193
|
}
|
|
181
194
|
/**
|
package/dist/package.json
CHANGED
package/dist/version.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BUILD = void 0;
|
|
4
4
|
// GENERATED by scripts/write-version.js — do not edit manually.
|
|
5
|
-
exports.BUILD = { version: '2.
|
|
5
|
+
exports.BUILD = { version: '2.25.0', commit: '532ba3534889' };
|
|
6
6
|
//# sourceMappingURL=version.js.map
|
package/dist/webui/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novels.d.ts","sourceRoot":"","sources":["../../src/app-api/novels.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAa,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"novels.d.ts","sourceRoot":"","sources":["../../src/app-api/novels.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAa,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAiBvH,iFAAiF;AACjF,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAEjD,kCAAkC;IAC5B,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAI1D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAQnE;;;OAGG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC;IAiBxG,gEAAgE;IAC1D,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAavE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAgBxH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAajF,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAE,cAAmB,EAAE,MAAM,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAgBnI,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAapF,UAAU,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAuBzG,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAanE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA6B/E;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA4E/H,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.NovelsApi = void 0;
|
|
4
4
|
const errors_1 = require("../errors/errors");
|
|
5
5
|
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';
|
|
6
|
+
function isRecord(v) {
|
|
7
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
8
|
+
}
|
|
6
9
|
/** Novel endpoints of the Pixiv public App API (+ required webview fallback). */
|
|
7
10
|
class NovelsApi {
|
|
8
11
|
transport;
|
|
@@ -186,8 +189,21 @@ class NovelsApi {
|
|
|
186
189
|
if (end !== -1) {
|
|
187
190
|
const parsed = JSON.parse(html.slice(from, end));
|
|
188
191
|
const text = this.nonEmptyText(parsed?.text);
|
|
189
|
-
if (text)
|
|
190
|
-
return {
|
|
192
|
+
if (text) {
|
|
193
|
+
return {
|
|
194
|
+
novel_text: text,
|
|
195
|
+
coverUrl: typeof parsed.coverUrl === 'string' ? parsed.coverUrl : undefined,
|
|
196
|
+
seriesNavigation: isRecord(parsed.seriesNavigation)
|
|
197
|
+
? parsed.seriesNavigation
|
|
198
|
+
: undefined,
|
|
199
|
+
images: isRecord(parsed.images)
|
|
200
|
+
? parsed.images
|
|
201
|
+
: undefined,
|
|
202
|
+
illusts: isRecord(parsed.illusts)
|
|
203
|
+
? parsed.illusts
|
|
204
|
+
: undefined,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
191
207
|
}
|
|
192
208
|
}
|
|
193
209
|
failures.push('webview returned no non-empty novel text');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novels.js","sourceRoot":"","sources":["../../src/app-api/novels.ts"],"names":[],"mappings":";;;AAAA,6CAAwF;AAKxF,MAAM,UAAU,GACd,iHAAiH,CAAC;AAEpH,iFAAiF;AACjF,MAAa,SAAS;IACS;IAA7B,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAErD,kCAAkC;IAClC,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,MAAoB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,MAAoB;QAC3C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACtC,6BAA6B,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAC7D,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAC1B,CAAC;QACF,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,EAAU,EAAE,MAAoB;QACnD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACtC,6BAA6B,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAC7D,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAC1B,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACtC,6BAA6B,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAC7D,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAC1B,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,gBAAgB,CAAC,EAAU,EAAE,MAAoB;QACrD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACtC,6BAA6B,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAC7D,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAC1B,CAAC;YACF,OAAO,GAAG,CAAC,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,MAAqB,EAAE,UAA4B,EAAE;QACvF,IAAI,GAAW,CAAC;QAChB,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,GAAG,MAAM,CAAC;QACf,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3E,IAAI,OAAO,CAAC,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACjE,GAAG,GAAG,mBAAmB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC/C,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAqD,GAAG,EAAE;YAChG,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,UAA4B,EAAE;QAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,GAAG,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACrD,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,MAAM;QAChC,CAAC,QAAQ,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE;QACvC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAsB,EAAE,UAA0B,EAAE,EAAE,SAAwB,IAAI;QAClG,IAAI,GAAW,CAAC;QAChB,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,GAAG,MAAM,CAAC;QACf,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACnD,GAAG,GAAG,qBAAqB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACjD,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAqD,GAAG,EAAE;YAChG,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAsB,EAAE,UAA0B,EAAE;QAChE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,GAAG,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3D,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,MAAM;QAChC,CAAC,QAAQ,MAAM,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;QAChE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA2B,EAAE,SAAwB,IAAI;QACxE,IAAI,GAAW,CAAC;QAChB,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,GAAG,MAAM,CAAC;QACf,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAA2B;gBACxC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,aAAa,EAAE,OAAO,CAAC,YAAY,IAAI,wBAAwB;aAChE,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;YAChD,IAAI,OAAO,CAAC,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACnE,IAAI,OAAO,CAAC,OAAO;gBAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7D,GAAG,GAAG,oBAAoB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QAChD,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAqD,GAAG,EAAE;YAChG,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA2B;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAkB,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;QACnD,GAAG,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACpD,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,MAAM;QAChC,CAAC,QAAQ,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE;QACvC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAoB;QAQrD,IAAI,UAAU,GAAW,8BAA8B,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,SAAS,CAAC;YACR,MAAM,GAAG,GAAmB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAiB,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAEhH,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,EAAE,cAAc,IAAI,GAAG,CAAC,cAAc,CAAC;YAC9E,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,MAAM,CAAC,IAAI,OAAO;oBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC5G,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,sBAAa,CAAC,sDAAsD,EAAE;oBAC9E,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,QAAQ;gBAAE,MAAM;YACzB,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC5B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,UAA+D,EAAE;QAC3F,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAC3C,wBAAwB,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,6BAA6B,EACxF,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC1C,CAAC;YACF,MAAM,MAAM,GAAG,SAAS,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;gBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACtC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;oBACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAuB,CAAC;oBACvE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC7C,IAAI,IAAI;wBAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBACxC,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACtC,2BAA2B,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAChE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC1C,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAChD,IAAI,IAAI;gBAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC;QAED,4EAA4E;QAC5E,MAAM,OAAO,GAAG,oCAAoC,OAAO,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAsE,OAAO,EAAE;gBACtH,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,OAAO,EAAE,wBAAwB;oBACjC,YAAY,EAAE,OAAO,CAAC,gBAAgB,IAAI,UAAU;iBACrD;gBACD,QAAQ,EAAE,IAAI;gBACd,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YACH,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,0BAAiB,CAAC,iCAAiC,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACnH,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,IAAI;gBAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,sBAAa,CAAC,yBAAyB,OAAO,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7G,CAAC;IAEO,SAAS,CAAC,KAAyC;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;QACvC,OAAO,EAAE,KAAK,EAAE,IAAkB,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IAEO,iBAAiB,CAAC,CAAU;QAClC,OAAO,CAAC,YAAY,2BAAkB,IAAI,CAAC,CAAC,YAAY,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAChG,CAAC;IAEO,YAAY,CAAC,KAAc;QACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC;IAEO,SAAS,CAAC,KAAc;QAC9B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;CACF;AAnQD,8BAmQC"}
|
|
1
|
+
{"version":3,"file":"novels.js","sourceRoot":"","sources":["../../src/app-api/novels.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export type { TransportConfig } from './transport/transport';
|
|
|
16
16
|
export { paginate, firstPage } from './pagination';
|
|
17
17
|
export { IllustrationsApi, NovelsApi, TagsApi, MediaApi, UsersApi, } from './app-api/exports';
|
|
18
18
|
export type { IllustSearchOptions, NovelSearchOptions, RankingOptions, UserWorksOptions, IllustRankingMode, NovelRankingMode, SearchSort, SearchTarget, OnePageResult, } from './app-api/options';
|
|
19
|
-
export type { PixivUser, PixivTag, PixivIllust, PixivIllustPage, PixivNovel, PixivNovelTextResponse, UgoiraFrame, UgoiraMetadata, Paginated, PixivListResponse, } from './models';
|
|
19
|
+
export type { PixivUser, PixivTag, PixivIllust, PixivIllustPage, PixivNovel, PixivNovelTextResponse, PixivNovelUploadedImage, PixivNovelIllustRef, NovelSeriesNavItem, UgoiraFrame, UgoiraMetadata, Paginated, PixivListResponse, } from './models';
|
|
20
20
|
export type { PixivClientOptions, ProxyOptions, RateLimitOptions, RateLimitState, RateLimitStateStore, RateLimitStatus, RequestOptions, PaginationOptions, KitEvent, KitEventListener, FetchLike, ResponseLike, } from './types';
|
|
21
21
|
export { silentLogger } from './logger';
|
|
22
22
|
export type { KitLogger } from './logger';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,eAAe,EACf,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,SAAS,EACT,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EACL,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,eAAe,EACf,UAAU,EACV,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,SAAS,EACT,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EACL,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,mCAA0D;AAAjD,qGAAA,WAAW,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAGvC,sCAAkE;AAAzD,4GAAA,mBAAmB,OAAA;AAAE,sGAAA,aAAa,OAAA;AAG3C,4DAKoC;AAJlC,8GAAA,aAAa,OAAA;AACb,0HAAA,yBAAyB,OAAA;AACzB,mHAAA,kBAAkB,OAAA;AAClB,gHAAA,eAAe,OAAA;AAEjB,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAElB,2CAAmD;AAA1C,sGAAA,QAAQ,OAAA;AAAE,uGAAA,SAAS,OAAA;AAE5B,6CAM2B;AALzB,2GAAA,gBAAgB,OAAA;AAChB,oGAAA,SAAS,OAAA;AACT,kGAAA,OAAO,OAAA;AACP,mGAAA,QAAQ,OAAA;AACR,mGAAA,QAAQ,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,mCAA0D;AAAjD,qGAAA,WAAW,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAGvC,sCAAkE;AAAzD,4GAAA,mBAAmB,OAAA;AAAE,sGAAA,aAAa,OAAA;AAG3C,4DAKoC;AAJlC,8GAAA,aAAa,OAAA;AACb,0HAAA,yBAAyB,OAAA;AACzB,mHAAA,kBAAkB,OAAA;AAClB,gHAAA,eAAe,OAAA;AAEjB,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAElB,2CAAmD;AAA1C,sGAAA,QAAQ,OAAA;AAAE,uGAAA,SAAS,OAAA;AAE5B,6CAM2B;AALzB,2GAAA,gBAAgB,OAAA;AAChB,oGAAA,SAAS,OAAA;AACT,kGAAA,OAAO,OAAA;AACP,mGAAA,QAAQ,OAAA;AACR,mGAAA,QAAQ,OAAA;AA6CV,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AAGrB,0CAcyB;AAbvB,oGAAA,UAAU,OAAA;AACV,wGAAA,cAAc,OAAA;AACd,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,6GAAA,mBAAmB,OAAA;AACnB,kHAAA,wBAAwB,OAAA;AACxB,6GAAA,mBAAmB,OAAA;AACnB,4GAAA,kBAAkB,OAAA;AAClB,0GAAA,gBAAgB,OAAA;AAChB,+GAAA,qBAAqB,OAAA;AACrB,yGAAA,eAAe,OAAA;AACf,uGAAA,aAAa,OAAA;AACb,sGAAA,YAAY,OAAA"}
|
|
@@ -80,12 +80,48 @@ export interface PixivNovel {
|
|
|
80
80
|
}
|
|
81
81
|
export interface PixivNovelTextResponse {
|
|
82
82
|
novel_text: string;
|
|
83
|
-
/**
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
/** Cover thumbnail URL (webview v2 novel: block). */
|
|
84
|
+
coverUrl?: string;
|
|
85
|
+
/** Previous/next series navigation (webview v2 novel: block). */
|
|
86
|
+
seriesNavigation?: {
|
|
87
|
+
nextNovel?: NovelSeriesNavItem;
|
|
88
|
+
prevNovel?: NovelSeriesNavItem;
|
|
89
|
+
};
|
|
90
|
+
/** Uploaded inline images, keyed by `[uploadedimage:KEY]` marker id. */
|
|
91
|
+
images?: Record<string, PixivNovelUploadedImage>;
|
|
92
|
+
/** Referenced published illusts, keyed by `[pixivimage:KEY]` marker id; null = deleted/no permission. */
|
|
93
|
+
illusts?: Record<string, PixivNovelIllustRef | null>;
|
|
94
|
+
/** Other endpoint-specific fields (v1/webaudio fallbacks); hosts must not depend on them. */
|
|
87
95
|
[key: string]: unknown;
|
|
88
96
|
}
|
|
97
|
+
/** Author-uploaded inline image in the webview v2 novel: block. */
|
|
98
|
+
export interface PixivNovelUploadedImage {
|
|
99
|
+
novelImageId?: string;
|
|
100
|
+
urls: {
|
|
101
|
+
the128X128?: string;
|
|
102
|
+
the240Mw?: string;
|
|
103
|
+
the480Mw?: string;
|
|
104
|
+
the1200X1200?: string;
|
|
105
|
+
original?: string;
|
|
106
|
+
[k: string]: string | undefined;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/** Referenced published illust (webview v2 novel: block). */
|
|
110
|
+
export interface PixivNovelIllustRef {
|
|
111
|
+
illust: {
|
|
112
|
+
images: {
|
|
113
|
+
small?: string;
|
|
114
|
+
medium?: string;
|
|
115
|
+
original?: string;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export interface NovelSeriesNavItem {
|
|
120
|
+
id: number;
|
|
121
|
+
viewable: boolean;
|
|
122
|
+
title?: string;
|
|
123
|
+
coverUrl?: string;
|
|
124
|
+
}
|
|
89
125
|
export interface UgoiraFrame {
|
|
90
126
|
file: string;
|
|
91
127
|
delay: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,18 @@ import type { NovelRankingMode, NovelSearchOptions, OnePageResult, RankingOption
|
|
|
6
6
|
const BROWSER_UA =
|
|
7
7
|
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126 Safari/537.36';
|
|
8
8
|
|
|
9
|
+
type WebviewNovelJson = {
|
|
10
|
+
text?: unknown;
|
|
11
|
+
coverUrl?: unknown;
|
|
12
|
+
seriesNavigation?: unknown;
|
|
13
|
+
images?: unknown;
|
|
14
|
+
illusts?: unknown;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
function isRecord(v: unknown): v is Record<string, unknown> {
|
|
18
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
19
|
+
}
|
|
20
|
+
|
|
9
21
|
/** Novel endpoints of the Pixiv public App API (+ required webview fallback). */
|
|
10
22
|
export class NovelsApi {
|
|
11
23
|
constructor(private readonly transport: Transport) {}
|
|
@@ -201,9 +213,23 @@ export class NovelsApi {
|
|
|
201
213
|
const from = start + marker.length;
|
|
202
214
|
const end = html.indexOf(',\n', from);
|
|
203
215
|
if (end !== -1) {
|
|
204
|
-
const parsed = JSON.parse(html.slice(from, end)) as
|
|
216
|
+
const parsed = JSON.parse(html.slice(from, end)) as WebviewNovelJson;
|
|
205
217
|
const text = this.nonEmptyText(parsed?.text);
|
|
206
|
-
if (text)
|
|
218
|
+
if (text) {
|
|
219
|
+
return {
|
|
220
|
+
novel_text: text,
|
|
221
|
+
coverUrl: typeof parsed.coverUrl === 'string' ? parsed.coverUrl : undefined,
|
|
222
|
+
seriesNavigation: isRecord(parsed.seriesNavigation)
|
|
223
|
+
? parsed.seriesNavigation as PixivNovelTextResponse['seriesNavigation']
|
|
224
|
+
: undefined,
|
|
225
|
+
images: isRecord(parsed.images)
|
|
226
|
+
? parsed.images as PixivNovelTextResponse['images']
|
|
227
|
+
: undefined,
|
|
228
|
+
illusts: isRecord(parsed.illusts)
|
|
229
|
+
? parsed.illusts as PixivNovelTextResponse['illusts']
|
|
230
|
+
: undefined,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
207
233
|
}
|
|
208
234
|
}
|
|
209
235
|
failures.push('webview returned no non-empty novel text');
|
|
@@ -85,13 +85,43 @@ export interface PixivNovel {
|
|
|
85
85
|
|
|
86
86
|
export interface PixivNovelTextResponse {
|
|
87
87
|
novel_text: string;
|
|
88
|
-
/**
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
/** Cover thumbnail URL (webview v2 novel: block). */
|
|
89
|
+
coverUrl?: string;
|
|
90
|
+
/** Previous/next series navigation (webview v2 novel: block). */
|
|
91
|
+
seriesNavigation?: { nextNovel?: NovelSeriesNavItem; prevNovel?: NovelSeriesNavItem };
|
|
92
|
+
/** Uploaded inline images, keyed by `[uploadedimage:KEY]` marker id. */
|
|
93
|
+
images?: Record<string, PixivNovelUploadedImage>;
|
|
94
|
+
/** Referenced published illusts, keyed by `[pixivimage:KEY]` marker id; null = deleted/no permission. */
|
|
95
|
+
illusts?: Record<string, PixivNovelIllustRef | null>;
|
|
96
|
+
/** Other endpoint-specific fields (v1/webaudio fallbacks); hosts must not depend on them. */
|
|
92
97
|
[key: string]: unknown;
|
|
93
98
|
}
|
|
94
99
|
|
|
100
|
+
/** Author-uploaded inline image in the webview v2 novel: block. */
|
|
101
|
+
export interface PixivNovelUploadedImage {
|
|
102
|
+
novelImageId?: string;
|
|
103
|
+
urls: {
|
|
104
|
+
the128X128?: string;
|
|
105
|
+
the240Mw?: string;
|
|
106
|
+
the480Mw?: string;
|
|
107
|
+
the1200X1200?: string;
|
|
108
|
+
original?: string;
|
|
109
|
+
[k: string]: string | undefined;
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** Referenced published illust (webview v2 novel: block). */
|
|
114
|
+
export interface PixivNovelIllustRef {
|
|
115
|
+
illust: { images: { small?: string; medium?: string; original?: string } };
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface NovelSeriesNavItem {
|
|
119
|
+
id: number;
|
|
120
|
+
viewable: boolean;
|
|
121
|
+
title?: string;
|
|
122
|
+
coverUrl?: string;
|
|
123
|
+
}
|
|
124
|
+
|
|
95
125
|
export interface UgoiraFrame {
|
|
96
126
|
file: string;
|
|
97
127
|
delay: number;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pixivflow",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.25.0",
|
|
4
|
+
"description": "\ud83c\udfa8 Pixiv \u4e0b\u8f7d\u3001\u7b5b\u9009\u4e0e\u81ea\u52a8\u6536\u96c6\u5de5\u5177 - \u6279\u91cf\u4e0b\u8f7d\u63d2\u753b\u548c\u5c0f\u8bf4\u3001\u6309\u6807\u7b7e/\u70ed\u5ea6/\u65e5\u671f\u7b5b\u9009\u3001\u5b9a\u65f6\u4efb\u52a1\u4e0e\u53ef\u9760 HTTP \u4ea4\u4ed8 | Pixiv downloader and automation toolkit with filtering, scheduling and reliable HTTP delivery",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/redtidev1918/PixivFlow.git"
|