koishi-plugin-kbot
Version:
A muti-function qq bot for koishi
147 lines (146 loc) • 5.56 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDanmukuData = exports.getMedalWall = exports.getMemberCard = exports.searchUser = exports.getDynamic = void 0;
/*
* @Author: Kabuda-czh
* @Date: 2023-02-03 16:34:11
* @LastEditors: Kabuda-czh
* @LastEditTime: 2023-07-11 11:25:50
* @FilePath: \KBot-App\plugins\kbot\src\plugins\bilibili\utils\biliRequest.ts
* @Description:
*
* Copyright (c) 2023 by Kabuda-czh, All Rights Reserved.
*/
const fs = __importStar(require("node:fs"));
const enum_1 = require("../enum");
const utils_1 = require("../../utils");
const config_1 = __importDefault(require("../../../config"));
async function getDynamic(ctx, uid, logger) {
let cookie;
try {
const { bilibiliCookiePath } = config_1.default.getInstance(ctx.baseDir).getGeneratePathData();
cookie = JSON.parse(await fs.promises.readFile(bilibiliCookiePath, 'utf-8'));
}
catch (e) {
logger.error(`Failed to get cookie info. ${e}`);
throw new Error('cookie信息未找到, 请使用 --ck 或 --cookie 更新cookie信息');
}
const cookieString = Object.entries(cookie)
.map(([key, value]) => `${key}=${value}`)
.join('; ');
return ctx.http.get((0, utils_1.StringFormat)(enum_1.BilibiliDynamicType.DynamicDetailURL, uid), {
headers: {
'Referer': `https://space.bilibili.com/${uid}/dynamic`,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36',
'cookie': `${cookieString}`,
},
});
}
exports.getDynamic = getDynamic;
async function searchUser(ctx, keyword, logger) {
const data = { keyword, search_type: 'bili_user' };
let cookie;
try {
const { bilibiliCookiePath } = config_1.default.getInstance(ctx.baseDir).getGeneratePathData();
cookie = JSON.parse(await fs.promises.readFile(bilibiliCookiePath, 'utf-8'));
}
catch (e) {
logger.error(`Failed to get cookie info. ${e}`);
throw new Error('cookie信息未找到, 请使用 --ck 或 --cookie 更新cookie信息');
}
const cookieString = Object.entries(cookie)
.map(([key, value]) => `${key}=${value}`)
.join('; ');
try {
const resp = await ctx.http
.get(enum_1.BilibiliDynamicType.SearchUserByApp, {
params: data,
headers: { cookie: cookieString, ...ctx.http.config.headers },
})
.then((resp) => {
return resp;
})
.catch((e) => {
if (+e.response.status === 412) {
return ctx.http
.get(enum_1.BilibiliDynamicType.SearchUserByPC, {
params: data,
headers: { cookie: cookieString, ...ctx.http.config.headers },
})
.then((resp) => {
return resp;
});
}
});
return resp.data;
}
catch (e) {
throw new Error(`Failed to search user.${e}`);
}
}
exports.searchUser = searchUser;
async function getMemberCard(http, uid) {
try {
const resp = await http.get((0, utils_1.StringFormat)(enum_1.BilibiliDynamicType.MemberCardURL, uid));
return resp;
}
catch (e) {
throw new Error(`Failed to get member card.${e}`);
}
}
exports.getMemberCard = getMemberCard;
async function getMedalWall(http, uid, cookieString) {
try {
const resp = await http.axios({
method: 'get',
url: (0, utils_1.StringFormat)(enum_1.BilibiliDynamicType.MedalWallURL, uid),
headers: {
Cookie: cookieString,
Referer: 'https://live.bilibili.com/',
},
});
if (resp.data.code !== 0)
throw new Error('cookie 信息已过期, 请使用 --ck 或 --cookie 更新cookie信息');
return resp.data;
}
catch (e) {
throw new Error(e.message);
}
}
exports.getMedalWall = getMedalWall;
async function getDanmukuData(http, api, uid, pageNumber = 0) {
try {
const resp = await http.get((0, utils_1.StringFormat)(api, uid, pageNumber));
return resp;
}
catch (e) {
throw new Error(`Failed to get danmuku data.${e}`);
}
}
exports.getDanmukuData = getDanmukuData;