您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Gets current FPL team selection in .json
// ==UserScript== // @name Get current FPL Team // @namespace Violentmonkey Scripts // @match https://fantasy.premierleague.com/* // @grant GM_registerMenuCommand // @grant GM_xmlhttpRequest // @version 1.0 // @author xydone // @license MIT // @description Gets current FPL team selection in .json // ==/UserScript== (function () { function getAuthToken() { for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i); if (key.startsWith("oidc.user:https://account.premierleague.com/as:")) { try { const value = localStorage.getItem(key); const parsed = JSON.parse(value); if (parsed && parsed.access_token) { return parsed.access_token; } } catch (e) { console.warn("Error parsing auth token", e); } } } return null; } GM_registerMenuCommand("Fetch team", () => { const authToken = getAuthToken(); if (!authToken) { alert("Token not found. Refresh and try again."); return; } GM_xmlhttpRequest({ method: "GET", url: "https://fantasy.premierleague.com/api/me/", headers: { Accept: "application/json, text/javascript, */*; q=0.01", "X-Requested-With": "XMLHttpRequest", Referer: "https://fantasy.premierleague.com/", Origin: "https://fantasy.premierleague.com", "User-Agent": navigator.userAgent, "X-API-Authorization": `Bearer ${authToken}`, }, onload: function (response) { try { const data = JSON.parse(response.responseText); const teamId = data.player.entry; GM_xmlhttpRequest({ method: "GET", url: `https://fantasy.premierleague.com/api/my-team/${encodeURIComponent(teamId)}`, headers: { Accept: "application/json, text/javascript, */*; q=0.01", "X-Requested-With": "XMLHttpRequest", Referer: "https://fantasy.premierleague.com/", Origin: "https://fantasy.premierleague.com", "User-Agent": navigator.userAgent, "X-API-Authorization": `Bearer ${authToken}`, }, onload: function (response) { try { const data = JSON.parse(response.responseText); const blob = new Blob([JSON.stringify(data, null, 2)], { type: "application/json", }); const url = URL.createObjectURL(blob); window.open(url); setTimeout(() => URL.revokeObjectURL(url), 60000); } catch (e) { alert("Error parsing json from /my-team/ response."); console.error(e); } }, onerror: function () { alert("Error fetching /my-team/ endpoint."); }, }); } catch (e) { alert(`Error parsing json from /me/ response.`); console.error(e); } }, onerror: function () { alert("Error fetching /me/ endpoint."); }, }); }); })();