koishi-plugin-comic 1.0.7 → 1.0.9

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.
@@ -0,0 +1,70 @@
1
+ import { Context } from 'koishi';
2
+ export interface Config {
3
+ apiBase: string;
4
+ concurrency: number;
5
+ logInfo: boolean;
6
+ pdfPassword?: string;
7
+ }
8
+ export interface ComicItem {
9
+ id: string;
10
+ title: string;
11
+ author?: string;
12
+ source?: string;
13
+ cover?: string;
14
+ }
15
+ export interface SearchResult {
16
+ keyword: string;
17
+ best_match: ComicItem | null;
18
+ all_results: {
19
+ jm: ComicItem[];
20
+ bika: ComicItem[];
21
+ };
22
+ }
23
+ export interface ComicDetail {
24
+ title: string;
25
+ author?: string;
26
+ description?: string;
27
+ cover?: string;
28
+ source?: string;
29
+ chapters: {
30
+ id: string;
31
+ name: string;
32
+ }[];
33
+ }
34
+ export interface ApiResponse<T = any> {
35
+ success: boolean;
36
+ data?: T;
37
+ error?: string;
38
+ }
39
+ export declare function getPdfPassword(source: string, comicId: string, chapterId: string): string;
40
+ export declare function sanitizeFilename(name: string): string;
41
+ export declare function determineSource(id: string): {
42
+ source: 'jm' | 'bika';
43
+ id: string;
44
+ } | null;
45
+ export declare function formatComics(comics: ComicItem[], sourceLabel?: string): string;
46
+ /**
47
+ * 封装 comic-api 后端的 HTTP 访问,命令与 ChatLuna 工具共用。
48
+ */
49
+ export declare class ComicAPI {
50
+ private ctx;
51
+ private config;
52
+ constructor(ctx: Context, config: Config);
53
+ get apiBase(): string;
54
+ get concurrency(): number;
55
+ resolvePassword(source: string, comicId: string, chapterId: string): string;
56
+ get<T = any>(path: string, params?: Record<string, string>): Promise<T>;
57
+ search(keyword: string): Promise<SearchResult>;
58
+ detail(source: 'jm' | 'bika', id: string): Promise<ComicDetail>;
59
+ /**
60
+ * 解析用户输入:可能是 ID(jm/bika),也可能是名字(需搜索)。
61
+ * 返回确定的 source 与 id,解析失败返回 null。
62
+ */
63
+ resolveTarget(input: string): Promise<{
64
+ source: 'jm' | 'bika';
65
+ id: string;
66
+ } | null>;
67
+ buildDownloadUrl(source: 'jm' | 'bika', id: string, chapterId: string, title: string, chapterName: string, password: string): string;
68
+ downloadPdf(url: string): Promise<Buffer>;
69
+ }
70
+ //# sourceMappingURL=comic-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comic-api.d.ts","sourceRoot":"","sources":["../src/comic-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ComicAPI = void 0;
4
+ exports.getPdfPassword = getPdfPassword;
5
+ exports.sanitizeFilename = sanitizeFilename;
6
+ exports.determineSource = determineSource;
7
+ exports.formatComics = formatComics;
8
+ const crypto_1 = require("crypto");
9
+ function getPdfPassword(source, comicId, chapterId) {
10
+ const src = source.trim().toLowerCase();
11
+ const seed = `${src}:${comicId}:${chapterId}`;
12
+ const hash = (0, crypto_1.createHash)('sha256').update(seed).digest('hex');
13
+ const value = parseInt(hash.slice(0, 12), 16) % 1000000;
14
+ return value.toString().padStart(6, '0');
15
+ }
16
+ function sanitizeFilename(name) {
17
+ return name.replace(/[\\/:*?"<>|]/g, '_').replace(/\s+/g, '').replace(/_+/g, '_').replace(/^_+|_+$/g, '') || 'comic';
18
+ }
19
+ function determineSource(id) {
20
+ const clean = id.trim();
21
+ const hasJm = /jm/i.test(clean) || /禁漫/i.test(clean);
22
+ const digitMatch = clean.match(/\d+/);
23
+ if (hasJm && digitMatch) {
24
+ return { source: 'jm', id: digitMatch[0] };
25
+ }
26
+ if (/^\d+$/.test(clean)) {
27
+ return { source: 'jm', id: clean };
28
+ }
29
+ if (/^[0-9a-fA-F]{24}$/.test(clean)) {
30
+ return { source: 'bika', id: clean };
31
+ }
32
+ return null;
33
+ }
34
+ function formatComics(comics, sourceLabel = '') {
35
+ if (!comics || comics.length === 0)
36
+ return '没有找到相关漫画。';
37
+ return comics.map((c, i) => {
38
+ const src = c.source === 'jm' ? '禁漫' : c.source === 'bika' ? '哔咔' : sourceLabel;
39
+ return `${i + 1}. [${src}|${c.id}] ${c.title} 作者:${c.author || '佚名'}`;
40
+ }).join('\n');
41
+ }
42
+ /**
43
+ * 封装 comic-api 后端的 HTTP 访问,命令与 ChatLuna 工具共用。
44
+ */
45
+ class ComicAPI {
46
+ constructor(ctx, config) {
47
+ this.ctx = ctx;
48
+ this.config = config;
49
+ }
50
+ get apiBase() {
51
+ return this.config.apiBase.replace(/\/+$/, '');
52
+ }
53
+ get concurrency() {
54
+ return this.config.concurrency;
55
+ }
56
+ resolvePassword(source, comicId, chapterId) {
57
+ return this.config.pdfPassword || getPdfPassword(source, comicId, chapterId);
58
+ }
59
+ async get(path, params) {
60
+ let url = this.apiBase + path;
61
+ if (params) {
62
+ const qs = new URLSearchParams(params).toString();
63
+ if (qs)
64
+ url += '?' + qs;
65
+ }
66
+ if (this.config.logInfo)
67
+ this.ctx.logger('comic').info(`GET ${url}`);
68
+ const res = await this.ctx.http.get(url);
69
+ return res;
70
+ }
71
+ search(keyword) {
72
+ return this.get('/api/search', { keyword });
73
+ }
74
+ detail(source, id) {
75
+ return this.get(`/api/comic/${source}/${id}`);
76
+ }
77
+ /**
78
+ * 解析用户输入:可能是 ID(jm/bika),也可能是名字(需搜索)。
79
+ * 返回确定的 source 与 id,解析失败返回 null。
80
+ */
81
+ async resolveTarget(input) {
82
+ const resolved = determineSource(input);
83
+ if (resolved)
84
+ return resolved;
85
+ const searchResult = await this.search(input);
86
+ const jmList = searchResult.all_results?.jm || [];
87
+ const bikaList = searchResult.all_results?.bika || [];
88
+ if (jmList.length > 0)
89
+ return { source: 'jm', id: jmList[0].id };
90
+ if (bikaList.length > 0)
91
+ return { source: 'bika', id: bikaList[0].id };
92
+ return null;
93
+ }
94
+ buildDownloadUrl(source, id, chapterId, title, chapterName, password) {
95
+ return this.apiBase
96
+ + `/api/download/${source}/${id}/${chapterId}`
97
+ + `?title=${encodeURIComponent(title)}`
98
+ + `&chapter=${encodeURIComponent(chapterName)}`
99
+ + `&password=${encodeURIComponent(password)}`
100
+ + `&concurrency=${this.config.concurrency}`;
101
+ }
102
+ async downloadPdf(url) {
103
+ if (this.config.logInfo)
104
+ this.ctx.logger('comic').info(`Downloading: ${url}`);
105
+ const response = await this.ctx.http.get(url, { responseType: 'arraybuffer' });
106
+ return Buffer.from(response);
107
+ }
108
+ }
109
+ exports.ComicAPI = ComicAPI;
110
+ //# sourceMappingURL=comic-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comic-api.js","sourceRoot":"","sources":["../src/comic-api.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -12,55 +12,29 @@ export declare const inject: {
12
12
  required: string[];
13
13
  optional: string[];
14
14
  };
15
- export declare const usage = "\n<h2>\u805A\u5408\u6F2B\u753B\u641C\u7D22\u4E0E\u4E0B\u8F7D\u63D2\u4EF6</h2>\n<p>\u4F7F\u7528\u524D\u8BF7\u5148\u90E8\u7F72 <a href=\"https://github.com/lumia1998/comic-api\">comic-api</a> \u540E\u7AEF\u670D\u52A1</p>\n<p>\u652F\u6301\u7981\u6F2B\u5929\u5802(JM)\u548C\u54D4\u5494\u6F2B\u753B(Bika)\u53CC\u5E73\u53F0\u805A\u5408\u641C\u7D22</p>\n<h3>\u547D\u4EE4\u5217\u8868</h3>\n<ul>\n <li><code>comic [\u5173\u952E\u8BCD]</code> - \u805A\u5408\u641C\u7D22/\u76F4\u63A5\u4E0B\u8F7D\u6F2B\u753B</li>\n <li><code>comic search &lt;\u5173\u952E\u8BCD&gt;</code> - \u805A\u5408\u641C\u7D22\u6F2B\u753B</li>\n <li><code>comic download &lt;ID&gt; [\u7AE0\u8282ID]</code> - \u4E0B\u8F7D\u6F2B\u753BPDF</li>\n <li><code>comic detail &lt;\u5173\u952E\u8BCD/ID&gt;</code> - \u67E5\u770B\u6F2B\u753B\u8BE6\u60C5</li>\n <li><code>comic leaderboard [\u7C7B\u578B]</code> - \u6392\u884C\u699C</li>\n <li><code>comic latest</code> - \u6700\u8FD1\u66F4\u65B0</li>\n <li><code>comic random</code> - \u968F\u673A\u63A8\u8350</li>\n</ul>\n";
15
+ export declare const usage = "\n<h2>\u805A\u5408\u6F2B\u753B\u641C\u7D22\u4E0E\u4E0B\u8F7D\u63D2\u4EF6</h2>\n<p>\u4F7F\u7528\u524D\u8BF7\u5148\u90E8\u7F72 <a href=\"https://github.com/lumia1998/comic-api\">comic-api</a> \u540E\u7AEF\u670D\u52A1</p>\n<p>\u652F\u6301\u7981\u6F2B\u5929\u5802(JM)\u548C\u54D4\u5494\u6F2B\u753B(Bika)\u53CC\u5E73\u53F0\u805A\u5408\u641C\u7D22</p>\n<h3>\u547D\u4EE4\u5217\u8868</h3>\n<ul>\n <li><code>comic [\u5173\u952E\u8BCD]</code> - \u805A\u5408\u641C\u7D22/\u76F4\u63A5\u4E0B\u8F7D\u6F2B\u753B</li>\n <li><code>comic search &lt;\u5173\u952E\u8BCD/ID&gt;</code> - \u805A\u5408\u641C\u7D22\u6F2B\u753B\uFF0C\u5404\u5E73\u53F0\u6700\u591A8\u6761\uFF0C\u5408\u5E76\u8F6C\u53D1\u5E76\u6807\u6CE8\u6765\u6E90</li>\n <li><code>comic download &lt;ID&gt; [\u7AE0\u8282ID]</code> - \u4E0B\u8F7D\u6F2B\u753BPDF</li>\n <li><code>comic detail &lt;\u5173\u952E\u8BCD/ID&gt;</code> - \u67E5\u770B\u6F2B\u753B\u8BE6\u60C5\uFF0C\u5173\u952E\u8BCD\u6A21\u5F0F\u4E0B\u53CC\u5E73\u53F0\u5404\u5C55\u793A\u6700\u76F8\u4F3C\u7ED3\u679C</li>\n <li><code>comic leaderboard [\u7C7B\u578B] [\u9875\u7801]</code> - \u6392\u884C\u699C(\u7C7B\u578B: day/week/month/total\uFF0C\u9ED8\u8BA4day)\uFF0C\u53CC\u5E73\u53F0\u52062\u6761\u53D1\u9001</li>\n <li><code>comic latest [-n \u6570\u91CF]</code> - \u6700\u8FD1\u66F4\u65B0\uFF0C\u6BCF\u5E73\u53F0\u9ED8\u8BA410\u6761(\u6700\u591A50)\uFF0C\u53CC\u5E73\u53F0\u52062\u6761\u53D1\u9001</li>\n <li><code>comic random [-n \u6570\u91CF]</code> - \u968F\u673A\u63A8\u8350\uFF0C\u6BCF\u5E73\u53F0\u9ED8\u8BA45\u4E2A(\u6700\u591A20)\uFF0C\u53CC\u5E73\u53F0\u52062\u6761\u53D1\u9001</li>\n</ul>\n";
16
16
  export interface Config {
17
17
  apiBase: string;
18
- defaultSource: 'jm' | 'bika';
19
18
  concurrency: number;
20
19
  logInfo: boolean;
21
20
  pdfPassword?: string;
22
21
  pdfSendMethod: 'buffer' | 'file';
23
22
  fileSendPath: string;
24
- tool: {
25
- enabled: boolean;
26
- name: string;
27
- description: string;
28
- };
29
23
  }
30
24
  export declare const Config: Schema<Schemastery.ObjectS<{
31
25
  apiBase: Schema<string, string>;
32
- defaultSource: Schema<"jm" | "bika", "jm" | "bika">;
33
26
  concurrency: Schema<number, number>;
34
27
  logInfo: Schema<boolean, boolean>;
35
28
  pdfPassword: Schema<string, string>;
36
29
  pdfSendMethod: Schema<"buffer" | "file", "buffer" | "file">;
37
30
  fileSendPath: Schema<string, string>;
38
- tool: Schema<Schemastery.ObjectS<{
39
- enabled: Schema<boolean, boolean>;
40
- name: Schema<string, string>;
41
- description: Schema<string, string>;
42
- }>, Schemastery.ObjectT<{
43
- enabled: Schema<boolean, boolean>;
44
- name: Schema<string, string>;
45
- description: Schema<string, string>;
46
- }>>;
47
31
  }>, Schemastery.ObjectT<{
48
32
  apiBase: Schema<string, string>;
49
- defaultSource: Schema<"jm" | "bika", "jm" | "bika">;
50
33
  concurrency: Schema<number, number>;
51
34
  logInfo: Schema<boolean, boolean>;
52
35
  pdfPassword: Schema<string, string>;
53
36
  pdfSendMethod: Schema<"buffer" | "file", "buffer" | "file">;
54
37
  fileSendPath: Schema<string, string>;
55
- tool: Schema<Schemastery.ObjectS<{
56
- enabled: Schema<boolean, boolean>;
57
- name: Schema<string, string>;
58
- description: Schema<string, string>;
59
- }>, Schemastery.ObjectT<{
60
- enabled: Schema<boolean, boolean>;
61
- name: Schema<string, string>;
62
- description: Schema<string, string>;
63
- }>>;
64
38
  }>>;
65
39
  export declare function apply(ctx: Context, config: Config): void;
66
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAA;AASpD,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,OAAO;QACf,QAAQ,CAAC,EAAE;YACT,QAAQ,EAAE;gBACR,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAA;aAC/C,CAAA;SACF,CAAA;KACF;CACF;AAED,eAAO,MAAM,MAAM;;;CAGlB,CAAA;AAED,eAAO,MAAM,KAAK,0gCAcjB,CAAA;AAED,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,IAAI,GAAG,MAAM,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BjB,CAAA;AAsEF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAihBjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAA;AASpD,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,OAAO;QACf,QAAQ,CAAC,EAAE;YACT,QAAQ,EAAE;gBACR,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAA;aAC/C,CAAA;SACF,CAAA;KACF;CACF;AAED,eAAO,MAAM,MAAM;;;CAGlB,CAAA;AAED,eAAO,MAAM,KAAK,slDAcjB,CAAA;AAED,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;GAmBjB,CAAA;AA8DF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QA6rBjD"}