UNPKG

koishi-plugin-kbot

Version:
147 lines (146 loc) 5.56 kB
"use strict"; 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;