koishi-plugin-yutang-bili 0.0.1
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/lib/index.d.ts +8 -0
- package/lib/index.js +153 -0
- package/package.json +20 -0
- package/readme.md +5 -0
package/lib/index.d.ts
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
import { Context, Schema } from 'koishi';
|
2
|
+
export declare const name = "yutang-bili";
|
3
|
+
export interface Config {
|
4
|
+
showUrl: boolean;
|
5
|
+
}
|
6
|
+
export declare const usage = "# \uD83D\uDC90\u2B50\uFE0FB\u7AD9\u70ED\u699C\u2B50\uFE0F\uD83D\uDC90\n- `bililist <mode>`\uFF1A\u83B7\u53D6B\u7AD9\u89C6\u9891\u70ED\u95E8\u699C\u5355\uFF0C\u53EF\u4F20\u5165 1-21 \u7684\u6570\u5B57\u6307\u5B9A\u699C\u5355\u7C7B\u578B\n\n1\uFF08\u603B\u699C\uFF09\u30012\uFF08\u756A\u5267\u699C\uFF09\u30013\uFF08\u56FD\u521B\u699C\uFF09\u30014\uFF08\u7EAA\u5F55\u7247\u699C\uFF09\u30015\uFF08\u7535\u5F71\u699C\uFF09\u30016\uFF08\u7535\u89C6\u5267\u699C\uFF09\u30017\uFF08\u7EFC\u827A\u699C\uFF09\u30018\uFF08\u52A8\u753B\u699C\uFF09\u30019\uFF08\u6E38\u620F\u699C\uFF09\u300110\uFF08\u9B3C\u755C\u699C\uFF09\u300111\uFF08\u97F3\u4E50\u699C\uFF09\u300112\uFF08\u821E\u8E48\u699C\uFF09\u300113\uFF08\u5F71\u89C6\u699C\uFF09\u300114\uFF08\u5A31\u4E50\u699C\uFF09\u300115\uFF08\u77E5\u8BC6\u699C\uFF09\u300116\uFF08\u79D1\u6280\u6570\u7801\u699C\uFF09\u300117\uFF08\u7F8E\u98DF\u699C\uFF09\u300118\uFF08\u6C7D\u8F66\u699C\uFF09\u300119\uFF08\u65F6\u5C1A\u7F8E\u5986\u699C\uFF09\u300120\uFF08\u4F53\u80B2\u8FD0\u52A8\u699C\uFF09\u300121\uFF08\u52A8\u7269\u699C\uFF09\n- \u793A\u4F8B\uFF1A`bililist 1`\n## \u611F\u8C22\n- \u5B58\u96E8 API \u63D0\u4F9B\u63A5\u53E3\n## \u53CD\u9988\n- \u5982\u679C\u4F60\u6709\u4EFB\u4F55\u95EE\u9898\u6216\u5EFA\u8BAE\uFF0C\u8BF7\u8054\u7CFB\u53D1\u53CD\u9988QQ\u7FA4\uFF1A738988912\n- \u94FE\u63A5\u8DF3\u8F6C\u3010\u7FBD\u68E0\u5A31\u4E50&\u53CD\u9988\u7FA4\u3011\uFF1Ahttps://qm.qq.com/q/h4KbK4N6a4\n";
|
7
|
+
export declare const Config: Schema<Config>;
|
8
|
+
export declare function apply(ctx: Context, config: Config): void;
|
package/lib/index.js
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
var __create = Object.create;
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
8
|
+
var __export = (target, all) => {
|
9
|
+
for (var name2 in all)
|
10
|
+
__defProp(target, name2, { get: all[name2], enumerable: true });
|
11
|
+
};
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
14
|
+
for (let key of __getOwnPropNames(from))
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
17
|
+
}
|
18
|
+
return to;
|
19
|
+
};
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
26
|
+
mod
|
27
|
+
));
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
29
|
+
|
30
|
+
// src/index.ts
|
31
|
+
var src_exports = {};
|
32
|
+
__export(src_exports, {
|
33
|
+
Config: () => Config,
|
34
|
+
apply: () => apply,
|
35
|
+
name: () => name,
|
36
|
+
usage: () => usage
|
37
|
+
});
|
38
|
+
module.exports = __toCommonJS(src_exports);
|
39
|
+
var import_koishi = require("koishi");
|
40
|
+
var import_querystring = __toESM(require("querystring"));
|
41
|
+
var name = "yutang-bili";
|
42
|
+
var usage = `# 💐⭐️B站热榜⭐️💐
|
43
|
+
- \`bililist <mode>\`:获取B站视频热门榜单,可传入 1-21 的数字指定榜单类型
|
44
|
+
|
45
|
+
1(总榜)、2(番剧榜)、3(国创榜)、4(纪录片榜)、5(电影榜)、6(电视剧榜)、7(综艺榜)、8(动画榜)、9(游戏榜)、10(鬼畜榜)、11(音乐榜)、12(舞蹈榜)、13(影视榜)、14(娱乐榜)、15(知识榜)、16(科技数码榜)、17(美食榜)、18(汽车榜)、19(时尚美妆榜)、20(体育运动榜)、21(动物榜)
|
46
|
+
- 示例:\`bililist 1\`
|
47
|
+
## 感谢
|
48
|
+
- 存雨 API 提供接口
|
49
|
+
## 反馈
|
50
|
+
- 如果你有任何问题或建议,请联系发反馈QQ群:738988912
|
51
|
+
- 链接跳转【羽棠娱乐&反馈群】:https://qm.qq.com/q/h4KbK4N6a4
|
52
|
+
`;
|
53
|
+
var Config = import_koishi.Schema.object({
|
54
|
+
showUrl: import_koishi.Schema.boolean().default(true).description("是否显示热榜链接,如果是QQ官方机器人不要开启此项")
|
55
|
+
});
|
56
|
+
async function fetchNews(mode) {
|
57
|
+
console.log("fetchNews 接收到的 mode 参数:", mode);
|
58
|
+
try {
|
59
|
+
const queryObj = { type: mode };
|
60
|
+
const url = `https://www.cunyuapi.top/blblhot?${import_querystring.default.stringify(queryObj)}`;
|
61
|
+
console.log("请求的 URL:", url);
|
62
|
+
const response = await fetch(url);
|
63
|
+
if (!response.ok) {
|
64
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
65
|
+
}
|
66
|
+
const newsList = await response.json();
|
67
|
+
return newsList;
|
68
|
+
} catch (error) {
|
69
|
+
console.error("获取新闻数据失败:", error);
|
70
|
+
return [];
|
71
|
+
}
|
72
|
+
}
|
73
|
+
__name(fetchNews, "fetchNews");
|
74
|
+
function apply(ctx, config) {
|
75
|
+
ctx.command("bililist <mode>", "获取B站视频新闻,可传入 1-21 的数字指定榜单类型").alias("b站新闻").alias("b站咨询").action(async ({ session }, mode) => {
|
76
|
+
const validModes = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21"];
|
77
|
+
if (!validModes.includes(mode)) {
|
78
|
+
session.send(`输入的数字无效,请输入:1(总榜)、2(番剧榜)、3(国创榜)、4(纪录片榜)、5(电影榜)、6(电视剧榜)、7(综艺榜)、8(动画榜)、9(游戏榜)、10(鬼畜榜)、11(音乐榜)、12(舞蹈榜)、13(影视榜)、14(娱乐榜)、15(知识榜)、16(科技数码榜)、17(美食榜)、18(汽车榜)、19(时尚美妆榜)、20(体育运动榜)、21(动物榜)。示例:bililist 1(中间有空格)`);
|
79
|
+
return;
|
80
|
+
}
|
81
|
+
const newsList = await fetchNews(mode);
|
82
|
+
if (newsList.length === 0) {
|
83
|
+
session.send("获取新闻失败,请稍后重试。");
|
84
|
+
return;
|
85
|
+
}
|
86
|
+
const fieldMapping = {
|
87
|
+
"1": ["top", "title", "desc", "img", "up", "bvid", "url"],
|
88
|
+
// 总榜
|
89
|
+
"2": ["top", "title", "img", "url", "now_upload"],
|
90
|
+
// 番剧榜
|
91
|
+
"3": ["top", "title", "img", "url", "now_upload"],
|
92
|
+
// 国创榜
|
93
|
+
"6": ["top", "title", "img", "url", "now_upload"],
|
94
|
+
// 电视剧榜
|
95
|
+
"7": ["top", "title", "img", "url", "now_upload"],
|
96
|
+
// 综艺榜
|
97
|
+
"8": ["top", "title", "img", "desc", "up", "bvid", "url"],
|
98
|
+
// 动画榜
|
99
|
+
"9": ["top", "title", "img", "desc", "up", "bvid", "url"],
|
100
|
+
// 游戏榜
|
101
|
+
"11": ["top", "title", "img", "desc", "up", "bvid", "url"],
|
102
|
+
// 音乐榜
|
103
|
+
"13": ["top", "title", "img", "desc", "up", "bvid", "url"],
|
104
|
+
// 影视榜
|
105
|
+
"14": ["top", "title", "img", "desc", "up", "bvid", "url"],
|
106
|
+
// 娱乐榜
|
107
|
+
"16": ["top", "title", "img", "desc", "up", "bvid", "url"],
|
108
|
+
// 科技数码榜
|
109
|
+
"17": ["top", "title", "img", "desc", "up", "bvid", "url"],
|
110
|
+
// 美食榜
|
111
|
+
"18": ["top", "title", "img", "desc", "up", "bvid", "url"],
|
112
|
+
// 汽车榜
|
113
|
+
"19": ["top", "title", "img", "desc", "up", "bvid", "url"],
|
114
|
+
// 时尚美妆榜
|
115
|
+
"21": ["top", "title", "img", "desc", "up", "bvid", "url"]
|
116
|
+
// 动物榜
|
117
|
+
};
|
118
|
+
const fieldRenameMapping = {
|
119
|
+
top: "排名",
|
120
|
+
title: "标题",
|
121
|
+
img: "img",
|
122
|
+
desc: "简介",
|
123
|
+
up: "up主",
|
124
|
+
bvid: "bv号",
|
125
|
+
url: "链接",
|
126
|
+
now_upload: "最新话"
|
127
|
+
};
|
128
|
+
const fieldsToShow = fieldMapping[mode] || Object.keys(newsList[0]);
|
129
|
+
let message = "最新 B 站视频榜单:\n";
|
130
|
+
newsList.slice(0, 10).forEach((news, index) => {
|
131
|
+
fieldsToShow.forEach((field) => {
|
132
|
+
const displayFieldName = fieldRenameMapping[field] || field;
|
133
|
+
if (field === "img") {
|
134
|
+
message += `${import_koishi.h.image(news[field])}
|
135
|
+
`;
|
136
|
+
} else {
|
137
|
+
message += `${displayFieldName}: ${news[field]}
|
138
|
+
`;
|
139
|
+
}
|
140
|
+
});
|
141
|
+
message += "\n";
|
142
|
+
});
|
143
|
+
session.send(message);
|
144
|
+
});
|
145
|
+
}
|
146
|
+
__name(apply, "apply");
|
147
|
+
// Annotate the CommonJS export names for ESM import in node:
|
148
|
+
0 && (module.exports = {
|
149
|
+
Config,
|
150
|
+
apply,
|
151
|
+
name,
|
152
|
+
usage
|
153
|
+
});
|
package/package.json
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"name": "koishi-plugin-yutang-bili",
|
3
|
+
"description": "最全面的biliili热榜,包含全部榜单",
|
4
|
+
"version": "0.0.1",
|
5
|
+
"main": "lib/index.js",
|
6
|
+
"typings": "lib/index.d.ts",
|
7
|
+
"files": [
|
8
|
+
"lib",
|
9
|
+
"dist"
|
10
|
+
],
|
11
|
+
"license": "MIT",
|
12
|
+
"keywords": [
|
13
|
+
"chatbot",
|
14
|
+
"koishi",
|
15
|
+
"plugin"
|
16
|
+
],
|
17
|
+
"peerDependencies": {
|
18
|
+
"koishi": "^4.18.7"
|
19
|
+
}
|
20
|
+
}
|