pixivflow 2.8.0 → 2.9.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 (39) hide show
  1. package/README.md +4 -0
  2. package/README_EN.md +4 -0
  3. package/dist/commands/TagsCommand.d.ts +25 -0
  4. package/dist/commands/TagsCommand.d.ts.map +1 -0
  5. package/dist/commands/TagsCommand.js +176 -0
  6. package/dist/commands/TagsCommand.js.map +1 -0
  7. package/dist/commands/index.d.ts +2 -1
  8. package/dist/commands/index.d.ts.map +1 -1
  9. package/dist/commands/index.js +4 -1
  10. package/dist/commands/index.js.map +1 -1
  11. package/dist/package.json +1 -1
  12. package/dist/pixiv/PixivClient.d.ts +4 -1
  13. package/dist/pixiv/PixivClient.d.ts.map +1 -1
  14. package/dist/pixiv/PixivClient.js +21 -0
  15. package/dist/pixiv/PixivClient.js.map +1 -1
  16. package/dist/pixiv/client/SearchService.d.ts +2 -1
  17. package/dist/pixiv/client/SearchService.d.ts.map +1 -1
  18. package/dist/pixiv/client/SearchService.js +10 -0
  19. package/dist/pixiv/client/SearchService.js.map +1 -1
  20. package/dist/pixiv/types.d.ts +8 -0
  21. package/dist/pixiv/types.d.ts.map +1 -1
  22. package/dist/tags/TagDiscoveryService.d.ts +22 -0
  23. package/dist/tags/TagDiscoveryService.d.ts.map +1 -0
  24. package/dist/tags/TagDiscoveryService.js +137 -0
  25. package/dist/tags/TagDiscoveryService.js.map +1 -0
  26. package/dist/tags/TagDiscoveryStore.d.ts +21 -0
  27. package/dist/tags/TagDiscoveryStore.d.ts.map +1 -0
  28. package/dist/tags/TagDiscoveryStore.js +67 -0
  29. package/dist/tags/TagDiscoveryStore.js.map +1 -0
  30. package/dist/tags/TagPlanApplier.d.ts +22 -0
  31. package/dist/tags/TagPlanApplier.d.ts.map +1 -0
  32. package/dist/tags/TagPlanApplier.js +86 -0
  33. package/dist/tags/TagPlanApplier.js.map +1 -0
  34. package/dist/tags/types.d.ts +36 -0
  35. package/dist/tags/types.d.ts.map +1 -0
  36. package/dist/tags/types.js +3 -0
  37. package/dist/tags/types.js.map +1 -0
  38. package/dist/webui/package.json +1 -1
  39. package/package.json +1 -1
package/README.md CHANGED
@@ -160,6 +160,10 @@ outbox 清单保留在 SQLite 数据库同级的 `delivery-outbox/`;下一次
160
160
  | `pixivflow config` | 配置管理(查看 / 编辑 / 备份 / 恢复) |
161
161
  | `pixivflow status` | 下载统计与最近记录 |
162
162
  | `pixivflow health` | 健康检查:配置、目录可写性、连通性 |
163
+ | `pixivflow tags discover <词>` | 发现相关 Tag(Pixiv 联想 + 作品标签共现),只列候选不改配置 |
164
+ | `pixivflow tags apply <清单> --target <id> --select <tag1,tag2>` | 人工确认后把所选 Tag 原子写入配置并触发热重载 |
165
+
166
+ `tags discover` 会调用 Pixiv 标签联想接口,并抽样最近插画 / 小说统计共同出现的标签,结果缓存 7 天;它**不会**改动任何下载计划。确认候选后用 `tags apply` 显式选择,应用前会整份校验配置、自动备份并原子替换,运行中的 scheduler 经配置热重载生效。
163
167
 
164
168
  其他用法见 [CLI_MIGRATION_SUMMARY.md](docs/CLI_MIGRATION_SUMMARY.md)。
165
169
 
package/README_EN.md CHANGED
@@ -141,6 +141,10 @@ Interactive configuration wizard: `pixivflow setup`.
141
141
  | `pixivflow config` | Manage config (view / edit / backup / restore) |
142
142
  | `pixivflow status` | Download stats and recent records |
143
143
  | `pixivflow health` | Health check: config, directories, connectivity |
144
+ | `pixivflow tags discover <seed>` | Discover related tags (Pixiv autocomplete + tag co-occurrence); lists candidates only |
145
+ | `pixivflow tags apply <manifest> --target <id> --select <tag1,tag2>` | Atomically write chosen tags into config after manual confirmation, then hot-reload |
146
+
147
+ `tags discover` calls the Pixiv autocomplete endpoint and samples recent illustrations/novels to count co-occurring tags, caching results for 7 days; it **never** changes active plans. After reviewing candidates, run `tags apply` to explicitly select tags: it validates the whole config, writes a backup and atomically replaces the file so a running scheduler hot-reloads it.
144
148
 
145
149
  More commands in [CLI_MIGRATION_SUMMARY.md](docs/CLI_MIGRATION_SUMMARY.md).
146
150
 
@@ -0,0 +1,25 @@
1
+ import { BaseCommand } from './Command';
2
+ import { CommandCategory } from './metadata';
3
+ import type { CommandArgs, CommandContext, CommandResult } from './types';
4
+ export declare class TagsCommand extends BaseCommand {
5
+ readonly name = "tags";
6
+ readonly description = "Discover related Pixiv tags, then explicitly apply selected tags";
7
+ readonly aliases: string[];
8
+ readonly metadata: {
9
+ category: CommandCategory;
10
+ requiresAuth: boolean;
11
+ longRunning: boolean;
12
+ };
13
+ execute(context: CommandContext, args: CommandArgs): Promise<CommandResult>;
14
+ private discover;
15
+ private apply;
16
+ private createStore;
17
+ private parseContentTypes;
18
+ private printManifest;
19
+ private integerOption;
20
+ private numberOption;
21
+ private stringOption;
22
+ private booleanOption;
23
+ getUsage(): string;
24
+ }
25
+ //# sourceMappingURL=TagsCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagsCommand.d.ts","sourceRoot":"","sources":["../../src/commands/TagsCommand.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAS1E,qBAAa,WAAY,SAAQ,WAAW;IAC1C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,sEAAsE;IAC1F,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,QAAQ;;;;MAIf;IAEI,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;YAenE,QAAQ;YAgDR,KAAK;IAkCnB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;IAIrB,QAAQ,IAAI,MAAM;CAgBnB"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TagsCommand = void 0;
4
+ const node_path_1 = require("node:path");
5
+ const Command_1 = require("./Command");
6
+ const metadata_1 = require("./metadata");
7
+ const Database_1 = require("../storage/Database");
8
+ const AuthClient_1 = require("../pixiv/AuthClient");
9
+ const PixivClient_1 = require("../pixiv/PixivClient");
10
+ const TagDiscoveryService_1 = require("../tags/TagDiscoveryService");
11
+ const TagDiscoveryStore_1 = require("../tags/TagDiscoveryStore");
12
+ const TagPlanApplier_1 = require("../tags/TagPlanApplier");
13
+ class TagsCommand extends Command_1.BaseCommand {
14
+ name = 'tags';
15
+ description = 'Discover related Pixiv tags, then explicitly apply selected tags';
16
+ aliases = ['tag'];
17
+ metadata = {
18
+ category: metadata_1.CommandCategory.CONFIGURATION,
19
+ requiresAuth: true,
20
+ longRunning: false,
21
+ };
22
+ async execute(context, args) {
23
+ const subcommand = args.positional[0];
24
+ try {
25
+ if (subcommand === 'discover')
26
+ return await this.discover(context, args);
27
+ if (subcommand === 'apply')
28
+ return await this.apply(context, args);
29
+ console.error(`\nUnknown tags subcommand: ${subcommand ? `'${subcommand}'` : '(none)'}`);
30
+ console.error(`\nUsage:\n${this.getUsage()}\n`);
31
+ return this.failure(this.getUsage());
32
+ }
33
+ catch (error) {
34
+ const message = error instanceof Error ? error.message : String(error);
35
+ console.error(`\n✗ ${message}\n`);
36
+ return this.failure(message);
37
+ }
38
+ }
39
+ async discover(context, args) {
40
+ const seed = args.positional.slice(1).join(' ').trim();
41
+ if (!seed) {
42
+ console.error('\nUsage: pixivflow tags discover <seed> [options]\n');
43
+ return this.failure('Missing seed tag for discovery');
44
+ }
45
+ const contentTypes = this.parseContentTypes(args.options.type);
46
+ const sampleSize = this.integerOption(args.options.sample, 60, 'sample');
47
+ const limit = this.integerOption(args.options.limit, 20, 'limit');
48
+ const cacheDays = this.numberOption(args.options['cache-days'], 7, 'cache-days');
49
+ const ttlMs = Math.round(cacheDays * 24 * 60 * 60_000);
50
+ const cacheKey = { seed, contentTypes, sampleSize, limit };
51
+ const store = this.createStore(context);
52
+ if (!this.booleanOption(args.options.refresh)) {
53
+ const cached = await store.loadFresh(cacheKey);
54
+ if (cached) {
55
+ this.printManifest(cached.manifest, cached.path, true, this.booleanOption(args.options.json));
56
+ return this.success('Fresh tag discovery cache reused', cached);
57
+ }
58
+ }
59
+ const database = new Database_1.Database(context.config.storage.databasePath);
60
+ try {
61
+ database.migrate();
62
+ const auth = new AuthClient_1.PixivAuth(context.config.pixiv, context.config.network, database, context.configPath);
63
+ const client = new PixivClient_1.PixivClient(auth, context.config);
64
+ const service = new TagDiscoveryService_1.TagDiscoveryService(client);
65
+ const manifest = await service.discover(seed, {
66
+ contentTypes,
67
+ sampleSize,
68
+ limit,
69
+ ttlMs,
70
+ });
71
+ const path = await store.save(cacheKey, manifest);
72
+ this.printManifest(manifest, path, false, this.booleanOption(args.options.json));
73
+ return this.success('Tag discovery completed', { manifest, path, cached: false });
74
+ }
75
+ finally {
76
+ database.close();
77
+ }
78
+ }
79
+ async apply(context, args) {
80
+ const manifestPath = args.positional[1];
81
+ const targetId = this.stringOption(args.options.target);
82
+ const selected = this.stringOption(args.options.select)
83
+ ?.split(',')
84
+ .map((value) => value.trim())
85
+ .filter(Boolean) ?? [];
86
+ const mode = this.stringOption(args.options.mode) ?? 'append';
87
+ if (!manifestPath || !targetId || selected.length === 0) {
88
+ console.error('\nUsage: pixivflow tags apply <manifest.json> --target <id> --select <tag1,tag2> [--mode append|replace]\n');
89
+ return this.failure('apply requires a manifest path, --target and --select');
90
+ }
91
+ if (mode !== 'append' && mode !== 'replace') {
92
+ console.error('\n--mode must be append or replace\n');
93
+ return this.failure('--mode must be append or replace');
94
+ }
95
+ const store = this.createStore(context);
96
+ const manifest = await store.read((0, node_path_1.resolve)(manifestPath));
97
+ const result = await new TagPlanApplier_1.TagPlanApplier().apply(context.configPath, manifest, {
98
+ targetId,
99
+ selectedTags: selected,
100
+ mode,
101
+ });
102
+ console.log(`\n✓ Target ${result.targetId} updated atomically`);
103
+ console.log(` Previous: ${result.previousTag ?? '(empty)'}`);
104
+ console.log(` Current: ${result.tag}`);
105
+ console.log(` Backup: ${result.backupPath}`);
106
+ console.log(' Scheduler: the config watcher will hot-reload this validated snapshot\n');
107
+ return this.success('Selected tags applied and ready for hot reload', result);
108
+ }
109
+ createStore(context) {
110
+ const databasePath = (0, node_path_1.resolve)(context.config.storage.databasePath);
111
+ return new TagDiscoveryStore_1.TagDiscoveryStore((0, node_path_1.resolve)((0, node_path_1.dirname)(databasePath), 'tag-discovery'));
112
+ }
113
+ parseContentTypes(value) {
114
+ const type = this.stringOption(value) ?? 'all';
115
+ if (type === 'all')
116
+ return ['illustration', 'novel'];
117
+ if (type === 'illustration' || type === 'novel')
118
+ return [type];
119
+ throw new Error('--type must be all, illustration or novel');
120
+ }
121
+ printManifest(manifest, path, cached, json) {
122
+ if (json) {
123
+ console.log(JSON.stringify({ cached, path, ...manifest }, null, 2));
124
+ return;
125
+ }
126
+ console.log(`\nTag suggestions for: ${manifest.seed}${cached ? ' (cache)' : ''}`);
127
+ console.log(`Sampled: ${manifest.sampledWorks.illustration} illustrations, ${manifest.sampledWorks.novel} novels`);
128
+ console.log('');
129
+ manifest.candidates.forEach((candidate, index) => {
130
+ const translation = candidate.translatedName ? ` / ${candidate.translatedName}` : '';
131
+ const occurrences = candidate.occurrences.illustration + candidate.occurrences.novel;
132
+ console.log(`${String(index + 1).padStart(2)}. ${candidate.name}${translation} score=${candidate.score.toFixed(4)} works=${occurrences} source=${candidate.sources.join('+')}`);
133
+ });
134
+ console.log(`\nManifest: ${path}`);
135
+ console.log(`Apply selected candidates only:`);
136
+ console.log(` pixivflow tags apply "${path}" --target <target-id> --select "tag1,tag2"\n`);
137
+ }
138
+ integerOption(value, fallback, name) {
139
+ const number = this.numberOption(value, fallback, name);
140
+ if (!Number.isInteger(number))
141
+ throw new Error(`--${name} must be an integer`);
142
+ return number;
143
+ }
144
+ numberOption(value, fallback, name) {
145
+ if (value === undefined)
146
+ return fallback;
147
+ const number = Number(value);
148
+ if (!Number.isFinite(number))
149
+ throw new Error(`--${name} must be a number`);
150
+ return number;
151
+ }
152
+ stringOption(value) {
153
+ return typeof value === 'string' ? value.trim() : undefined;
154
+ }
155
+ booleanOption(value) {
156
+ return value === true || (typeof value === 'string' && ['true', '1', 'yes'].includes(value.toLowerCase()));
157
+ }
158
+ getUsage() {
159
+ return `tags discover <seed> [options]
160
+ --type all|illustration|novel Content to sample (default: all)
161
+ --sample <1-200> Maximum works sampled per type (default: 60)
162
+ --limit <1-100> Candidate count (default: 20)
163
+ --cache-days <days> Cache lifetime (default: 7)
164
+ --refresh Ignore a fresh cache
165
+ --json Machine-readable output
166
+
167
+ tags apply <manifest.json> --target <id> --select <tag1,tag2> [options]
168
+ --mode append|replace Keep the current seed or replace it (default: append)
169
+
170
+ Discovery never changes active plans. Apply accepts only names from the saved
171
+ manifest, validates the complete config, writes a backup, then atomically
172
+ replaces the config so a running scheduler can hot-reload it.`;
173
+ }
174
+ }
175
+ exports.TagsCommand = TagsCommand;
176
+ //# sourceMappingURL=TagsCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagsCommand.js","sourceRoot":"","sources":["../../src/commands/TagsCommand.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ import { MonitorCommand } from './MonitorCommand';
22
22
  import { SetupCommand } from './SetupCommand';
23
23
  import { DirsCommand } from './DirsCommand';
24
24
  import { VersionCommand } from './VersionCommand';
25
+ import { TagsCommand } from './TagsCommand';
25
26
  /**
26
27
  * Create and register all commands
27
28
  */
@@ -29,5 +30,5 @@ export declare function registerAllCommands(registry: CommandRegistry): void;
29
30
  /**
30
31
  * Export all command classes
31
32
  */
32
- export { HelpCommand, LoginCommand, LoginHeadlessCommand, RefreshCommand, DownloadCommand, RandomDownloadCommand, SchedulerCommand, MigrateConfigCommand, NormalizeCommand, WebUICommand, HealthCommand, StatusCommand, LogsCommand, ConfigCommand, BackupCommand, MaintainCommand, MonitorCommand, SetupCommand, DirsCommand, VersionCommand, };
33
+ export { HelpCommand, LoginCommand, LoginHeadlessCommand, RefreshCommand, DownloadCommand, RandomDownloadCommand, SchedulerCommand, MigrateConfigCommand, NormalizeCommand, WebUICommand, HealthCommand, StatusCommand, LogsCommand, ConfigCommand, BackupCommand, MaintainCommand, MonitorCommand, SetupCommand, DirsCommand, VersionCommand, TagsCommand, };
33
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAqBnE;AAED;;GAEG;AACH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,GACf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAsBnE;AAED;;GAEG;AACH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,GACZ,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * Command exports and registration
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.VersionCommand = exports.DirsCommand = exports.SetupCommand = exports.MonitorCommand = exports.MaintainCommand = exports.BackupCommand = exports.ConfigCommand = exports.LogsCommand = exports.StatusCommand = exports.HealthCommand = exports.WebUICommand = exports.NormalizeCommand = exports.MigrateConfigCommand = exports.SchedulerCommand = exports.RandomDownloadCommand = exports.DownloadCommand = exports.RefreshCommand = exports.LoginHeadlessCommand = exports.LoginCommand = exports.HelpCommand = void 0;
6
+ exports.TagsCommand = exports.VersionCommand = exports.DirsCommand = exports.SetupCommand = exports.MonitorCommand = exports.MaintainCommand = exports.BackupCommand = exports.ConfigCommand = exports.LogsCommand = exports.StatusCommand = exports.HealthCommand = exports.WebUICommand = exports.NormalizeCommand = exports.MigrateConfigCommand = exports.SchedulerCommand = exports.RandomDownloadCommand = exports.DownloadCommand = exports.RefreshCommand = exports.LoginHeadlessCommand = exports.LoginCommand = exports.HelpCommand = void 0;
7
7
  exports.registerAllCommands = registerAllCommands;
8
8
  const HelpCommand_1 = require("./HelpCommand");
9
9
  Object.defineProperty(exports, "HelpCommand", { enumerable: true, get: function () { return HelpCommand_1.HelpCommand; } });
@@ -45,6 +45,8 @@ const DirsCommand_1 = require("./DirsCommand");
45
45
  Object.defineProperty(exports, "DirsCommand", { enumerable: true, get: function () { return DirsCommand_1.DirsCommand; } });
46
46
  const VersionCommand_1 = require("./VersionCommand");
47
47
  Object.defineProperty(exports, "VersionCommand", { enumerable: true, get: function () { return VersionCommand_1.VersionCommand; } });
48
+ const TagsCommand_1 = require("./TagsCommand");
49
+ Object.defineProperty(exports, "TagsCommand", { enumerable: true, get: function () { return TagsCommand_1.TagsCommand; } });
48
50
  /**
49
51
  * Create and register all commands
50
52
  */
@@ -69,5 +71,6 @@ function registerAllCommands(registry) {
69
71
  registry.register(new SetupCommand_1.SetupCommand());
70
72
  registry.register(new DirsCommand_1.DirsCommand());
71
73
  registry.register(new VersionCommand_1.VersionCommand());
74
+ registry.register(new TagsCommand_1.TagsCommand());
72
75
  }
73
76
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA2BH,kDAqBC;AA7CD,+CAA4C;AAmD1C,4FAnDO,yBAAW,OAmDP;AAlDb,iDAA8C;AAmD5C,6FAnDO,2BAAY,OAmDP;AAlDd,iEAA8D;AAmD5D,qGAnDO,2CAAoB,OAmDP;AAlDtB,qDAAkD;AAmDhD,+FAnDO,+BAAc,OAmDP;AAlDhB,uDAAoD;AAmDlD,gGAnDO,iCAAe,OAmDP;AAlDjB,mEAAgE;AAmD9D,sGAnDO,6CAAqB,OAmDP;AAlDvB,yDAAsD;AAmDpD,iGAnDO,mCAAgB,OAmDP;AAlDlB,iEAA8D;AAmD5D,qGAnDO,2CAAoB,OAmDP;AAlDtB,yDAAsD;AAmDpD,iGAnDO,mCAAgB,OAmDP;AAlDlB,iDAA8C;AAmD5C,6FAnDO,2BAAY,OAmDP;AAlDd,mDAAgD;AAmD9C,8FAnDO,6BAAa,OAmDP;AAlDf,mDAAgD;AAmD9C,8FAnDO,6BAAa,OAmDP;AAlDf,+CAA4C;AAmD1C,4FAnDO,yBAAW,OAmDP;AAlDb,mDAAgD;AAmD9C,8FAnDO,6BAAa,OAmDP;AAlDf,mDAAgD;AAmD9C,8FAnDO,6BAAa,OAmDP;AAlDf,uDAAoD;AAmDlD,gGAnDO,iCAAe,OAmDP;AAlDjB,qDAAkD;AAmDhD,+FAnDO,+BAAc,OAmDP;AAlDhB,iDAA8C;AAmD5C,6FAnDO,2BAAY,OAmDP;AAlDd,+CAA4C;AAmD1C,4FAnDO,yBAAW,OAmDP;AAlDb,qDAAkD;AAmDhD,+FAnDO,+BAAc,OAmDP;AAjDhB;;GAEG;AACH,SAAgB,mBAAmB,CAAC,QAAyB;IAC3D,QAAQ,CAAC,QAAQ,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,IAAI,2BAAY,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,IAAI,2CAAoB,EAAE,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,IAAI,+BAAc,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iCAAe,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,6CAAqB,EAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,mCAAgB,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,2CAAoB,EAAE,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,IAAI,mCAAgB,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,2BAAY,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,IAAI,6BAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,6BAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,IAAI,6BAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,6BAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iCAAe,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,+BAAc,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,IAAI,2BAAY,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,IAAI,+BAAc,EAAE,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "type": "commonjs",
3
3
  "name": "pixivflow",
4
- "version": "2.8.0",
4
+ "version": "2.9.0",
5
5
  "private": true
6
6
  }
@@ -1,7 +1,7 @@
1
1
  import { StandaloneConfig, TargetConfig } from '../config';
2
2
  import { PixivAuth } from './AuthClient';
3
3
  import { IPixivClient } from '../interfaces/IPixivClient';
4
- import type { PixivUser, PixivIllust, PixivNovel, PixivNovelTextResponse } from './types';
4
+ import type { PixivUser, PixivIllust, PixivNovel, PixivNovelTextResponse, PixivTag } from './types';
5
5
  export type { PixivUser, PixivIllust, PixivNovel, PixivIllustPage, PixivNovelTextResponse } from './types';
6
6
  export declare class PixivClient implements IPixivClient {
7
7
  private readonly auth;
@@ -36,6 +36,9 @@ export declare class PixivClient implements IPixivClient {
36
36
  * Implements IPixivClient interface
37
37
  */
38
38
  searchIllustrations(target: TargetConfig): Promise<PixivIllust[]>;
39
+ getTagAutocomplete(seed: string): Promise<PixivTag[]>;
40
+ searchIllustrationsForTags(seed: string, limit: number): Promise<PixivIllust[]>;
41
+ searchNovelsForTags(seed: string, limit: number): Promise<PixivNovel[]>;
39
42
  /**
40
43
  * Get current user information
41
44
  * Implements IPixivClient interface
@@ -1 +1 @@
1
- {"version":3,"file":"PixivClient.d.ts","sourceRoot":"","sources":["../../src/pixiv/PixivClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PixivClient.d.ts","sourceRoot":"","sources":["../../src/pixiv/PixivClient.ts"],"names":[],"mappings":"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"}
@@ -117,6 +117,27 @@ class PixivClient {
117
117
  const requestDelay = this.config.download?.requestDelay ?? 3000;
118
118
  return this.searchService.searchIllustrations(target, requestDelay);
119
119
  }
120
+ async getTagAutocomplete(seed) {
121
+ return this.searchService.getTagAutocomplete(seed);
122
+ }
123
+ async searchIllustrationsForTags(seed, limit) {
124
+ return this.searchIllustrations({
125
+ type: 'illustration',
126
+ tag: seed,
127
+ searchTarget: 'partial_match_for_tags',
128
+ sort: 'date_desc',
129
+ limit,
130
+ });
131
+ }
132
+ async searchNovelsForTags(seed, limit) {
133
+ return this.searchNovels({
134
+ type: 'novel',
135
+ tag: seed,
136
+ searchTarget: 'partial_match_for_tags',
137
+ sort: 'date_desc',
138
+ limit,
139
+ });
140
+ }
120
141
  /**
121
142
  * Get current user information
122
143
  * Implements IPixivClient interface
@@ -1 +1 @@
1
- {"version":3,"file":"PixivClient.js","sourceRoot":"","sources":["../../src/pixiv/PixivClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PixivClient.js","sourceRoot":"","sources":["../../src/pixiv/PixivClient.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { PixivApiCore } from './PixivApiCore';
2
- import type { PixivIllust, PixivNovel } from '../types';
2
+ import type { PixivIllust, PixivNovel, PixivTag } from '../types';
3
3
  import type { TargetConfig } from '../../config';
4
4
  /**
5
5
  * Search service for illustrations and novels with pagination, filtering and sorting.
@@ -8,6 +8,7 @@ import type { TargetConfig } from '../../config';
8
8
  export declare class SearchService {
9
9
  private readonly api;
10
10
  constructor(api: PixivApiCore);
11
+ getTagAutocomplete(seed: string): Promise<PixivTag[]>;
11
12
  searchIllustrations(target: TargetConfig, requestDelayMs: number): Promise<PixivIllust[]>;
12
13
  searchNovels(target: TargetConfig, requestDelayMs: number): Promise<PixivNovel[]>;
13
14
  private searchIllustrationsSingleTag;
@@ -1 +1 @@
1
- {"version":3,"file":"SearchService.d.ts","sourceRoot":"","sources":["../../../src/pixiv/client/SearchService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD;;;GAGG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,YAAY;IAExC,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA6CzF,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YA6CzE,4BAA4B;YA6C5B,qBAAqB;IA2CnC;;OAEG;YACW,oBAAoB;CAsEnC"}
1
+ {"version":3,"file":"SearchService.d.ts","sourceRoot":"","sources":["../../../src/pixiv/client/SearchService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGlE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD;;;GAGG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,YAAY;IAExC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAcrD,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA6CzF,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YA6CzE,4BAA4B;YA6C5B,qBAAqB;IA2CnC;;OAEG;YACW,oBAAoB;CAsEnC"}
@@ -14,6 +14,16 @@ class SearchService {
14
14
  constructor(api) {
15
15
  this.api = api;
16
16
  }
17
+ async getTagAutocomplete(seed) {
18
+ const params = new URLSearchParams({
19
+ word: seed,
20
+ merge_plain_keyword_results: 'true',
21
+ });
22
+ const response = await this.api.request(`/v2/search/autocomplete?${params.toString()}`, { method: 'GET' });
23
+ if (Array.isArray(response.tags))
24
+ return response.tags;
25
+ return (response.search_auto_complete_keywords ?? []).map((name) => ({ name }));
26
+ }
17
27
  async searchIllustrations(target, requestDelayMs) {
18
28
  if (!target.tag) {
19
29
  throw new Error('tag is required for illustration search');
@@ -1 +1 @@
1
- {"version":3,"file":"SearchService.js","sourceRoot":"","sources":["../../../src/pixiv/client/SearchService.ts"],"names":[],"mappings":";;;AAAA,mDAA2D;AAG3D,yCAAsC;AACtC,uDAAwD;AAExD,0DAAuD;AAEvD;;;GAGG;AACH,MAAa,aAAa;IACK;IAA7B,YAA6B,GAAiB;QAAjB,QAAG,GAAH,GAAG,CAAc;IAAG,CAAC;IAElD,KAAK,CAAC,mBAAmB,CAAC,MAAoB,EAAE,cAAsB;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,+FAA+F;QAC/F,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1E,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC/E,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,MAAM,MAAM,GAAkB,EAAE,CAAC;YAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBAClF,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;oBACxB,MAAM,GAAG,GAAG,MAAM,CAAE,IAAY,CAAC,EAAE,CAAC,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpB,CAAC;gBACH,CAAC;gBACD,yCAAyC;gBACzC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClD,MAAM;gBACR,CAAC;gBACD,yDAAyD;gBACzD,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;oBAC9C,MAAM,IAAA,qBAAK,EAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,2BAAc,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAoB,EAAE,cAAsB;QAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,+FAA+F;QAC/F,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1E,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,MAAM,MAAM,GAAiB,EAAE,CAAC;YAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBAC3E,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;oBACxB,MAAM,GAAG,GAAG,MAAM,CAAE,IAAY,CAAC,EAAE,CAAC,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpB,CAAC;gBACH,CAAC;gBACD,yCAAyC;gBACzC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClD,MAAM;gBACR,CAAC;gBACD,yDAAyD;gBACzD,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;oBAC9C,MAAM,IAAA,qBAAK,EAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,2BAAc,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,4BAA4B,CACxC,MAAoB,EACpB,GAAW,EACX,cAAsB;QAEtB,eAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;YACtC,GAAG;YACH,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,6BAAa,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;QAEzC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,IAAI,EAAE,GAAG;YACT,aAAa,EAAE,MAAM,CAAC,YAAY,IAAI,wBAAwB;YAC9D,MAAM,EAAE,SAAS;YACjB,8BAA8B,EAAE,MAAM;SACvC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;QAC5C,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,6BAAa,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEtF,OAAO,IAAI,CAAC,oBAAoB,CAC9B,qBAAqB,MAAM,CAAC,QAAQ,EAAE,EAAE,EACxC,SAAS,EACT,MAAM,EACN,GAAG,EACH,cAAc,EACd,QAAQ,EACR,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,CACX,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,MAAoB,EACpB,GAAW,EACX,cAAsB;QAEtB,eAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE;YAC/B,GAAG;YACH,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,6BAAa,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;QAEzC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,IAAI,EAAE,GAAG;YACT,aAAa,EAAE,MAAM,CAAC,YAAY,IAAI,wBAAwB;SAC/D,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;QAC5C,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,6BAAa,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEtF,OAAO,IAAI,CAAC,oBAAoB,CAC9B,oBAAoB,MAAM,CAAC,QAAQ,EAAE,EAAE,EACvC,QAAQ,EACR,MAAM,EACN,GAAG,EACH,cAAc,EACd,QAAQ,EACR,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,CACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAChC,UAAkB,EAClB,QAA8B,EAC9B,MAAoB,EACpB,GAAW,EACX,cAAsB,EACtB,QAAgB,EAChB,SAAsB,EACtB,OAAoB,EACpB,aAAsB,EACtB,UAA8B;QAE9B,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,IAAI,OAAO,GAAkB,UAAU,CAAC;QACxC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,OAAO,OAAO,IAAI,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9E,SAAS,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CACrC,OAAO,EACP,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;YAEF,MAAM,KAAK,GAAI,QAAQ,CAAC,QAAQ,CAAS,IAAI,EAAE,CAAC;YAChD,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAyB,CAAC;YAE3D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,6BAAa,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAEhG,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;oBAC5B,UAAU,GAAG,IAAI,CAAC;oBAClB,MAAM;gBACR,CAAC;gBAED,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnB,IAAI,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;wBAC/C,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,GAAG,eAAe,CAAC;YAC1B,IAAI,OAAO,IAAI,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjD,eAAM,CAAC,KAAK,CACV,QAAQ,GAAG,UAAU,SAAS,WAAW,KAAK,CAAC,MAAM,IAAI,QAAQ,sBAAsB,OAAO,CAAC,MAAM,aAAa,cAAc,wBAAwB,CACzJ,CAAC;gBACF,MAAM,IAAA,qBAAK,EAAC,cAAc,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,IAAI,YAAY,GAAG,OAAO,CAAC;QAC3B,IAAI,QAAQ,KAAK,cAAc,IAAI,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvE,MAAM,YAAY,GAAG,6BAAa,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACzF,IAAI,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBACzC,eAAM,CAAC,KAAK,CACV,wCAAwC,OAAO,CAAC,MAAM,mBAAmB,YAAY,CAAC,MAAM,oBAAoB,CACjH,CAAC;YACJ,CAAC;YACD,YAAY,GAAG,YAAmB,CAAC;QACrC,CAAC;QAED,MAAM,aAAa,GAAG,IAAA,2BAAc,EAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YACxD,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAQ,CAAC;QACrD,CAAC;QACD,OAAO,aAAoB,CAAC;IAC9B,CAAC;CACF;AA9PD,sCA8PC"}
1
+ {"version":3,"file":"SearchService.js","sourceRoot":"","sources":["../../../src/pixiv/client/SearchService.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,10 @@ export interface PixivUser {
5
5
  id: string;
6
6
  name: string;
7
7
  }
8
+ export interface PixivTag {
9
+ name: string;
10
+ translated_name?: string;
11
+ }
8
12
  export interface PixivIllust {
9
13
  id: number;
10
14
  title: string;
@@ -37,6 +41,8 @@ export interface PixivIllust {
37
41
  total_view?: number;
38
42
  bookmark_count?: number;
39
43
  view_count?: number;
44
+ /** Search responses usually include enough tag metadata for discovery. */
45
+ tags?: PixivTag[];
40
46
  }
41
47
  export type PixivIllustPage = NonNullable<PixivIllust['meta_pages']>[number];
42
48
  export interface PixivNovel {
@@ -48,6 +54,8 @@ export interface PixivNovel {
48
54
  total_view?: number;
49
55
  bookmark_count?: number;
50
56
  view_count?: number;
57
+ /** Search responses usually include enough tag metadata for discovery. */
58
+ tags?: PixivTag[];
51
59
  }
52
60
  export interface PixivNovelTextResponse {
53
61
  novel_text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pixiv/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC5C,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,UAAU,EAAE;YACV,aAAa,EAAE,MAAM,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,gBAAgB,CAAC,EAAE;YACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;SAC7B,CAAC;KACH,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pixiv/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC5C,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,UAAU,EAAE;YACV,aAAa,EAAE,MAAM,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,gBAAgB,CAAC,EAAE;YACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;SAC7B,CAAC;KACH,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,22 @@
1
+ import type { TagDiscoveryClient, TagDiscoveryContentType, TagDiscoveryManifest } from './types';
2
+ export interface TagDiscoveryOptions {
3
+ contentTypes?: TagDiscoveryContentType[];
4
+ sampleSize?: number;
5
+ limit?: number;
6
+ ttlMs?: number;
7
+ now?: () => number;
8
+ }
9
+ /** Combines Pixiv autocomplete with bounded tag co-occurrence sampling. */
10
+ export declare class TagDiscoveryService {
11
+ private readonly client;
12
+ constructor(client: TagDiscoveryClient);
13
+ discover(seed: string, options?: TagDiscoveryOptions): Promise<TagDiscoveryManifest>;
14
+ private normalizeContentTypes;
15
+ private boundedInteger;
16
+ private accumulateWorks;
17
+ private accumulate;
18
+ private toCandidate;
19
+ private key;
20
+ private totalOccurrences;
21
+ }
22
+ //# sourceMappingURL=TagDiscoveryService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagDiscoveryService.d.ts","sourceRoot":"","sources":["../../src/tags/TagDiscoveryService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAUD,2EAA2E;AAC3E,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,kBAAkB;IAEjD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgD9F,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TagDiscoveryService = void 0;
4
+ /** Combines Pixiv autocomplete with bounded tag co-occurrence sampling. */
5
+ class TagDiscoveryService {
6
+ client;
7
+ constructor(client) {
8
+ this.client = client;
9
+ }
10
+ async discover(seed, options = {}) {
11
+ const normalizedSeed = seed.trim();
12
+ if (!normalizedSeed)
13
+ throw new Error('Tag discovery seed must not be empty');
14
+ const contentTypes = this.normalizeContentTypes(options.contentTypes);
15
+ const sampleSize = this.boundedInteger(options.sampleSize, 60, 1, 200, 'sampleSize');
16
+ const limit = this.boundedInteger(options.limit, 20, 1, 100, 'limit');
17
+ const ttlMs = this.boundedInteger(options.ttlMs, 7 * 24 * 60 * 60_000, 60_000, 30 * 24 * 60 * 60_000, 'ttlMs');
18
+ const accumulators = new Map();
19
+ const autocomplete = await this.client.getTagAutocomplete(normalizedSeed);
20
+ autocomplete.forEach((tag, index) => {
21
+ const entry = this.accumulate(accumulators, tag);
22
+ if (entry)
23
+ entry.autocompleteRank = Math.min(entry.autocompleteRank ?? index, index);
24
+ });
25
+ const sampledWorks = { illustration: 0, novel: 0 };
26
+ if (contentTypes.includes('illustration')) {
27
+ const works = await this.client.searchIllustrationsForTags(normalizedSeed, sampleSize);
28
+ sampledWorks.illustration = works.length;
29
+ this.accumulateWorks(accumulators, works, 'illustration');
30
+ }
31
+ if (contentTypes.includes('novel')) {
32
+ const works = await this.client.searchNovelsForTags(normalizedSeed, sampleSize);
33
+ sampledWorks.novel = works.length;
34
+ this.accumulateWorks(accumulators, works, 'novel');
35
+ }
36
+ const seedKey = this.key(normalizedSeed);
37
+ const candidates = [...accumulators.values()]
38
+ .filter((candidate) => this.key(candidate.name) !== seedKey && this.key(candidate.translatedName ?? '') !== seedKey)
39
+ .map((candidate) => this.toCandidate(candidate, autocomplete.length, sampledWorks))
40
+ .sort((left, right) => right.score - left.score || this.totalOccurrences(right) - this.totalOccurrences(left) || left.name.localeCompare(right.name))
41
+ .slice(0, limit);
42
+ const now = options.now?.() ?? Date.now();
43
+ return {
44
+ version: 1,
45
+ seed: normalizedSeed,
46
+ createdAt: new Date(now).toISOString(),
47
+ expiresAt: new Date(now + ttlMs).toISOString(),
48
+ contentTypes,
49
+ sampleSize,
50
+ sampledWorks,
51
+ candidates,
52
+ };
53
+ }
54
+ normalizeContentTypes(types) {
55
+ const fallback = ['illustration', 'novel'];
56
+ const resolved = types && types.length ? types : fallback;
57
+ return [...new Set(resolved)];
58
+ }
59
+ boundedInteger(value, fallback, minimum, maximum, name) {
60
+ const resolved = value ?? fallback;
61
+ if (!Number.isInteger(resolved) || resolved < minimum || resolved > maximum) {
62
+ throw new Error(`${name} must be an integer between ${minimum} and ${maximum}`);
63
+ }
64
+ return resolved;
65
+ }
66
+ accumulateWorks(accumulators, works, type) {
67
+ works.forEach((work, workIndex) => {
68
+ const seen = new Set();
69
+ for (const tag of work.tags ?? []) {
70
+ const key = this.key(tag.name);
71
+ if (!key || seen.has(key))
72
+ continue;
73
+ seen.add(key);
74
+ const entry = this.accumulate(accumulators, tag);
75
+ if (entry) {
76
+ (type === 'illustration' ? entry.illustrationWorks : entry.novelWorks).add(workIndex);
77
+ }
78
+ }
79
+ });
80
+ }
81
+ accumulate(accumulators, tag) {
82
+ const name = tag.name?.trim();
83
+ const key = this.key(name ?? '');
84
+ if (!key)
85
+ return undefined;
86
+ let entry = accumulators.get(key);
87
+ if (!entry) {
88
+ entry = {
89
+ name,
90
+ translatedName: tag.translated_name?.trim() || undefined,
91
+ illustrationWorks: new Set(),
92
+ novelWorks: new Set(),
93
+ };
94
+ accumulators.set(key, entry);
95
+ }
96
+ else if (!entry.translatedName && tag.translated_name?.trim()) {
97
+ entry.translatedName = tag.translated_name.trim();
98
+ }
99
+ return entry;
100
+ }
101
+ toCandidate(candidate, autocompleteCount, sampledWorks) {
102
+ const autocompleteScore = candidate.autocompleteRank === undefined
103
+ ? 0
104
+ : Math.max(0.5, 1 - candidate.autocompleteRank / Math.max(autocompleteCount * 2, 1));
105
+ const cooccurrenceScore = Math.max(sampledWorks.illustration ? candidate.illustrationWorks.size / sampledWorks.illustration : 0, sampledWorks.novel ? candidate.novelWorks.size / sampledWorks.novel : 0);
106
+ const score = 1 - (1 - autocompleteScore) * (1 - cooccurrenceScore);
107
+ const sources = [];
108
+ if (candidate.autocompleteRank !== undefined)
109
+ sources.push('autocomplete');
110
+ if (candidate.illustrationWorks.size || candidate.novelWorks.size)
111
+ sources.push('cooccurrence');
112
+ const types = [];
113
+ if (candidate.illustrationWorks.size)
114
+ types.push('illustration');
115
+ if (candidate.novelWorks.size)
116
+ types.push('novel');
117
+ return {
118
+ name: candidate.name,
119
+ translatedName: candidate.translatedName,
120
+ sources,
121
+ types,
122
+ occurrences: {
123
+ illustration: candidate.illustrationWorks.size,
124
+ novel: candidate.novelWorks.size,
125
+ },
126
+ score: Number(score.toFixed(4)),
127
+ };
128
+ }
129
+ key(value) {
130
+ return value.trim().normalize('NFKC').toLocaleLowerCase();
131
+ }
132
+ totalOccurrences(candidate) {
133
+ return candidate.occurrences.illustration + candidate.occurrences.novel;
134
+ }
135
+ }
136
+ exports.TagDiscoveryService = TagDiscoveryService;
137
+ //# sourceMappingURL=TagDiscoveryService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagDiscoveryService.js","sourceRoot":"","sources":["../../src/tags/TagDiscoveryService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { TagDiscoveryContentType, TagDiscoveryManifest } from './types';
2
+ export interface TagDiscoveryCacheKey {
3
+ seed: string;
4
+ contentTypes: TagDiscoveryContentType[];
5
+ sampleSize: number;
6
+ limit: number;
7
+ }
8
+ /** Small, durable cache stored beside PixivFlow's database. */
9
+ export declare class TagDiscoveryStore {
10
+ private readonly directory;
11
+ private readonly now;
12
+ constructor(directory: string, now?: () => number);
13
+ pathFor(key: TagDiscoveryCacheKey): string;
14
+ loadFresh(key: TagDiscoveryCacheKey): Promise<{
15
+ manifest: TagDiscoveryManifest;
16
+ path: string;
17
+ } | undefined>;
18
+ save(key: TagDiscoveryCacheKey, manifest: TagDiscoveryManifest): Promise<string>;
19
+ read(path: string): Promise<TagDiscoveryManifest>;
20
+ }
21
+ //# sourceMappingURL=TagDiscoveryStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagDiscoveryStore.d.ts","sourceRoot":"","sources":["../../src/tags/TagDiscoveryStore.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,uBAAuB,EAAE,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,+DAA+D;AAC/D,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,MAAiB;IAG/C,OAAO,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM;IAapC,SAAS,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,oBAAoB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAc3G,IAAI,CAAC,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAchF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAOxD"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TagDiscoveryStore = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ /** Small, durable cache stored beside PixivFlow's database. */
8
+ class TagDiscoveryStore {
9
+ directory;
10
+ now;
11
+ constructor(directory, now = Date.now) {
12
+ this.directory = directory;
13
+ this.now = now;
14
+ }
15
+ pathFor(key) {
16
+ const digest = (0, node_crypto_1.createHash)('sha256')
17
+ .update(JSON.stringify({
18
+ seed: key.seed.trim().normalize('NFKC').toLocaleLowerCase(),
19
+ contentTypes: [...key.contentTypes].sort(),
20
+ sampleSize: key.sampleSize,
21
+ limit: key.limit,
22
+ }))
23
+ .digest('hex')
24
+ .slice(0, 16);
25
+ return (0, node_path_1.join)(this.directory, `tag-discovery-${digest}.json`);
26
+ }
27
+ async loadFresh(key) {
28
+ const path = this.pathFor(key);
29
+ try {
30
+ const manifest = JSON.parse(await node_fs_1.promises.readFile(path, 'utf8'));
31
+ if (manifest.version !== 1 || !Array.isArray(manifest.candidates))
32
+ return undefined;
33
+ const expiresAt = Date.parse(manifest.expiresAt);
34
+ if (!Number.isFinite(expiresAt) || expiresAt <= this.now())
35
+ return undefined;
36
+ return { manifest, path };
37
+ }
38
+ catch (error) {
39
+ if (error.code === 'ENOENT' || error instanceof SyntaxError)
40
+ return undefined;
41
+ throw error;
42
+ }
43
+ }
44
+ async save(key, manifest) {
45
+ await node_fs_1.promises.mkdir(this.directory, { recursive: true });
46
+ const path = this.pathFor(key);
47
+ const temporaryPath = `${path}.${process.pid}.${(0, node_crypto_1.randomUUID)()}.tmp`;
48
+ try {
49
+ await node_fs_1.promises.writeFile(temporaryPath, `${JSON.stringify(manifest, null, 2)}\n`, 'utf8');
50
+ await node_fs_1.promises.rename(temporaryPath, path);
51
+ }
52
+ catch (error) {
53
+ await node_fs_1.promises.unlink(temporaryPath).catch(() => undefined);
54
+ throw error;
55
+ }
56
+ return path;
57
+ }
58
+ async read(path) {
59
+ const manifest = JSON.parse(await node_fs_1.promises.readFile(path, 'utf8'));
60
+ if (manifest.version !== 1 || !manifest.seed || !Array.isArray(manifest.candidates)) {
61
+ throw new Error(`Invalid tag discovery manifest: ${path}`);
62
+ }
63
+ return manifest;
64
+ }
65
+ }
66
+ exports.TagDiscoveryStore = TagDiscoveryStore;
67
+ //# sourceMappingURL=TagDiscoveryStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagDiscoveryStore.js","sourceRoot":"","sources":["../../src/tags/TagDiscoveryStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { TagDiscoveryManifest } from './types';
2
+ export interface TagPlanApplyOptions {
3
+ targetId: string;
4
+ selectedTags: string[];
5
+ mode?: 'append' | 'replace';
6
+ }
7
+ export interface TagPlanApplyResult {
8
+ targetId: string;
9
+ previousTag?: string;
10
+ tag: string;
11
+ selectedTags: string[];
12
+ backupPath: string;
13
+ }
14
+ /** Applies an explicitly selected subset and atomically publishes the config. */
15
+ export declare class TagPlanApplier {
16
+ apply(configPath: string, manifest: TagDiscoveryManifest, options: TagPlanApplyOptions): Promise<TagPlanApplyResult>;
17
+ private resolveSelectedTags;
18
+ private existingTags;
19
+ private unique;
20
+ private key;
21
+ }
22
+ //# sourceMappingURL=TagPlanApplier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagPlanApplier.d.ts","sourceRoot":"","sources":["../../src/tags/TagPlanApplier.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,iFAAiF;AACjF,qBAAa,cAAc;IACnB,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IA8C9B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,GAAG;CAGZ"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TagPlanApplier = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const validation_1 = require("../config/validation");
8
+ /** Applies an explicitly selected subset and atomically publishes the config. */
9
+ class TagPlanApplier {
10
+ async apply(configPath, manifest, options) {
11
+ const selectedTags = this.resolveSelectedTags(manifest, options.selectedTags);
12
+ if (selectedTags.length === 0)
13
+ throw new Error('At least one candidate tag must be selected');
14
+ if (selectedTags.some((tag) => /\s/u.test(tag))) {
15
+ throw new Error('Selected Pixiv tags containing whitespace cannot be represented by the current OR-tag config format');
16
+ }
17
+ const raw = await node_fs_1.promises.readFile(configPath, 'utf8');
18
+ const config = JSON.parse(raw);
19
+ const target = config.targets.find((item) => item.id === options.targetId);
20
+ if (!target)
21
+ throw new Error(`Target id not found: ${options.targetId}`);
22
+ if (target.mode === 'ranking' && target.filterTag) {
23
+ throw new Error(`Target ${options.targetId} uses ranking.filterTag; tag discovery apply supports search targets only`);
24
+ }
25
+ const previousTag = target.tag;
26
+ const existing = options.mode === 'replace' ? [] : this.existingTags(target);
27
+ const nextTags = this.unique([...existing, ...selectedTags]);
28
+ target.tag = nextTags.join(' ');
29
+ target.tagRelation = 'or';
30
+ target.searchTarget = target.searchTarget ?? 'partial_match_for_tags';
31
+ (0, validation_1.validateConfig)(config, configPath, config.storage?.databasePath);
32
+ const temporaryPath = `${configPath}.${process.pid}.${(0, node_crypto_1.randomUUID)()}.tmp`;
33
+ const backupPath = `${configPath}.tag-apply.bak`;
34
+ const mode = (await node_fs_1.promises.stat(configPath)).mode;
35
+ await node_fs_1.promises.mkdir((0, node_path_1.dirname)(configPath), { recursive: true });
36
+ await node_fs_1.promises.copyFile(configPath, backupPath);
37
+ try {
38
+ await node_fs_1.promises.writeFile(temporaryPath, `${JSON.stringify(config, null, 2)}\n`, 'utf8');
39
+ await node_fs_1.promises.chmod(temporaryPath, mode);
40
+ await node_fs_1.promises.rename(temporaryPath, configPath);
41
+ }
42
+ catch (error) {
43
+ await node_fs_1.promises.unlink(temporaryPath).catch(() => undefined);
44
+ throw error;
45
+ }
46
+ return {
47
+ targetId: options.targetId,
48
+ previousTag,
49
+ tag: target.tag,
50
+ selectedTags,
51
+ backupPath,
52
+ };
53
+ }
54
+ resolveSelectedTags(manifest, requested) {
55
+ const candidates = new Map(manifest.candidates.map((candidate) => [this.key(candidate.name), candidate.name]));
56
+ return this.unique(requested.map((value) => {
57
+ const candidate = candidates.get(this.key(value));
58
+ if (!candidate)
59
+ throw new Error(`Tag is not in the discovery manifest: ${value}`);
60
+ return candidate;
61
+ }));
62
+ }
63
+ existingTags(target) {
64
+ const current = target.tag?.trim();
65
+ if (!current)
66
+ return [];
67
+ if (target.tagRelation !== 'or')
68
+ return [current];
69
+ return current.split(/\s+/u).filter(Boolean);
70
+ }
71
+ unique(values) {
72
+ const seen = new Set();
73
+ return values.filter((value) => {
74
+ const key = this.key(value);
75
+ if (!key || seen.has(key))
76
+ return false;
77
+ seen.add(key);
78
+ return true;
79
+ });
80
+ }
81
+ key(value) {
82
+ return value.trim().normalize('NFKC').toLocaleLowerCase();
83
+ }
84
+ }
85
+ exports.TagPlanApplier = TagPlanApplier;
86
+ //# sourceMappingURL=TagPlanApplier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagPlanApplier.js","sourceRoot":"","sources":["../../src/tags/TagPlanApplier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { PixivTag } from '../pixiv/types';
2
+ export type TagDiscoveryContentType = 'illustration' | 'novel';
3
+ export interface TagDiscoveryCandidate {
4
+ name: string;
5
+ translatedName?: string;
6
+ sources: Array<'autocomplete' | 'cooccurrence'>;
7
+ types: TagDiscoveryContentType[];
8
+ occurrences: {
9
+ illustration: number;
10
+ novel: number;
11
+ };
12
+ score: number;
13
+ }
14
+ export interface TagDiscoveryManifest {
15
+ version: 1;
16
+ seed: string;
17
+ createdAt: string;
18
+ expiresAt: string;
19
+ contentTypes: TagDiscoveryContentType[];
20
+ sampleSize: number;
21
+ sampledWorks: {
22
+ illustration: number;
23
+ novel: number;
24
+ };
25
+ candidates: TagDiscoveryCandidate[];
26
+ }
27
+ export interface TagDiscoveryClient {
28
+ getTagAutocomplete(seed: string): Promise<PixivTag[]>;
29
+ searchIllustrationsForTags(seed: string, limit: number): Promise<Array<{
30
+ tags?: PixivTag[];
31
+ }>>;
32
+ searchNovelsForTags(seed: string, limit: number): Promise<Array<{
33
+ tags?: PixivTag[];
34
+ }>>;
35
+ }
36
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tags/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC;IAChD,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACjC,WAAW,EAAE;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,uBAAuB,EAAE,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtD,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC,CAAC,CAAC;IAC/F,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC,CAAC,CAAC;CACzF"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tags/types.ts"],"names":[],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "type": "commonjs",
3
3
  "name": "pixivflow-webui-backend",
4
- "version": "2.8.0",
4
+ "version": "2.9.0",
5
5
  "description": "PixivFlow WebUI Backend - CommonJS module"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixivflow",
3
- "version": "2.8.0",
3
+ "version": "2.9.0",
4
4
  "description": "🎨 智能的 Pixiv 自动化下载工具 - 支持批量下载插画和小说、定时任务、Docker部署 | Intelligent Pixiv Automation Downloader with batch download, scheduler, and Docker support",
5
5
  "repository": {
6
6
  "type": "git",