// ==UserScript==
// @name osu! mp Exporter
// @description Export Multiplay result as csv
// @author JebwizOscar
// @icon http://osu.ppy.sh/favicon.ico
// @include https://osu.ppy.sh/mp/*
// @include http://osu.ppy.sh/mp/*
// @require http://code.jquery.com/jquery-1.11.1.min.js
// @copyright 2014, Jeb
// @version 0.1.0.7
// @namespace https://greasyfork.org/users/3079
// ==/UserScript==
function exportToCSV(filename) {
csvData="";
a={};
$('table').each(function(){
var $rows = $(this).find('tr:has(td,th)');
csv="";
$(this).parent(0).parent(0).find('div').each(function(){
if (
(typeof($(this).attr('class'))=="undefined")
&&
(typeof($(this).attr('style'))=="undefined")
){
csv = csv + '"' + $(this).text() + '"' + "\n" ;
}if (
($(this).attr('class')=="maintext")
){
csv = csv + $(this).text() + "" ;
}
});
tmpColDelim = String.fromCharCode(11),
tmpRowDelim = String.fromCharCode(0),
colDelim2 = '","',
rowDelim2 = '"\n"',
d = $rows.map(function (i, row) {
var $row = $(row),
$cols = $row.find('td,th');
return $cols.map(function (j, col) {
var $col = $(col),
text = $col.text();
return text.replace('"', '""');
}).get().join(tmpColDelim);
}).get().join(rowDelim2).split(tmpColDelim).join(colDelim2) + '"';
csv = csv + '"' + d;
colDelim = '","',
rowDelim = '"],\n["',
e = '[["' + $rows.map(function (i, row) {
var $row = $(row),
$cols = $row.find('td');
return $cols.map(function (j, col) {
var $col = $(col),
text = $col.text();
return text.replace('"', '""');
}).get().join(tmpColDelim);
}).get().join(rowDelim+'')
.split(tmpColDelim).join(colDelim) + '"]]';
j = eval('('+e+')');
j.shift();
x = j.sort(function(a,b){return b[1].replace(/[^0-9]/g,"")-a[1].replace(/[^0-9]/g,"")});
for(i in x){
if (typeof(a[x[i][3]])=='undefined')
a[x[i][3]]=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
a[x[i][3]][parseInt(i)+1]++;
a[x[i][3]][0]+=parseInt(x[i][1].replace(/[^0-9]/g,""));
}
csvData = csvData + encodeURIComponent(csv + "\n"+ "\n") ;
});
csvData = csvData + encodeURIComponent("\n"+ "\n") ;
csvData = csvData + encodeURIComponent('"Name","Total Score"') ;
for(o=1;o<=16;o++)
csvData = csvData + encodeURIComponent(',"#'+o.toString()+'"') ;
for(i in a){
csvData = csvData + encodeURIComponent("\n"+'"'+i+'","'+a[i][0].toString()+'"') ;
for(o=1;o<=16;o++)
csvData = csvData + encodeURIComponent(',"'+a[i][o].toString()+'"') ;
}
$(this)
.attr({
'download': filename,
'href': 'data:application/csv;charset=utf-8,%EF%BB%BF' + csvData,
'target': '_blank'
});
}
$('.mphistory').prepend('<center><a class="export" style="text-decoration: none;color:#000;background-color:#ddd; border: 1px solid #ccc; padding:8px;" target="_blank">Export Table data into csv</a></center>');
$(".export").on('click', function (event) {
exportToCSV.apply(this, ['export.csv']);
});