MCPcopy Create free account
hub / github.com/chavyleung/scripts / fetchMapData

Function fetchMapData

zsfc/zsfc.treasure.js:195–259  ·  view source on GitHub ↗

* @description 异步获取地图数据操作。 * @returns {Promise } 包含地图数据的 Promise 对象。

()

Source from the content-addressed store, hash-verified

193 * @returns {Promise<object>} 包含地图数据的 Promise 对象。
194 */
195async function fetchMapData() {
196 const params = {
197 'roleId': $.read(`zsfc_roleId`),
198 'uin': $.read(`zsfc_uin`),
199 'areaId': $.read(`zsfc_areaId`),
200 };
201 const url = `https://bang.qq.com/app/speed/treasure/index?${$.queryStr(params)}`;
202 $.log(`🧑‍💻 正在获取地图数据`);
203 let mapData = {};
204
205 return new Promise(resolve => {
206 $.get(url, (error, response, data) => {
207 if (data) {
208 // 提取userInfo和mapInfo的数据
209 const [userInfoData, mapInfoData, todaycanTimes, todayTimes] = [
210 data.match(/window\.userInfo\s*=\s*eval\('([^']+)'\);/)?.[1],
211 data.match(/window\.mapInfo\s*=\s*eval\('([^']+)'\);/)?.[1],
212 data.match(/"todaycanTimes":(\d+)/)?.[1],
213 data.match(/"todayTimes":(\d+)/)?.[1]
214 ].map(match => match && eval(`(${match})`));
215
216 // 判断今日可寻宝次数是否用完
217 if ((todaycanTimes - todayTimes)) { // 次数没有用完
218 // 固定 iFlowId 列表
219 const iFlowIdArray = {
220 "1": ["856152", "856155"], // 1星
221 "2": ["856156", "856157"], // 2星,100次
222 "3": ["856158", "856159"], // 3星,300次
223 "4": ["856160", "856161"], // 4星,500次
224 "5": ["856162", "856163"], // 5星,紫钻地图
225 "6": ["856164", "856165"] // 6星,皇族地图
226 };
227
228 // 获取地图最高解锁星级
229 const highestUnlockedStarId = Math.max(
230 ...Object.keys(userInfoData.starInfo) // 转化为数组
231 .filter(starId => userInfoData.starInfo[starId] === 1)
232 );
233
234 // 获取大吉地图信息
235 const luckyMap = mapInfoData[highestUnlockedStarId]
236 .find(map => map.isdaji === 1);
237
238 mapData = {
239 remainingTimes: true,
240 starId: highestUnlockedStarId,
241 mapId: luckyMap.id,
242 isVip: userInfoData.vip_flag,
243 mapName: luckyMap.name,
244 iFlowId: iFlowIdArray[highestUnlockedStarId]
245 };
246 } else { // 次数已经用完
247 mapData = {
248 remainingTimes: false
249 };
250 }
251 } else {
252 $.log(`❌ 获取地图数据时发生错误`);

Callers 1

zsfc.treasure.jsFile · 0.85

Calls 4

queryStrMethod · 0.45
logMethod · 0.45
getMethod · 0.45
toStrMethod · 0.45

Tested by

no test coverage detected