您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
30.7.2022, 13:15:08
// ==UserScript== // @name trackingthepros.com display played champions // @namespace Violentmonkey Scripts // @match https://www.trackingthepros.com/players/* // @grant GM.xmlHttpRequest // @version 1.5 // @author Gl4zy // @license MIT // @description 30.7.2022, 13:15:08 // ==/UserScript== const apiKey = "INPUT YOUR RIOT API KEY HERE"; //like const apiKey = "RGAPI-b5ee53ab-1358-4d62-9562-def61df04f6a"; var latestDdragonVersion; var championIdToChampionName; const serverToUrl = { "KR": "kr", "EUW": "euw1", "NA": "na1", "BR": "br1" } var button; var loading = false; async function getSummonerIdByName(summonerName, server) { const responseJson = await myfetch('https://' + server + '.api.riotgames.com/lol/summoner/v4/summoners/by-name/' + summonerName); if (responseJson == null) { return null; } return responseJson.id; } async function getPlayedChampionIdFromSummonerId(summonerId, server) { const responseJson = await myfetch('https://' + server + '.api.riotgames.com/lol/spectator/v4/active-games/by-summoner/' + summonerId); if (responseJson == null) { return null; } if(responseJson.participants){ const championId = responseJson.participants.filter(s => s.summonerId == summonerId)[0].championId; return championId; } return null; } async function getAccountsFromProName(proName) { return new Promise(function(resolve, reject) { var ifream = document.createElement("iframe"); //ifream.src = "https://www.trackingthepros.com/player/" + proName; ifream.src = $("a:contains('" + proName + "')")[0].href; ifream.onload = function() { var accounts = []; $("iframe").contents().find("h4:contains('Accounts')").parent().children().children().find("tr").each(function(index, element) { var account = []; $(element).find('td').each(function(index, element) { var match = /\[(.*)] (.*)/gm.exec($(element).text()); if (match != null) { account.push(match[1]); account.push(match[2]); } }); if (account.length != 0) { accounts.push(account); } }); resolve(accounts); ifream.parentNode.removeChild(ifream); } document.body.appendChild(ifream); }); } //returns null if not ingame and champ if it is async function checkIfAccountIsPlaying(summonerName, server) { const playerId = await getSummonerIdByName(summonerName, server); if (playerId == null) return null; const championId = await getPlayedChampionIdFromSummonerId(playerId, server); if (championId == null) return null; return Object.values(championIdToChampionName.data).filter(c => c.key == championId); } async function addChampionImageToTable(summonerName, server, proName) { var result = await checkIfAccountIsPlaying(summonerName, server); if (result != null) { var img = document.createElement('img'); img.style.height = "23px"; img.style.marginLeft = "5px"; img.src = 'http://ddragon.leagueoflegends.com/cdn/12.14.1/img/champion/' + result[0].id + '.png'; $("a:contains('" + proName + "')").append(img); } } async function main() { if (loading) return; loading = true; button.classList = "btn-danger btn"; button.innerHTML = "Loading..."; latestDdragonVersion = (await myfetch('https://ddragon.leagueoflegends.com/api/versions.json'))[0]; championIdToChampionName = await myfetch('https://ddragon.leagueoflegends.com/cdn/' + latestDdragonVersion + '/data/en_US/champion.json'); var pros = []; $('#displayTable').find("tr").each(function(index, element) { pros.push($(element).find('td').eq(0).text().slice(6)) }) var accounts = []; for (var p in pros) { accounts = await getAccountsFromProName(pros[p]); console.log(pros[p] + " Is playing on: ", accounts); for (var a in accounts) { console.log("cheking " + accounts[a][1], serverToUrl[accounts[a][0]]); addChampionImageToTable(accounts[a][1], serverToUrl[accounts[a][0]], pros[p]); } } loading = false; button.classList = "btn-info btn"; button.innerHTML = "Look for Champions"; } async function myfetch(link){ var out; await GM.xmlHttpRequest({ method: "GET", responseType: "json", overrideMimeType: "application/json", url: link, headers: { "X-Riot-Token": apiKey, "Content-Type": "application/json", }, onload: function(response) { if (response.status != 200) { out = null; } //console.log(link, response.responseText); out = JSON.parse(response.responseText); } }); return out; } $(document).ready(function() { button = document.createElement('button'); button.innerHTML = "Look for Champions"; button.onclick = main; button.classList = "btn-info btn"; document.getElementsByClassName('dataTables_wrapper form-inline dt-bootstrap no-footer')[0].prepend(button); });