MatchResult-Review Script

View match result in advance (under 50 minutes before the match start)

  1. // ==UserScript==
  2. // @name MatchResult-Review Script
  3. // @namespace https://gf.qytechs.cn/users/198348
  4. // @version 0.0.2
  5. // @description View match result in advance (under 50 minutes before the match start)
  6. // @author TM supporter
  7. // @include http://trophymanager.com/matches/*
  8. // @include https://trophymanager.com/matches/*
  9. // ==/UserScript==
  10.  
  11. function insertBefore(el, referenceNode) {
  12. referenceNode.parentNode.insertBefore(el, referenceNode);
  13. }
  14.  
  15. function insertAfter(el, referenceNode) {
  16. referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);
  17. }
  18.  
  19. function getGoalsReport(report) {
  20. var goalsReport = [];
  21. Object.keys(report).forEach(function(key, index) {
  22. var minuteArr = report[key];
  23. for (var i = 0; i < minuteArr.length; i++) {
  24. var paramArr = minuteArr[i].parameters;
  25. var goalScorerId;
  26. var goalFound = false;
  27. if (paramArr) {
  28. for (var j = 0; j < paramArr.length; j++) {
  29. var paramObj = paramArr[j];
  30. if (paramObj.goal) {
  31. goalsReport.push({
  32. minute: key,
  33. scorer: paramObj.goal.player
  34. });
  35. }
  36. }
  37. }
  38. }
  39. });
  40. return goalsReport;
  41. }
  42.  
  43. function mergeMinutes(data) {
  44. var seen = {};
  45. data = data.filter(function(entry) {
  46. var previous;
  47. if (seen.hasOwnProperty(entry.scorer)) {
  48. previous = seen[entry.scorer];
  49. previous.minute.push(' '+ entry.minute + '\'');
  50. return false;
  51. }
  52. if (!Array.isArray(entry.minute)) {
  53. entry.minute = [entry.minute + '\''];
  54. }
  55. seen[entry.scorer] = entry;
  56. return true;
  57. });
  58. return data;
  59. }
  60.  
  61. function formatReport(goalsRp, homeLineup, awayLineup) {
  62. var rps = mergeMinutes(goalsRp);
  63. var homeReport = [];
  64. var awayReport = [];
  65. rps.forEach(function (rp) {
  66. if (homeLineup.hasOwnProperty(rp.scorer)) {
  67. rp.scorer = homeLineup[rp.scorer];
  68. homeReport.push(rp);
  69. }
  70. if (awayLineup.hasOwnProperty(rp.scorer)) {
  71. rp.scorer = awayLineup[rp.scorer];
  72. awayReport.push(rp);
  73. }
  74. });
  75. return {
  76. homeReport: homeReport,
  77. awayReport: awayReport
  78. }
  79. }
  80.  
  81. function showMatchResult() {
  82. var resultDiv = document.createElement('div');
  83. var matchID = location.href.match(/([^\/]*)\/*$/)[1];
  84. var xhr = new XMLHttpRequest();
  85. var url = 'https://trophymanager.com/ajax/match.ajax.php?id=' + matchID;
  86. resultDiv.className = 'main_center';
  87.  
  88. xhr.open('GET', url, true);
  89. xhr.send();
  90. xhr.onreadystatechange = function() {
  91. if (this.readyState == 4 && this.status == 200) {
  92. var data = JSON.parse(this.responseText);
  93. var homeClub = data.club.home.club_name;
  94. var awayClub = data.club.away.club_name;
  95. var report = data.report;
  96. var homeLineup = data.lineup.home;
  97. var awayLineup = data.lineup.away;
  98. var scoreData = report[Object.keys(report).sort().pop()];
  99. var finalText = scoreData[0].chance.text[0];
  100. var finalScore = 'vs';
  101. var goalsReport = [];
  102. var goalsRpDiv = '<div id="goalRpDiv" style="width:100%;margin:0px;padding:0px;background-color:#000000;font-family:arial;font-size:12px;">';
  103. var homeGoalDiv = '<div id="homeGoalDiv" style="display:inline-block;width:47%;margin:0px;padding:0px;padding-bottom:5px;text-align:right;vertical-align:top;">'
  104. +'<ul style="list-style-type:none;padding:0px;margin:0px;">';
  105. var awayGoalDiv = '<div id="awayGoalDiv" style="display:inline-block;width:45%;margin:0px;padding:0px;padding-bottom:5px;text-align:left;vertical-align:top;">'
  106. + '<ul style="list-style-type:none; padding:0px;margin:0px;">';
  107. var centerDiv = '<div style="display:inline-block;width:8%;margin:0px;padding:0px;padding-bottom:5px;text-align:center;color:#CF0;"></div>';
  108. var homeGoals = [];
  109. var awayGoals = [];
  110. var homeScores = 0;
  111. var awayScores = 0;
  112. if (report) {
  113. goalsReport = getGoalsReport(report);
  114. var finalReport = formatReport(goalsReport, homeLineup, awayLineup);
  115. homeGoals = finalReport.homeReport;
  116. awayGoals = finalReport.awayReport;
  117. homeGoals.forEach(function (obj) {
  118. homeScores += parseInt(obj.minute.length);
  119. });
  120. awayGoals.forEach(function (obj) {
  121. awayScores += parseInt(obj.minute.length);
  122. });
  123. finalScore = homeScores + ' - ' + awayScores;
  124. }
  125. var htmlTxt = '<div style="width:100%;margin-top:10px;padding:10px;padding-bottom:5px;background-color:#000000;font-size:16px;font-weight:bold;">';
  126. htmlTxt += '<div style="display:inline-block;width:46%;margin:0px;padding:0px;text-align:right;">' + homeClub + '</div>'
  127. + '<div style="display:inline-block;width:8%;margin:0px;padding:0px;text-align:center;color:#fff">' + finalScore + '</div>'
  128. + '<div style="display:inline-block;width:46%;margin:0px;padding:0px;text-align:left;">' + awayClub + '</div></div>'
  129. resultDiv.innerHTML = htmlTxt + goalsRpDiv;
  130. var mainCenters = document.getElementsByClassName('main_center');
  131. var lastMainDiv = mainCenters[mainCenters.length - 1];
  132. if (lastMainDiv) {
  133. insertBefore(resultDiv, lastMainDiv);
  134. }
  135. }
  136. };
  137. }
  138.  
  139. (function() {
  140. 'use strict';
  141. showMatchResult();
  142. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址