UNPKG

koishi-plugin-equery

Version:

山东大学青岛校区宿舍剩余电量查询

152 lines (151 loc) 5.48 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildingToId = buildingToId; exports.query = query; const axios_1 = __importDefault(require("axios")); const response_1 = require("./utils/response"); const BUILDINGS = [ { buildingid: "1574231830%26T1", building: "T1", }, { buildingid: "1574231833%26%E4%B8%93%E5%AE%B6%E5%85%AC%E5%AF%932%E5%8F%B7%E6%A5%BC", building: "T2", }, { buildingid: "1574231835%26T3", building: "T3", }, { buildingid: "1503975832%26%E5%87%A4%E5%87%B0%E5%B1%851%E5%8F%B7%E6%A5%BC", building: "S1", }, { buildingid: "1503975890%26%E5%87%A4%E5%87%B0%E5%B1%852%E5%8F%B7%E6%A5%BC", building: "S2", }, { buildingid: "1503975967%26S5%E5%87%A4%E5%87%B0%E5%B1%855%E5%8F%B7%E6%A5%BC", building: "S5", }, { buildingid: "1503975980%26%E5%87%A4%E5%87%B0%E5%B1%856%E5%8F%B7%E6%A5%BC", building: "S6", }, { buildingid: "1503975988%26S7%E5%87%A4%E5%87%B0%E5%B1%857%E5%8F%B7%E6%A5%BC", building: "S7", }, { buildingid: "1503975995%26S8%E5%87%A4%E5%87%B0%E5%B1%858%E5%8F%B7%E6%A5%BC", building: "S8", }, { buildingid: "1503976004%26%E5%87%A4%E5%87%B0%E5%B1%859%E5%8F%B7%E6%A5%BC", building: "S9", }, { buildingid: "1503976037%26%E5%87%A4%E5%87%B0%E5%B1%8510%E5%8F%B7%E6%A5%BC", building: "S10", }, { buildingid: "1599193777%26S11", building: "S11", }, { buildingid: "1661835273%26B5%E5%8F%B7%E6%A5%BC", building: "B5", }, { buildingid: "1661835249%26B1", building: "B1", }, { buildingid: "1661835256%26B2", building: "B2", }, { buildingid: "1693031698%26B9", building: "B9", }, { buildingid: "1693031710%26%E9%98%85%E6%B5%B7%E5%B1%85B10%E6%A5%BC", building: "B10", }, ]; function buildingToId(building) { for (const _building of BUILDINGS) { if (_building.building === building) { return _building.buildingid; } } console.error("错误的宿舍楼编号"); return ""; } async function query(building, room, synjonesAuth) { if (!synjonesAuth || synjonesAuth.trim() === "") { return (0, response_1.failure)("配置错误", "缺少有效的API密钥,请在插件配置中设置Synjones-Auth验证令牌"); } const HEADERS = { "User-Agent": "Mozilla/5.0 (Linux; Android 14; Build/UKQ1.230804.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/131.0.6778.39 Mobile Safari/537.36", "Content-Type": "application/x-www-form-urlencoded", Origin: "https://mcard.sdu.edu.cn", Referer: "https://mcard.sdu.edu.cn/charge-app/", "Synjones-Auth": synjonesAuth, "Sec-Fetch-Site": "same-origin", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Dest": "empty", "Sec-Ch-Ua-Platform": "Android", "Sec-Ch-Ua": '"Android WebView";v="131", "Chromium";v="131", "Not_A Brand";v="24"', "Sec-Ch-Ua-Mobile": "?1", Accept: "application/json, text/plain, */*", }; const buildingId = buildingToId(building); if (!buildingId) { return (0, response_1.failure)("错误的宿舍楼编号"); } const data = `feeitemid=410&type=IEC&level=3&campus=%E9%9D%92%E5%B2%9B%E6%A0%A1%E5%8C%BA%26%E9%9D%92%E5%B2%9B%E6%A0%A1%E5%8C%BA&building=${buildingId}&room=${room}`; try { const response = await axios_1.default.post("https://mcard.sdu.edu.cn/charge/feeitem/getThirdData", data, { headers: HEADERS }); console.log("响应数据结构:", JSON.stringify(response.data)); if (!response.data || !response.data.map || !response.data.map.showData || !response.data.map.showData["信息"]) { console.error("返回数据结构不符合预期:", response.data); return (0, response_1.failure)("数据格式错误", "服务器返回的数据格式不符合预期"); } try { const electricityInfo = response.data.map.showData["信息"]; console.log("原始电量信息:", electricityInfo); const result = electricityInfo.substring(8); console.log("解析到的电量值:", result); const roomInfo = response.data.map.data; const returnValue = { success: true, message: result, data: { electricity: result, buildingName: roomInfo.buildingName || "", room: roomInfo.room || "", area: roomInfo.area || "青岛校区", areaName: roomInfo.areaName || "青岛校区", }, }; console.log("query.ts 返回值:", JSON.stringify(returnValue)); return returnValue; } catch (error) { console.error("处理电量数据时出错:", error); return (0, response_1.failure)("数据处理错误", "无法解析电量信息"); } } catch (error) { console.error(error); return (0, response_1.failure)("查询失败"); } }