// ==UserScript== // @name Show prices on Steam followedgames page // @namespace http://tampermonkey.net/ // @version 0.2 // @description 在Steam社区"已关注的游戏"页面显示游戏的价格 // @author lyzlyslyc // @match http*://steamcommunity.com/*/followedgames* // @icon https://store.steampowered.com/favicon.ico // @grant GM_xmlhttpRequest // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Your code here... let interval = 1000; let requestTimeout = 3e3; let cc=""; //查询账号区域 console.log("Checking country."); getCountryCode(); function getCountryCode(){ GM_xmlhttpRequest({ method: "get", url: `https://store.steampowered.com/api/getfundwalletinfo/`, responseType: "json", timeout: requestTimeout, onload: (result)=>{ result = result.response; if(result.success){ cc=result.country_code; console.log(`Country code:${cc}`); } setInterval(requestPrice,interval); }, ontimeout:()=>{ getCountryCode(); console.log("Checking country timeout. Retrying."); }, onerror:(e)=>{ console.log("Checking country error."); console.log(e); } }) } function requestPrice(){ //获取关注列表 let apps = document.querySelector(".games_list_rows").children; let queryList = {}; let appidString = ""; for(let i=0;iapps.length?apps.length:(i+25); for(let j = min;j`+ '
'+ `
Request Error
`+ '
'+ ''; let appId; for(appId in queryList){ if(queryList[appId].hasPrice==true)continue; let span = queryList[appId].querySelector(".game_purchase_action_bg"); if(!span)span = document.createElement("span"); span.innerHTML = content; span.className = "game_purchase_action_bg"; let a = queryList[appId].querySelector(".followed_game_actions a"); a.parentElement.prepend(span); queryList[appId].hasPrice = false; console.log(`Error:${appId}`); console.log(e); } } } function handleTimeout(){ let content = ``+ '
'+ `
Request Timeout
`+ '
'+ '
'; let appId; for(appId in queryList){ if(queryList[appId].hasPrice==true)continue; let span = queryList[appId].querySelector(".game_purchase_action_bg"); if(!span)span = document.createElement("span"); span.innerHTML = content; span.className = "game_purchase_action_bg"; let a = queryList[appId].querySelector(".followed_game_actions a"); a.parentElement.prepend(span); queryList[appId].hasPrice = false; console.log(`Timeout:${appId}`); } } } function generatePrice(price){ let content = ""; let template = ""; if(price.discount_percent==0){ template = ``+ '
'+ `
${price.final_formatted}
`+ '
'+ '
'; } else { template = ``+ `
-${price.discount_percent}%
`+ '
'+ `
${price.initial_formatted}
`+ `
${price.final_formatted}
`+ '
'+ '
' } content+=template; return content; } function isAppVisible(app){ let s = app.offsetTop; // 元素相对于页面顶部的距离 let x = app.offsetHeight; //元素自身高度 let t = document.documentElement.scrollTop; // 页面在垂直方向上滚动的距离 let y = document.documentElement.clientHeight; //窗口可视区域的高度 let isHidden = (s+x) < t || (s > (t+y)); return !isHidden } })();