pixivflow 2.22.1 → 2.24.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/commands/SchedulerCommand.js +12 -3
- package/dist/commands/scheduler-runtime.d.ts +29 -0
- package/dist/commands/scheduler-runtime.js +54 -1
- package/dist/download/FileService.d.ts +10 -0
- package/dist/download/FileService.js +6 -0
- package/dist/download/NovelDownloader.js +56 -0
- package/dist/download/exec/DownloadExecutor.js +11 -2
- package/dist/download/handlers/IllustrationTargetHandler.js +15 -0
- package/dist/download/handlers/NovelTargetHandler.js +12 -2
- package/dist/download/novelMarkers.d.ts +54 -0
- package/dist/download/novelMarkers.js +122 -0
- package/dist/interfaces/IDatabase.d.ts +11 -0
- package/dist/interfaces/IFileService.d.ts +4 -0
- package/dist/logger.d.ts +24 -0
- package/dist/logger.js +88 -11
- package/dist/notification/NotificationPolicy.js +18 -5
- package/dist/observability/classify.d.ts +7 -0
- package/dist/observability/classify.js +51 -0
- package/dist/observability/context.d.ts +10 -0
- package/dist/observability/context.js +22 -0
- package/dist/observability/index.d.ts +7 -0
- package/dist/observability/index.js +36 -0
- package/dist/observability/types.d.ts +23 -0
- package/dist/observability/types.js +3 -0
- package/dist/package.json +1 -1
- package/dist/scheduler/RecoveryOutcome.d.ts +24 -0
- package/dist/scheduler/RecoveryOutcome.js +44 -0
- package/dist/scheduler/ScheduleTriggerServer.d.ts +4 -0
- package/dist/scheduler/SlotBusinessStatus.d.ts +32 -0
- package/dist/scheduler/SlotBusinessStatus.js +43 -0
- package/dist/scheduler/SlotCoordinator.d.ts +7 -0
- package/dist/scheduler/SlotCoordinator.js +13 -0
- package/dist/storage/Database.d.ts +4 -0
- package/dist/storage/Database.js +7 -0
- package/dist/storage/DatabaseMigration.js +21 -0
- package/dist/storage/repositories/SystemErrorRepository.d.ts +19 -0
- package/dist/storage/repositories/SystemErrorRepository.js +92 -0
- package/dist/version.js +1 -1
- package/dist/webui/package.json +1 -1
- package/dist/webui/routes/admin-logs.d.ts +3 -0
- package/dist/webui/routes/admin-logs.js +9 -0
- package/dist/webui/routes/handlers/admin-logs-handlers.d.ts +6 -0
- package/dist/webui/routes/handlers/admin-logs-handlers.js +106 -0
- package/dist/webui/routes/handlers/system-errors-handlers.d.ts +6 -0
- package/dist/webui/routes/handlers/system-errors-handlers.js +59 -0
- package/dist/webui/routes/system-errors.d.ts +3 -0
- package/dist/webui/routes/system-errors.js +9 -0
- package/dist/webui/server/server-routes.js +5 -0
- 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
|
@@ -222,6 +222,27 @@ class DatabaseMigration {
|
|
|
222
222
|
state TEXT NOT NULL,
|
|
223
223
|
updated_at INTEGER NOT NULL
|
|
224
224
|
)`,
|
|
225
|
+
// Durable error event ledger for observability (structured error
|
|
226
|
+
// taxonomy; populated by download/system handlers and shown in the
|
|
227
|
+
// admin API). Append-only until an operator marks a row resolved.
|
|
228
|
+
`CREATE TABLE IF NOT EXISTS system_errors (
|
|
229
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
230
|
+
service TEXT NOT NULL DEFAULT 'pixivflow',
|
|
231
|
+
component TEXT,
|
|
232
|
+
bot_id TEXT,
|
|
233
|
+
schedule_id TEXT,
|
|
234
|
+
slot_id TEXT,
|
|
235
|
+
pixiv_id TEXT,
|
|
236
|
+
stage TEXT,
|
|
237
|
+
error_type TEXT NOT NULL,
|
|
238
|
+
message TEXT,
|
|
239
|
+
http_status INTEGER,
|
|
240
|
+
retryable INTEGER NOT NULL DEFAULT 0,
|
|
241
|
+
trace_id TEXT,
|
|
242
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
243
|
+
resolved_at DATETIME
|
|
244
|
+
)`,
|
|
245
|
+
`CREATE INDEX IF NOT EXISTS idx_system_errors_bot_created ON system_errors(bot_id, created_at)`,
|
|
225
246
|
];
|
|
226
247
|
// Phase 1: create tables (idempotent). Must run before any PRAGMA-based
|
|
227
248
|
// column check, otherwise a fresh DB would report the table as missing and
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BaseRepository } from './BaseRepository';
|
|
2
|
+
import { SystemErrorInput, SystemErrorRow } from '../../observability/types';
|
|
3
|
+
export declare class SystemErrorRepository extends BaseRepository {
|
|
4
|
+
record(input: SystemErrorInput): void;
|
|
5
|
+
list(opts?: {
|
|
6
|
+
limit?: number;
|
|
7
|
+
errorType?: string;
|
|
8
|
+
botId?: string;
|
|
9
|
+
stage?: string;
|
|
10
|
+
resolved?: boolean;
|
|
11
|
+
from?: string;
|
|
12
|
+
to?: string;
|
|
13
|
+
}): SystemErrorRow[];
|
|
14
|
+
markResolved(id: number): {
|
|
15
|
+
changes: number;
|
|
16
|
+
};
|
|
17
|
+
countSince(botId: string | null, hours: number): number;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=SystemErrorRepository.d.ts.map
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SystemErrorRepository = void 0;
|
|
4
|
+
const BaseRepository_1 = require("./BaseRepository");
|
|
5
|
+
class SystemErrorRepository extends BaseRepository_1.BaseRepository {
|
|
6
|
+
record(input) {
|
|
7
|
+
this.db
|
|
8
|
+
.prepare(`INSERT INTO system_errors
|
|
9
|
+
(service, component, bot_id, schedule_id, slot_id, pixiv_id, stage, error_type, message, http_status, retryable, trace_id)
|
|
10
|
+
VALUES
|
|
11
|
+
(@service, @component, @botId, @scheduleId, @slotId, @pixivId, @stage, @errorType, @message, @httpStatus, @retryable, @traceId)`)
|
|
12
|
+
.run({
|
|
13
|
+
service: input.service ?? 'pixivflow',
|
|
14
|
+
component: input.component ?? null,
|
|
15
|
+
botId: input.bot_id ?? null,
|
|
16
|
+
scheduleId: input.schedule_id ?? null,
|
|
17
|
+
slotId: input.slot_id ?? null,
|
|
18
|
+
pixivId: input.pixiv_id ?? null,
|
|
19
|
+
stage: input.stage ?? null,
|
|
20
|
+
errorType: input.error_type ?? 'INTERNAL_ERROR',
|
|
21
|
+
message: input.message.slice(0, 5000),
|
|
22
|
+
httpStatus: input.http_status ?? null,
|
|
23
|
+
retryable: input.retryable ? 1 : 0,
|
|
24
|
+
traceId: input.trace_id ?? null,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
list(opts = {}) {
|
|
28
|
+
const where = [];
|
|
29
|
+
const params = [];
|
|
30
|
+
if (opts.errorType) {
|
|
31
|
+
where.push('error_type = ?');
|
|
32
|
+
params.push(opts.errorType);
|
|
33
|
+
}
|
|
34
|
+
if (opts.botId) {
|
|
35
|
+
where.push('bot_id = ?');
|
|
36
|
+
params.push(opts.botId);
|
|
37
|
+
}
|
|
38
|
+
if (opts.stage) {
|
|
39
|
+
where.push('stage = ?');
|
|
40
|
+
params.push(opts.stage);
|
|
41
|
+
}
|
|
42
|
+
if (typeof opts.resolved === 'boolean') {
|
|
43
|
+
where.push(opts.resolved ? 'resolved_at IS NOT NULL' : 'resolved_at IS NULL');
|
|
44
|
+
}
|
|
45
|
+
if (opts.from) {
|
|
46
|
+
where.push('created_at >= ?');
|
|
47
|
+
params.push(opts.from);
|
|
48
|
+
}
|
|
49
|
+
if (opts.to) {
|
|
50
|
+
where.push('created_at <= ?');
|
|
51
|
+
params.push(opts.to);
|
|
52
|
+
}
|
|
53
|
+
const limit = Math.max(1, Math.min(Number(opts.limit) || 50, 500));
|
|
54
|
+
const sql = `SELECT * FROM system_errors${where.length ? ' WHERE ' + where.join(' AND ') : ''} ORDER BY id DESC LIMIT ${limit}`;
|
|
55
|
+
return this.db.prepare(sql).all(...params).map(toRow);
|
|
56
|
+
}
|
|
57
|
+
markResolved(id) {
|
|
58
|
+
const info = this.db.prepare(`UPDATE system_errors SET resolved_at = CURRENT_TIMESTAMP WHERE id = ? AND resolved_at IS NULL`).run(id);
|
|
59
|
+
return { changes: Number(info.changes ?? 0) };
|
|
60
|
+
}
|
|
61
|
+
countSince(botId, hours) {
|
|
62
|
+
const cutoffMs = Date.now() - hours * 60 * 60 * 1000;
|
|
63
|
+
const cutoff = new Date(cutoffMs).toISOString().replace('T', ' ').slice(0, 19);
|
|
64
|
+
if (botId) {
|
|
65
|
+
const row = this.db.prepare(`SELECT COUNT(*) AS n FROM system_errors WHERE bot_id = ? AND created_at >= ?`).get(botId, cutoff);
|
|
66
|
+
return Number(row.n ?? 0);
|
|
67
|
+
}
|
|
68
|
+
const row = this.db.prepare(`SELECT COUNT(*) AS n FROM system_errors WHERE created_at >= ?`).get(cutoff);
|
|
69
|
+
return Number(row.n ?? 0);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.SystemErrorRepository = SystemErrorRepository;
|
|
73
|
+
function toRow(r) {
|
|
74
|
+
return {
|
|
75
|
+
id: Number(r.id),
|
|
76
|
+
service: r.service,
|
|
77
|
+
component: r.component ?? undefined,
|
|
78
|
+
bot_id: r.bot_id ?? undefined,
|
|
79
|
+
schedule_id: r.schedule_id ?? undefined,
|
|
80
|
+
slot_id: r.slot_id ?? undefined,
|
|
81
|
+
pixiv_id: r.pixiv_id ?? undefined,
|
|
82
|
+
stage: r.stage ?? undefined,
|
|
83
|
+
error_type: r.error_type,
|
|
84
|
+
message: r.message,
|
|
85
|
+
http_status: r.http_status ?? null,
|
|
86
|
+
retryable: Boolean(r.retryable),
|
|
87
|
+
trace_id: r.trace_id ?? undefined,
|
|
88
|
+
created_at: r.created_at,
|
|
89
|
+
resolved_at: r.resolved_at,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=SystemErrorRepository.js.map
|
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.24.0', commit: '8c7fa0a4b74b' };
|
|
6
6
|
//# sourceMappingURL=version.js.map
|
package/dist/webui/package.json
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const express_1 = require("express");
|
|
4
|
+
const admin_logs_handlers_1 = require("./handlers/admin-logs-handlers");
|
|
5
|
+
const router = (0, express_1.Router)();
|
|
6
|
+
router.get('/', admin_logs_handlers_1.getAdminLogs);
|
|
7
|
+
router.get('/download', admin_logs_handlers_1.downloadLogs);
|
|
8
|
+
exports.default = router;
|
|
9
|
+
//# sourceMappingURL=admin-logs.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Request, Response } from 'express';
|
|
2
|
+
/** GET /admin/logs — list log files (size + mtime) in the data dir. */
|
|
3
|
+
export declare function getAdminLogs(_req: Request, res: Response): Promise<void>;
|
|
4
|
+
/** GET /admin/logs/download[?service=&bot_id=&level=&stage=&from=&to=&file=] */
|
|
5
|
+
export declare function downloadLogs(req: Request, res: Response): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=admin-logs-handlers.d.ts.map
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAdminLogs = getAdminLogs;
|
|
4
|
+
exports.downloadLogs = downloadLogs;
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const node_zlib_1 = require("node:zlib");
|
|
8
|
+
const logger_1 = require("../../../logger");
|
|
9
|
+
const config_1 = require("../../../config");
|
|
10
|
+
function logDir() {
|
|
11
|
+
const config = (0, config_1.loadConfig)((0, config_1.getConfigPath)());
|
|
12
|
+
if (config.storage?.databasePath && config.storage.databasePath.startsWith('/')) {
|
|
13
|
+
return (0, path_1.dirname)(config.storage.databasePath);
|
|
14
|
+
}
|
|
15
|
+
const candidate = (0, path_1.join)(process.cwd(), 'data');
|
|
16
|
+
return (0, fs_1.existsSync)(candidate) ? candidate : (0, path_1.dirname)((0, path_1.join)(process.cwd(), 'data', 'pixiv-downloader.log'));
|
|
17
|
+
}
|
|
18
|
+
function parseOrRaw(line) {
|
|
19
|
+
try {
|
|
20
|
+
return { parsed: JSON.parse(line), raw: line };
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return { raw: line };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function matchesFilter(line, q) {
|
|
27
|
+
const { parsed, raw } = parseOrRaw(line);
|
|
28
|
+
const val = (key) => (parsed ? parsed[key] : undefined);
|
|
29
|
+
const timestamp = parsed?.timestamp ?? raw.match(/\[([\d\-T:.]+Z)\]/)?.[1] ?? '';
|
|
30
|
+
if (q.service && !(val('service') === q.service || raw.includes(q.service)))
|
|
31
|
+
return false;
|
|
32
|
+
if (q.bot_id && !(val('bot_id') === q.bot_id || raw.includes(q.bot_id)))
|
|
33
|
+
return false;
|
|
34
|
+
if (q.stage && !(val('stage') === q.stage || raw.includes(q.stage)))
|
|
35
|
+
return false;
|
|
36
|
+
if (q.level) {
|
|
37
|
+
const lvl = val('level');
|
|
38
|
+
if (lvl) {
|
|
39
|
+
if (String(lvl).toLowerCase() !== q.level.toLowerCase())
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
else if (!raw.includes(`[${q.level.toUpperCase()}]`))
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
if (q.from && timestamp && timestamp < q.from)
|
|
46
|
+
return false;
|
|
47
|
+
if (q.to && timestamp && timestamp > q.to)
|
|
48
|
+
return false;
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
function fileInfo(full) {
|
|
52
|
+
const st = (0, fs_1.statSync)(full);
|
|
53
|
+
return { name: full.split('/').pop(), size: st.size, updated: st.mtime.toISOString() };
|
|
54
|
+
}
|
|
55
|
+
/** GET /admin/logs — list log files (size + mtime) in the data dir. */
|
|
56
|
+
async function getAdminLogs(_req, res) {
|
|
57
|
+
try {
|
|
58
|
+
const dir = logDir();
|
|
59
|
+
let names = [];
|
|
60
|
+
try {
|
|
61
|
+
names = (0, fs_1.readdirSync)(dir);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
names = [];
|
|
65
|
+
}
|
|
66
|
+
const files = names
|
|
67
|
+
.filter((n) => /^pixiv-downloader.*\.(log|gz)$/.test(n))
|
|
68
|
+
.map((n) => fileInfo((0, path_1.join)(dir, n)))
|
|
69
|
+
.sort((a, b) => b.updated.localeCompare(a.updated));
|
|
70
|
+
res.json({ files });
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
logger_1.logger.error('admin logs list failed', { error: error instanceof Error ? error.message : String(error) });
|
|
74
|
+
res.status(500).json({ error: 'list failed' });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** GET /admin/logs/download[?service=&bot_id=&level=&stage=&from=&to=&file=] */
|
|
78
|
+
async function downloadLogs(req, res) {
|
|
79
|
+
try {
|
|
80
|
+
const requested = String(req.query.file ?? '');
|
|
81
|
+
const file = requested && !requested.includes('/') && !requested.includes('..') ? requested : 'pixiv-downloader.log';
|
|
82
|
+
const full = (0, path_1.join)(logDir(), file);
|
|
83
|
+
if (!(0, fs_1.existsSync)(full)) {
|
|
84
|
+
res.status(404).json({ error: `log file not found: ${file}` });
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const lines = (0, fs_1.readFileSync)(full, 'utf-8').split('\n').filter((l) => l.trim());
|
|
88
|
+
const filtered = lines.filter((l) => matchesFilter(l, {
|
|
89
|
+
service: req.query.service ? String(req.query.service) : undefined,
|
|
90
|
+
bot_id: req.query.bot_id ? String(req.query.bot_id) : undefined,
|
|
91
|
+
level: req.query.level ? String(req.query.level) : undefined,
|
|
92
|
+
stage: req.query.stage ? String(req.query.stage) : undefined,
|
|
93
|
+
from: req.query.from ? String(req.query.from) : undefined,
|
|
94
|
+
to: req.query.to ? String(req.query.to) : undefined,
|
|
95
|
+
}));
|
|
96
|
+
const gz = (0, node_zlib_1.gzipSync)(filtered.join('\n') + (filtered.length ? '\n' : ''));
|
|
97
|
+
res.setHeader('Content-Type', 'application/gzip');
|
|
98
|
+
res.setHeader('Content-Disposition', `attachment; filename="${file}.filtered.gz"`);
|
|
99
|
+
res.send(gz);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
logger_1.logger.error('admin logs download failed', { error: error instanceof Error ? error.message : String(error) });
|
|
103
|
+
res.status(500).json({ error: 'download failed' });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=admin-logs-handlers.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Request, Response } from 'express';
|
|
2
|
+
/** GET /admin/system-errors?limit=&error_type=&bot_id=&stage=&resolved=&from=&to= */
|
|
3
|
+
export declare function listSystemErrors(req: Request, res: Response): Promise<void>;
|
|
4
|
+
/** POST /admin/system-errors/:id/resolve */
|
|
5
|
+
export declare function resolveSystemError(req: Request, res: Response): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=system-errors-handlers.d.ts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listSystemErrors = listSystemErrors;
|
|
4
|
+
exports.resolveSystemError = resolveSystemError;
|
|
5
|
+
const Database_1 = require("../../../storage/Database");
|
|
6
|
+
const config_1 = require("../../../config");
|
|
7
|
+
const logger_1 = require("../../../logger");
|
|
8
|
+
function db() {
|
|
9
|
+
const config = (0, config_1.loadConfig)((0, config_1.getConfigPath)());
|
|
10
|
+
const database = new Database_1.Database(config.storage.databasePath);
|
|
11
|
+
database.migrate();
|
|
12
|
+
return database;
|
|
13
|
+
}
|
|
14
|
+
/** GET /admin/system-errors?limit=&error_type=&bot_id=&stage=&resolved=&from=&to= */
|
|
15
|
+
async function listSystemErrors(req, res) {
|
|
16
|
+
let database = null;
|
|
17
|
+
try {
|
|
18
|
+
database = db();
|
|
19
|
+
const rows = database.systemErrors.list({
|
|
20
|
+
limit: Number(req.query.limit ?? 50),
|
|
21
|
+
errorType: req.query.error_type ? String(req.query.error_type) : undefined,
|
|
22
|
+
botId: req.query.bot_id ? String(req.query.bot_id) : undefined,
|
|
23
|
+
stage: req.query.stage ? String(req.query.stage) : undefined,
|
|
24
|
+
resolved: req.query.resolved === 'true' ? true : req.query.resolved === 'false' ? false : undefined,
|
|
25
|
+
from: req.query.from ? String(req.query.from) : undefined,
|
|
26
|
+
to: req.query.to ? String(req.query.to) : undefined,
|
|
27
|
+
});
|
|
28
|
+
res.json({ data: rows });
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
logger_1.logger.error('list system errors failed', { error: error instanceof Error ? error.message : String(error) });
|
|
32
|
+
res.status(500).json({ error: 'list failed' });
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
database?.close();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** POST /admin/system-errors/:id/resolve */
|
|
39
|
+
async function resolveSystemError(req, res) {
|
|
40
|
+
let database = null;
|
|
41
|
+
try {
|
|
42
|
+
const id = Number(req.params.id);
|
|
43
|
+
if (!Number.isFinite(id)) {
|
|
44
|
+
res.status(400).json({ error: 'invalid id' });
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
database = db();
|
|
48
|
+
const result = database.systemErrors.markResolved(id);
|
|
49
|
+
res.json({ success: result.changes > 0, changes: result.changes });
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
logger_1.logger.error('resolve system error failed', { error: error instanceof Error ? error.message : String(error) });
|
|
53
|
+
res.status(500).json({ error: 'resolve failed' });
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
database?.close();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=system-errors-handlers.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const express_1 = require("express");
|
|
4
|
+
const system_errors_handlers_1 = require("./handlers/system-errors-handlers");
|
|
5
|
+
const router = (0, express_1.Router)();
|
|
6
|
+
router.get('/', system_errors_handlers_1.listSystemErrors);
|
|
7
|
+
router.post('/:id/resolve', system_errors_handlers_1.resolveSystemError);
|
|
8
|
+
exports.default = router;
|
|
9
|
+
//# sourceMappingURL=system-errors.js.map
|
|
@@ -10,6 +10,8 @@ const config_1 = __importDefault(require("../routes/config"));
|
|
|
10
10
|
const download_1 = __importDefault(require("../routes/download"));
|
|
11
11
|
const stats_1 = __importDefault(require("../routes/stats"));
|
|
12
12
|
const logs_1 = __importDefault(require("../routes/logs"));
|
|
13
|
+
const admin_logs_1 = __importDefault(require("../routes/admin-logs"));
|
|
14
|
+
const system_errors_1 = __importDefault(require("../routes/system-errors"));
|
|
13
15
|
const files_1 = __importDefault(require("../routes/files"));
|
|
14
16
|
/**
|
|
15
17
|
* Setup API routes for Express app
|
|
@@ -29,6 +31,9 @@ function setupRoutes(app) {
|
|
|
29
31
|
app.use('/api/download', download_1.default);
|
|
30
32
|
app.use('/api/stats', stats_1.default);
|
|
31
33
|
app.use('/api/logs', logs_1.default);
|
|
34
|
+
// Admin observability API (protected by WebUI basic auth when enabled).
|
|
35
|
+
app.use('/admin/logs', admin_logs_1.default);
|
|
36
|
+
app.use('/admin/system-errors', system_errors_1.default);
|
|
32
37
|
app.use('/api/files', files_1.default);
|
|
33
38
|
}
|
|
34
39
|
//# sourceMappingURL=server-routes.js.map
|
|
@@ -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":"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"}
|
|
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');
|