您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Trophymanager: get match's infos like possession, average rate, attendance, scorer... Include last round and next round (50 min before match).
// ==UserScript== // @name TMVN League Result // @version 4 // @description Trophymanager: get match's infos like possession, average rate, attendance, scorer... Include last round and next round (50 min before match). // @namespace https://trophymanager.com // @include https://trophymanager.com/league* // ==/UserScript== (function () { 'use strict'; const lastRound = 'last_round_table'; const nextRound = 'next_round_table'; var clubMap = new Map(); var rankOrder = 0; $('#overall_table td').each(function () { var clubId = $(this).children('a').attr('club_link'); if (clubId) { clubMap.set(clubId, ++rankOrder); } }); getMatchInfo(nextRound); getMatchInfo(lastRound); function parseMatchIds(tableId) { var matchIds = []; $('#' + tableId + ' td').each(function () { var hrefVal = $(this).children('a').attr('href'); if (hrefVal) { var matchID = hrefVal.substr(hrefVal.lastIndexOf('matches/') + 8, hrefVal.length - 10); matchIds.push(matchID); } }); return matchIds; } function getGoalsReport(report) { var goalsReport = []; Object.keys(report).forEach(function (key, index) { var minuteArr = report[key]; for (var i = 0; i < minuteArr.length; i++) { var paramArr = minuteArr[i].parameters; if (paramArr) { for (var j = 0; j < paramArr.length; j++) { var paramObj = paramArr[j]; if (paramObj.goal) { goalsReport.push({ minute: key, playerId: paramObj.goal.player }); } } } } }); return goalsReport; } function getMatchInfo(tableId) { var matchIds = parseMatchIds(tableId); var scoreArr = []; matchIds.forEach(function (matchId) { var xhr = new XMLHttpRequest(); var url = 'https://trophymanager.com/ajax/match.ajax.php?id=' + matchId; xhr.open('GET', url, true); xhr.send(); xhr.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { var data = JSON.parse(this.responseText); var report = data.report; if (Object.keys(report).length <= 3) { return; //because don't have datas of match } var matchData = data.match_data; var attendance, possession; attendance = matchData.attendance; if (attendance !== "") { attendance = '<span style="color:Orange;">Attendance: </span>' + attendance.replace(/\B(?=(\d{3})+(?!\d))/g, ","); } possession = '<span style="color:Orange;">Possession: </span>' + matchData.possession.home + " - " + matchData.possession.away; var clubData = data.club; /* comment for user request var homeForm = "", awayForm = ""; clubData.home.form.reverse(); clubData.away.form.reverse(); var homeFormCount = 0; while (homeFormCount < 5 && homeFormCount < clubData.home.form.length) { homeForm += clubData.home.form[homeFormCount].result; homeFormCount++; } if (homeForm !== "") { homeForm = homeForm.split("").reverse().join(""); } var awayFormCount = 0; while (awayFormCount < 5 && awayFormCount < clubData.away.form.length) { awayForm += clubData.away.form[awayFormCount].result; awayFormCount++; } if (awayForm !== "") { awayForm = awayForm.split("").reverse().join(""); } var performance = '<span style="color:Orange;">Form: </span>' + homeForm + " - " + awayForm; */ var homeRank = clubMap.get(clubData.home.id); var awayRank = clubMap.get(clubData.away.id); var rank = '<span style="color:Orange;">Rank: </span>' + homeRank + " - " + awayRank; var homeLineup = data.lineup.home; var awayLineup = data.lineup.away; var homePlayerIds = Object.getOwnPropertyNames(homeLineup); var awayPlayerIds = Object.getOwnPropertyNames(awayLineup); var homePlayer = new Map(), awayPlayer = new Map(); homePlayerIds.forEach((playerId) => { homePlayer.set(playerId, homeLineup[playerId].name); /* comment for user request if (homeLineup[playerId].rating > 0) { homeRate += homeLineup[playerId].rating; homeRateCount++; } */ }); awayPlayerIds.forEach((playerId) => { awayPlayer.set(playerId, awayLineup[playerId].name); /* comment for user request if (awayLineup[playerId].rating > 0) { awayRate += awayLineup[playerId].rating; awayRateCount++; } */ }); /* comment for user request var homeRate = 0, awayRate = 0, homeRateCount = 0, awayRateCount = 0; if (homeRateCount > 0) { homeRate = (homeRate / homeRateCount).toFixed(1); } if (awayRateCount > 0) { awayRate = (awayRate / awayRateCount).toFixed(1); } var rate = '<span style="color:Orange;">Rate: </span>' + homeRate + " - " + awayRate; */ var goalsReport = getGoalsReport(report); var score, scorer = "<table><tbody>"; if (goalsReport.length == 0) { score = '<span style="color:Orange;">Score: </span><a href="/matches/' + matchId + '">0 - 0</a>'; } else { var homeGoal = 0, awayGoal = 0; goalsReport.forEach((goal) => { if (homePlayer.has(goal.playerId)) { homeGoal++; scorer += "<tr><td align='left'>" + goal.minute + ". " + homePlayer.get(goal.playerId) + "</td></tr>"; } else { awayGoal++; scorer += "<tr><td align='right'>" + awayPlayer.get(goal.playerId) + " ." + goal.minute + "</td></tr>"; } }); score = '<span style="color:Orange;">Score: </span><a href="/matches/' + matchId + '">' + homeGoal + " - " + awayGoal + '</a>'; scorer += "</tbody></table>"; } //replace content var replaceContent = '<table><tbody>' + '<tr><td>' + score + '</td></tr>' + '<tr><td>' + rank + '</td></tr>' + '<tr><td>' + possession + '</td></tr>' + '<tr><td>' + attendance + '</td></tr>'; //'<tr><td>' + rate + '</td></tr>' + //comment for user request //'<tr><td>' + performance + '</td></tr>'; //comment for user request if (goalsReport.length > 0) { replaceContent += '<tr><td><span style="color:Orange;">Scorer: </span></td></tr>'; replaceContent += '<tr><td>'; replaceContent += scorer; replaceContent += '</td></tr>'; } replaceContent += '</tbody></table>'; $('#' + tableId + ' a[href="\/matches\/' + matchId + '\/"]')[0].parentElement.style.width = "60%"; $('#' + tableId + ' a[href="\/matches\/' + matchId + '\/"]')[0].parentElement.innerHTML = replaceContent; } }; }); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址