// ==UserScript== // @name pp for osu score pages // @namespace http://osustats.ppy.sh // @description shows pp data from osustats.ppy.sh on osu score pages. // @include http*://osu.ppy.sh/b/* // @include http*://osu.ppy.sh/s/* // @include http*://osu.ppy.sh/p/beatmap?b=* // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @version 1 // @downloadURL none // ==/UserScript== var requestingPage=false; var result=null; function ShowAlert() { var mapTab = document.getElementsByClassName("beatmapTab active"); if(mapTab.length==1) { var split = mapTab[0].href.split("/")[4]; mapID = split.split("&")[0]; GetPage(mapID,function(res){ result = JSON.parse(res); var rows,thisImg,username,score,row,pp; rows = document.evaluate('//div[@class=\'beatmapListing\']/table/tbody/tr', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); rows.snapshotItem(0).children[5].innerHTML="Combo / pp"; for (var i=1;i/g,'').replace(/<\/b>/g,''); pp = GetPpFromUsername(username,score); if(pp!=null) { if(pp!="s") row.children[5].innerHTML += " / "+(Math.round(pp * 100) / 100)+"pp"; else row.children[5].innerHTML += " / N/U"; } else row.children[5].innerHTML += " / N/D"; } }); } } function GetPpFromUsername(username,score) { for (var i=0;i