// ==UserScript== // @name osu! Supporter Ranking // @description osu! Supporter Ranking for web // @author JebwizOscar // @icon http://osu.ppy.sh/favicon.ico // @include http://osu.ppy.sh/b/* // @include https://osu.ppy.sh/b/* // @include http://osu.ppy.sh/s/* // @include https://osu.ppy.sh/s/* // @include http://osu.ppy.sh/p/beatmap?* // @include https://osu.ppy.sh/p/beatmap?* // @grant GM_xmlhttpRequest // @grant GM_openInTab // @grant GM_setValue // @grant GM_getValue // @version 1.2.0.8 // @namespace https://greasyfork.org/users/3079 // @downloadURL https://update.greasyfork.icu/scripts/2850/osu%21%20Supporter%20Ranking.user.js // @updateURL https://update.greasyfork.icu/scripts/2850/osu%21%20Supporter%20Ranking.meta.js // ==/UserScript== (function(){Date.shortMonths=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];Date.longMonths=['January','February','March','April','May','June','July','August','September','October','November','December'];Date.shortDays=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];Date.longDays=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];var replaceChars={d:function(){return(this.getDate()<10?'0':'')+ this.getDate();},D:function(){return Date.shortDays[this.getDay()];},j:function(){return this.getDate();},l:function(){return Date.longDays[this.getDay()];},N:function(){return this.getDay()+ 1;},S:function(){return(this.getDate()%10==1&&this.getDate()!=11?'st':(this.getDate()%10==2&&this.getDate()!=12?'nd':(this.getDate()%10==3&&this.getDate()!=13?'rd':'th')));},w:function(){return this.getDay();},z:function(){var d=new Date(this.getFullYear(),0,1);return Math.ceil((this- d)/86400000);},W:function(){var d=new Date(this.getFullYear(),0,1);return Math.ceil((((this- d)/86400000)+ d.getDay()+ 1)/7);},F:function(){return Date.longMonths[this.getMonth()];},m:function(){return(this.getMonth()<9?'0':'')+(this.getMonth()+ 1);},M:function(){return Date.shortMonths[this.getMonth()];},n:function(){return this.getMonth()+ 1;},t:function(){var d=new Date();return new Date(d.getFullYear(),d.getMonth(),0).getDate()},L:function(){var year=this.getFullYear();return(year%400==0||(year%100!=0&&year%4==0));},o:function(){var d=new Date(this.valueOf());d.setDate(d.getDate()-((this.getDay()+ 6)%7)+ 3);return d.getFullYear();},Y:function(){return this.getFullYear();},y:function(){return(''+ this.getFullYear()).substr(2);},a:function(){return this.getHours()<12?'am':'pm';},A:function(){return this.getHours()<12?'AM':'PM';},B:function(){return Math.floor((((this.getUTCHours()+ 1)%24)+ this.getUTCMinutes()/60+ this.getUTCSeconds()/3600)*1000/24);},g:function(){return this.getHours()%12||12;},G:function(){return this.getHours();},h:function(){return((this.getHours()%12||12)<10?'0':'')+(this.getHours()%12||12);},H:function(){return(this.getHours()<10?'0':'')+ this.getHours();},i:function(){return(this.getMinutes()<10?'0':'')+ this.getMinutes();},s:function(){return(this.getSeconds()<10?'0':'')+ this.getSeconds();},u:function(){var m=this.getMilliseconds();return(m<10?'00':(m<100?'0':''))+ m;},e:function(){return"Not Yet Supported";},I:function(){var DST=null;for(var i=0;i<12;++i){var d=new Date(this.getFullYear(),i,1);var offset=d.getTimezoneOffset();if(DST===null)DST=offset;else if(offsetDST)break;} return(this.getTimezoneOffset()==DST)|0;},O:function(){return(-this.getTimezoneOffset()<0?'-':'+')+(Math.abs(this.getTimezoneOffset()/60)<10?'0':'')+(Math.abs(this.getTimezoneOffset()/60))+'00';},P:function(){return(-this.getTimezoneOffset()<0?'-':'+')+(Math.abs(this.getTimezoneOffset()/60)<10?'0':'')+(Math.abs(this.getTimezoneOffset()/60))+':00';},T:function(){var m=this.getMonth();this.setMonth(0);var result=this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/,'$1');this.setMonth(m);return result;},Z:function(){return-this.getTimezoneOffset()*60;},c:function(){return this.format("Y-m-d\\TH:i:sP");},r:function(){return this.toString();},U:function(){return this.getTime()/1000;}};Date.prototype.format=function(format){var date=this;return format.replace(/(\\?)(.)/g,function(_,esc,chr){return(esc===''&&replaceChars[chr])?replaceChars[chr].call(date):chr;});};}).call(this); (function($){ var rotateLeft = function(lValue, iShiftBits) { return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)); } var addUnsigned = function(lX, lY) { var lX4, lY4, lX8, lY8, lResult; lX8 = (lX & 0x80000000); lY8 = (lY & 0x80000000); lX4 = (lX & 0x40000000); lY4 = (lY & 0x40000000); lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF); if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8); if (lX4 | lY4) { if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); else return (lResult ^ 0x40000000 ^ lX8 ^ lY8); } else { return (lResult ^ lX8 ^ lY8); } } var F = function(x, y, z) { return (x & y) | ((~ x) & z); } var G = function(x, y, z) { return (x & z) | (y & (~ z)); } var H = function(x, y, z) { return (x ^ y ^ z); } var I = function(x, y, z) { return (y ^ (x | (~ z))); } var FF = function(a, b, c, d, x, s, ac) { a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac)); return addUnsigned(rotateLeft(a, s), b); }; var GG = function(a, b, c, d, x, s, ac) { a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac)); return addUnsigned(rotateLeft(a, s), b); }; var HH = function(a, b, c, d, x, s, ac) { a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac)); return addUnsigned(rotateLeft(a, s), b); }; var II = function(a, b, c, d, x, s, ac) { a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac)); return addUnsigned(rotateLeft(a, s), b); }; var convertToWordArray = function(string) { var lWordCount; var lMessageLength = string.length; var lNumberOfWordsTempOne = lMessageLength + 8; var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64; var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16; var lWordArray = Array(lNumberOfWords - 1); var lBytePosition = 0; var lByteCount = 0; while (lByteCount < lMessageLength) { lWordCount = (lByteCount - (lByteCount % 4)) / 4; lBytePosition = (lByteCount % 4) * 8; lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition)); lByteCount++; } lWordCount = (lByteCount - (lByteCount % 4)) / 4; lBytePosition = (lByteCount % 4) * 8; lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition); lWordArray[lNumberOfWords - 2] = lMessageLength << 3; lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29; return lWordArray; }; var wordToHex = function(lValue) { var WordToHexValue = "", WordToHexValueTemp = "", lByte, lCount; for (lCount = 0; lCount <= 3; lCount++) { lByte = (lValue >>> (lCount * 8)) & 255; WordToHexValueTemp = "0" + lByte.toString(16); WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2); } return WordToHexValue; }; var uTF8Encode = function(string) { string = string.replace(/\x0d\x0a/g, "\x0a"); var output = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { output += String.fromCharCode(c); } else if ((c > 127) && (c < 2048)) { output += String.fromCharCode((c >> 6) | 192); output += String.fromCharCode((c & 63) | 128); } else { output += String.fromCharCode((c >> 12) | 224); output += String.fromCharCode(((c >> 6) & 63) | 128); output += String.fromCharCode((c & 63) | 128); } } return output; }; $.extend({ md5: function(string) { var x = Array(); var k, AA, BB, CC, DD, a, b, c, d; var S11=7, S12=12, S13=17, S14=22; var S21=5, S22=9 , S23=14, S24=20; var S31=4, S32=11, S33=16, S34=23; var S41=6, S42=10, S43=15, S44=21; string = uTF8Encode(string); x = convertToWordArray(string); a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; for (k = 0; k < x.length; k += 16) { AA = a; BB = b; CC = c; DD = d; a = FF(a, b, c, d, x[k+0], S11, 0xD76AA478); d = FF(d, a, b, c, x[k+1], S12, 0xE8C7B756); c = FF(c, d, a, b, x[k+2], S13, 0x242070DB); b = FF(b, c, d, a, x[k+3], S14, 0xC1BDCEEE); a = FF(a, b, c, d, x[k+4], S11, 0xF57C0FAF); d = FF(d, a, b, c, x[k+5], S12, 0x4787C62A); c = FF(c, d, a, b, x[k+6], S13, 0xA8304613); b = FF(b, c, d, a, x[k+7], S14, 0xFD469501); a = FF(a, b, c, d, x[k+8], S11, 0x698098D8); d = FF(d, a, b, c, x[k+9], S12, 0x8B44F7AF); c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1); b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE); a = FF(a, b, c, d, x[k+12], S11, 0x6B901122); d = FF(d, a, b, c, x[k+13], S12, 0xFD987193); c = FF(c, d, a, b, x[k+14], S13, 0xA679438E); b = FF(b, c, d, a, x[k+15], S14, 0x49B40821); a = GG(a, b, c, d, x[k+1], S21, 0xF61E2562); d = GG(d, a, b, c, x[k+6], S22, 0xC040B340); c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51); b = GG(b, c, d, a, x[k+0], S24, 0xE9B6C7AA); a = GG(a, b, c, d, x[k+5], S21, 0xD62F105D); d = GG(d, a, b, c, x[k+10], S22, 0x2441453); c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681); b = GG(b, c, d, a, x[k+4], S24, 0xE7D3FBC8); a = GG(a, b, c, d, x[k+9], S21, 0x21E1CDE6); d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6); c = GG(c, d, a, b, x[k+3], S23, 0xF4D50D87); b = GG(b, c, d, a, x[k+8], S24, 0x455A14ED); a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905); d = GG(d, a, b, c, x[k+2], S22, 0xFCEFA3F8); c = GG(c, d, a, b, x[k+7], S23, 0x676F02D9); b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A); a = HH(a, b, c, d, x[k+5], S31, 0xFFFA3942); d = HH(d, a, b, c, x[k+8], S32, 0x8771F681); c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122); b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C); a = HH(a, b, c, d, x[k+1], S31, 0xA4BEEA44); d = HH(d, a, b, c, x[k+4], S32, 0x4BDECFA9); c = HH(c, d, a, b, x[k+7], S33, 0xF6BB4B60); b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70); a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6); d = HH(d, a, b, c, x[k+0], S32, 0xEAA127FA); c = HH(c, d, a, b, x[k+3], S33, 0xD4EF3085); b = HH(b, c, d, a, x[k+6], S34, 0x4881D05); a = HH(a, b, c, d, x[k+9], S31, 0xD9D4D039); d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5); c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8); b = HH(b, c, d, a, x[k+2], S34, 0xC4AC5665); a = II(a, b, c, d, x[k+0], S41, 0xF4292244); d = II(d, a, b, c, x[k+7], S42, 0x432AFF97); c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7); b = II(b, c, d, a, x[k+5], S44, 0xFC93A039); a = II(a, b, c, d, x[k+12], S41, 0x655B59C3); d = II(d, a, b, c, x[k+3], S42, 0x8F0CCC92); c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D); b = II(b, c, d, a, x[k+1], S44, 0x85845DD1); a = II(a, b, c, d, x[k+8], S41, 0x6FA87E4F); d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0); c = II(c, d, a, b, x[k+6], S43, 0xA3014314); b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1); a = II(a, b, c, d, x[k+4], S41, 0xF7537E82); d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235); c = II(c, d, a, b, x[k+2], S43, 0x2AD7D2BB); b = II(b, c, d, a, x[k+9], S44, 0xEB86D391); a = addUnsigned(a, AA); b = addUnsigned(b, BB); c = addUnsigned(c, CC); d = addUnsigned(d, DD); } var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d); return tempValue.toLowerCase(); } }); })(jQuery); (function(){Date.shortMonths=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];Date.longMonths=['January','February','March','April','May','June','July','August','September','October','November','December'];Date.shortDays=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];Date.longDays=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];var replaceChars={d:function(){return(this.getDate()<10?'0':'')+ this.getDate();},D:function(){return Date.shortDays[this.getDay()];},j:function(){return this.getDate();},l:function(){return Date.longDays[this.getDay()];},N:function(){return this.getDay()+ 1;},S:function(){return(this.getDate()%10==1&&this.getDate()!=11?'st':(this.getDate()%10==2&&this.getDate()!=12?'nd':(this.getDate()%10==3&&this.getDate()!=13?'rd':'th')));},w:function(){return this.getDay();},z:function(){var d=new Date(this.getFullYear(),0,1);return Math.ceil((this- d)/86400000);},W:function(){var d=new Date(this.getFullYear(),0,1);return Math.ceil((((this- d)/86400000)+ d.getDay()+ 1)/7);},F:function(){return Date.longMonths[this.getMonth()];},m:function(){return(this.getMonth()<9?'0':'')+(this.getMonth()+ 1);},M:function(){return Date.shortMonths[this.getMonth()];},n:function(){return this.getMonth()+ 1;},t:function(){var d=new Date();return new Date(d.getFullYear(),d.getMonth(),0).getDate()},L:function(){var year=this.getFullYear();return(year%400==0||(year%100!=0&&year%4==0));},o:function(){var d=new Date(this.valueOf());d.setDate(d.getDate()-((this.getDay()+ 6)%7)+ 3);return d.getFullYear();},Y:function(){return this.getFullYear();},y:function(){return(''+ this.getFullYear()).substr(2);},a:function(){return this.getHours()<12?'am':'pm';},A:function(){return this.getHours()<12?'AM':'PM';},B:function(){return Math.floor((((this.getUTCHours()+ 1)%24)+ this.getUTCMinutes()/60+ this.getUTCSeconds()/3600)*1000/24);},g:function(){return this.getHours()%12||12;},G:function(){return this.getHours();},h:function(){return((this.getHours()%12||12)<10?'0':'')+(this.getHours()%12||12);},H:function(){return(this.getHours()<10?'0':'')+ this.getHours();},i:function(){return(this.getMinutes()<10?'0':'')+ this.getMinutes();},s:function(){return(this.getSeconds()<10?'0':'')+ this.getSeconds();},u:function(){var m=this.getMilliseconds();return(m<10?'00':(m<100?'0':''))+ m;},e:function(){return"Not Yet Supported";},I:function(){var DST=null;for(var i=0;i<12;++i){var d=new Date(this.getFullYear(),i,1);var offset=d.getTimezoneOffset();if(DST===null)DST=offset;else if(offsetDST)break;} return(this.getTimezoneOffset()==DST)|0;},O:function(){return(-this.getTimezoneOffset()<0?'-':'+')+(Math.abs(this.getTimezoneOffset()/60)<10?'0':'')+(Math.abs(this.getTimezoneOffset()/60))+'00';},P:function(){return(-this.getTimezoneOffset()<0?'-':'+')+(Math.abs(this.getTimezoneOffset()/60)<10?'0':'')+(Math.abs(this.getTimezoneOffset()/60))+':00';},T:function(){var m=this.getMonth();this.setMonth(0);var result=this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/,'$1');this.setMonth(m);return result;},Z:function(){return-this.getTimezoneOffset()*60;},c:function(){return this.format("Y-m-d\\TH:i:sP");},r:function(){return this.toString();},U:function(){return this.getTime()/1000;}};Date.prototype.format=function(format){var date=this;return format.replace(/(\\?)(.)/g,function(_,esc,chr){return(esc===''&&replaceChars[chr])?replaceChars[chr].call(date):chr;});};}).call(this); function addGlobalStyle(css) { var head, style; head = document.getElementsByTagName('head')[0]; if (!head) { return; } style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } script = document.createElement("script"); script.innerHTML = show; document.body.appendChild(script); function show(type,mods){ username = $('#user').val(); password = $.md5($('#pass').val()); function e(Amount) { var DecimalSeparator = Number("1.2").toLocaleString().substr(1, 1); var AmountWithCommas = parseInt(Amount).toLocaleString(); var arParts = String(AmountWithCommas).split(DecimalSeparator); return arParts[0]; } function rank(c0,c50,c100,c300,mods) { tt = c0+c50+c100+c300; if ((mods & 8) || (mods & 1024)){ if (c300 == tt) return 'XH'; if (c300 > tt * 0.9 && c0 == 0) return 'SH'; }else{ if (c300 == tt) return 'X'; if (c300 > tt * 0.9 && c0 == 0) return 'S'; } if (c300 > tt * 0.9) return 'A'; if (c300 > tt * 0.8 && c0 == 0) return 'A'; if (c300 > tt * 0.8) return 'B'; if (c300 > tt * 0.7 && c0 == 0) return 'B'; if (c300 > tt * 0.6) return 'C'; return 'D'; } w = ['NF', 'EZ', 'NV', 'HD', 'HR', 'SD', 'DT', 'RX', 'HT', 'NC', 'FL', 'AU', 'SO', 'AP', 'PF', '4K', '5K', '6K', '7K', '8K', 'FI']; w2 = ['NF', 'EZ', 'NV', 'HD', 'HR', 'SD', 'DT', 'RX', 'HT', 'NC', 'FL', 'AU', 'SO', 'AP', 'PF', '4K', '5K', '6K', '7K', '8K', 'FI' ]; modit=0; for(i=0;i<22;i++){ if (mods.toUpperCase().indexOf(w[i])!=-1) modit |= 1<Date/TimeRankScoreAccuracyPlayerM.Combo300 / 100 / 50GekiKatuMissesModsDiff'); $('#h').append(''); score = 0; $('#loadingb').fadeIn(500); $.get('http://wa.vg/osuapi/md5.php?b='+k, function (hash) { if (hash != '') $.get('/web/osu-osz2-getscores.php?s=0&vv=2&v='+type.toString()+'&mods='+modit.toString()+'&c='+hash+'&us='+username+'&ha='+password, function (data) { o=data.split('\n'); num=1; for(i in o){ u=o[i].split('|'); if (i==4) { $('#loadingb').fadeOut(500); uid = parseInt(u[12]); } if (typeof u[10] != "undefined"){ ttl = parseInt(u[7]) + parseInt(u[4]) + parseInt(u[5]) + parseInt(u[6]); acc = (100.0 * (parseInt(u[4]) + 2 * parseInt(u[5]) + 6 * parseInt(u[6])) / (6 * ttl)); y = x = parseInt(u[11]); j = 0; mods = []; if (x & (1 << 9)) x &= ~(1 << 6); if (x & (1 << 14)) x &= ~(1 << 5); while (x) { if (x & (1 << j)) { mods.push(w2[j]); x -= (1 << j); } j++ ; } modss = mods.join(','); if (num==1) num=2; else num=1; (uid==u[12]) && (num=4); if (modss == '') modss = 'None'; diff = parseInt(u[2]) - score ; if (diff>0) diff = '+'+e(diff)+''; else diff = ''+e(diff)+''; r = rank(parseInt(u[7]) , parseInt(u[4]) , parseInt(u[5]) , parseInt(u[6]),y); score = parseInt(u[2]); d= new Date(parseInt(u[14]) * 1000); $('#h').append('#' + e(u[13]) + '' + e(u[2]) + '' + ((r[0]=='X')?'':'') + acc.toFixed(2) + '%' + ((r[0]=='X')?'':'') + ' ' + u[1] + '' + (parseInt(u[10])?'':'') + e(u[3]) + (parseInt(u[10])?'':'') + '' + e(u[6]) + '  /  ' + e(u[5]) + '  /  ' + e(u[4]) + '' + e(u[9]) + '' + e(u[8]) + '' + e(u[7]) + '' + modss + '' + diff + ''); $('.timeago').timeago(); } } }); }); } $( document ).ready( function(){ buttons = ' '; $('.beatmapListing').prepend(buttons + '
'); addGlobalStyle('.rank-avatar {width: 16px;height: 16px;}'); });