* @param {Number} _hours -更新小时数
(_hours)
| 80 | * @param {Number} _hours -更新小时数 |
| 81 | */ |
| 82 | async function updatePE(_hours) { |
| 83 | |
| 84 | const date = new Date() |
| 85 | const start = date.getTime() |
| 86 | // 获取PE数据 |
| 87 | const datas = await fetchUrl("http://v0-sc.miguvideo.com/vms-match/v6/staticcache/basic/match-list/normal-match-list/0/all/default/1/miguvideo") |
| 88 | printGreen("PE数据获取成功!") |
| 89 | // console.dir(datas, { depth: null }) |
| 90 | |
| 91 | // 屏蔽所有TV分类 |
| 92 | if (ignoreCategorySet.has("TV")) { |
| 93 | // 创建写入开头 |
| 94 | writeFile(`${process.cwd()}/interface.txt.bak`, `#EXTM3U x-tvg-url="\${replace}/playback.xml" catchup="append" catchup-source="?playbackbegin=\${(b)yyyyMMddHHmmss}&playbackend=\${(e)yyyyMMddHHmmss}"\n`) |
| 95 | // txt |
| 96 | writeFile(`${process.cwd()}/interfaceTXT.txt.bak`, "") |
| 97 | } else { |
| 98 | copyFileSync(`${process.cwd()}/interface.txt`, `${process.cwd()}/interface.txt.bak`, 0) |
| 99 | copyFileSync(`${process.cwd()}/interfaceTXT.txt`, `${process.cwd()}/interfaceTXT.txt.bak`, 0) |
| 100 | } |
| 101 | |
| 102 | const interfacePath = `${process.cwd()}/interface.txt.bak` |
| 103 | const interfaceTXTPath = `${process.cwd()}/interfaceTXT.txt.bak` |
| 104 | |
| 105 | printYellow("开始更新PE...") |
| 106 | |
| 107 | for (let i = 1; i < 4; i++) { |
| 108 | // 日期 |
| 109 | const date = datas.body?.days[i] |
| 110 | let relativeDate = `昨天${date.substring(4, 6)}-${date.substring(6, 8)}` |
| 111 | const dateString = getDateString(new Date()) |
| 112 | if (date == dateString) { |
| 113 | relativeDate = `今天${date.substring(4, 6)}-${date.substring(6, 8)}` |
| 114 | } else if (parseInt(date) > parseInt(dateString)) { |
| 115 | relativeDate = `明天${date.substring(4, 6)}-${date.substring(6, 8)}` |
| 116 | } |
| 117 | // 忽略分类 |
| 118 | if (ignoreCategorySet.has(`体育-${relativeDate.substring(0, 2)}`)) { |
| 119 | printYellow(`PE分类###: 体育-${relativeDate}已屏蔽!`) |
| 120 | continue |
| 121 | } |
| 122 | |
| 123 | appendFile(interfaceTXTPath, `体育-${relativeDate},#genre#\n`) |
| 124 | for (const data of datas.body?.matchList[date]) { |
| 125 | |
| 126 | let pkInfoTitle = data.pkInfoTitle |
| 127 | if (data.confrontTeams) { |
| 128 | pkInfoTitle = `${data.confrontTeams[0].name}VS${data.confrontTeams[1].name}` |
| 129 | } |
| 130 | // const peResult = await fetch(`http://app-sc.miguvideo.com/vms-match/v5/staticcache/basic/all-view-list/${data.mgdbId}/2/miguvideo`).then(r => r.json()) |
| 131 | const peResult = await fetchUrl(`https://vms-sc.miguvideo.com/vms-match/v6/staticcache/basic/basic-data/${data.mgdbId}/miguvideo`) |
| 132 | try { |
| 133 | // 比赛已结束 |
| 134 | if (peResult.body.endTime < Date.now()) { |
| 135 | const replayResult = await fetchUrl(`http://app-sc.miguvideo.com/vms-match/v5/staticcache/basic/all-view-list/${data.mgdbId}/2/miguvideo`) |
| 136 | let replayList = replayResult.body?.replayList |
| 137 | if (replayList == null || replayList == undefined) { |
| 138 | replayList = peResult.body.multiPlayList.replayList |
| 139 | } |
no test coverage detected