karin-plugin-kkk
Version:
Karin 的「抖音」「B 站」视频解析/动态推送插件
66 lines (65 loc) • 2.89 kB
JavaScript
import karin, { logger } from "node-karin";
import "../chunk/db-39zy-DOZ.js";
import "../root.js";
import "node:fs";
import "../chunk/vendor-BfPxWvnG.js";
import { c as getDouyinID, d as DouYin, C as Config, e as getBilibiliID, f as Bilibili, h as getKuaishouID, i as fetchKuaishouData, K as Kuaishou, a as Common } from "../chunk/main-44zR6G4D.js";
import "node-karin/axios";
import "stream/promises";
import "node:path";
import "node:child_process";
import "playwright";
const reg = {
douyin: /^.*((www|v|jx|m)\.(douyin|iesdouyin)\.com|douyin\.com\/(video|note)).*/,
bilibili: /(bilibili.com|b23.tv|t.bilibili.com|bili2233.cn|BV[a-zA-Z0-9]{10,})/,
kuaishou: /^((.*)快手(.*)快手(.*)|(.*)v\.kuaishou(.*))$/
};
const douyin = karin.command(reg.douyin, async (e) => {
const url = String(e.msg.match(/(http|https):\/\/.*\.(douyin|iesdouyin)\.com\/[^ ]+/g));
const iddata = await getDouyinID(e, url);
await new DouYin(e, iddata).RESOURCES(iddata);
return true;
}, { name: "kkk-视频功能-抖音", priority: Config.app.defaulttool ? -Infinity : 800 });
const bilibili = karin.command(reg.bilibili, async (e) => {
e.msg = e.msg.replace(/\\/g, "");
const urlRegex = /(https?:\/\/(?:www\.bilibili\.com|m\.bilibili\.com|t\.bilibili\.com|b23\.tv|bili2233\.cn)\/[a-zA-Z0-9_\-.~:/?#[\]@!$&'()*+,;=]+)/;
const bvRegex = /^BV[1-9a-zA-Z]{10}$/;
let url = null;
const urlMatch = e.msg.match(urlRegex);
if (urlMatch) {
url = urlMatch[0];
} else if (bvRegex.test(e.msg)) {
url = `https://www.bilibili.com/video/${e.msg}`;
}
if (!url) {
logger.warn(`未能在消息中找到有效的B站分享链接或BV号: ${e.msg}`);
return true;
}
const iddata = await getBilibiliID(url);
await new Bilibili(e, iddata).RESOURCES(iddata);
return true;
}, { name: "kkk-视频功能-B站", priority: Config.app.defaulttool ? -Infinity : 800 });
const kuaishou = karin.command(reg.kuaishou, async (e) => {
const iddata = await getKuaishouID(String(e.msg.replaceAll("\\", "").match(/https:\/\/v\.kuaishou\.com\/\w+/g)));
const WorkData = await fetchKuaishouData(iddata.type, iddata);
await new Kuaishou(e, iddata).RESOURCES(WorkData);
}, { name: "kkk-视频功能-快手", priority: Config.app.defaulttool ? -Infinity : 800 });
const prefix = karin.command(/^#?(解析|kkk解析)/, async (e, next) => {
e.msg = await Common.getReplyMessage(e);
if (reg.douyin.test(e.msg)) {
return await douyin.fnc(e, next);
} else if (reg.bilibili.test(e.msg)) {
return await bilibili.fnc(e, next);
} else if (reg.kuaishou.test(e.msg)) {
return await kuaishou.fnc(e, next);
}
}, { name: "kkk-视频功能-引用解析" });
const douyinAPP = Config.douyin.switch && douyin;
const bilibiliAPP = Config.bilibili.switch && bilibili;
const kuaishouAPP = Config.kuaishou.switch && kuaishou;
export {
bilibiliAPP,
douyinAPP,
kuaishouAPP,
prefix
};