Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name CastingWords
- // @namespace pwtenny
- // @description Refactor
- // @include http://turkers.castingwords.com/hit/list*
- // @grant GM_addStyle
- // @version 1.0
- // ==/UserScript==
- var speed = 4.3;
- var SORT_PAY = 1;
- var SORT_HRLY = 2;
- var SORT_PPM = 3;
- var VER2 = true;
- var sortBy = SORT_PPM;
- var searchFor = "";
- var minPPM = "0.05";
- // ---------------------
- GM_addStyle(
- "tr.r1:hover { background-color: #ccc; }" +
- "tr.r1 { background-color: #f1f4f7; font-size: 13px; }" +
- "tr.r2:hover { background-color: #ccc; }" +
- "tr.r2 { background-color: #fafafa; font-size: 13px; }"+
- "a:visited { color: #900; }"
- );
- // f5f5f5, e5e5e5
- var totalpay = 0.00;
- var atl = document.createElement("div");
- var audio_trans = ulToArray("Audio Transcription_list", "atl");
- var audio_trans_expr = ulToArray("Express Transcription_list", "etl");
- var audio_trans_diff = ulToArray("Difficult Audio_list", "dal");
- var audio_trans_diff_expr = ulToArray("Diff Audio Expr Trans_list", "detl");
- var audio_trans_bulk_expr = ulToArray("Bulk Express Transcription_list", "atbe");
- var audio_verbatim = ulToArray("Verbatim Audio Transcription_list", "vat");
- var audio_verbatim_expr = ulToArray("Verbatim Express Transcription_list", "vetl");
- atl.style.marginTop = "15px";
- atl.innerHTML = ''+
- '<table style="margin: 0 auto; width: 90%;">'+
- '<tr>'+
- '<td colspan="2" style="text-align: center;" id="totalpay">f</td>'+
- '</tr>'+
- '<tr>'+
- '<td style="text-align: center;">'+
- '<div style="width: 600px; font-size: 18px;">'+
- 'Jump: <a href="#atl">Regular</a> ('+count("Audio Transcription_list")+'), '+
- '<a href="#dal">Difficult</a> ('+count("Difficult Audio_list")+'), '+
- '<a href="#detl">Difficult Express</a> ('+count("Diff Audio Expr Trans_list")+'), '+
- '<a href="#vat">Verbatim</a> ('+count("Verbatim Audio Transcription_list")+')'+
- '</div>'+
- '<br>'+audio_trans+'<br>'+
- '<br>'+audio_trans_diff+"<br>"+
- '<br>'+audio_trans_diff_expr+"<br>"+
- '<br>'+audio_verbatim+
- '</td>'+
- '<td style="text-align: center;">'+
- '<div style="width: 600px; font-size: 18px;">Jump: <a href="#etl">Express</a> ('+count("Express Transcription_list")+'), '+
- '<a href="#atbe">Bulk Express</a> ('+count("Bulk Express Transcription_list")+'), '+
- '<a href="#vetl">Verbatim Express</a> ('+count("Verbatim Express Transcription_list")+')</div>'+
- '<br>'+audio_trans_expr+'<br>'+
- '<br>'+audio_trans_bulk_expr+'<br>'+
- '<br>'+audio_verbatim_expr+'<br>'+
- '</td>'+
- '</tr>'+
- '</table>';
- blank_it();
- document.getElementById("totalpay").innerHTML = 'Total available pay: $<b style="color: green;">'+totalpay.toFixed(2)+'</b> (Grade 9: $<b style="color: green;">'+eval(totalpay*3).toFixed(2)+'</b>)';
- function blank_it()
- {
- document.body.parentNode.insertBefore(atl, document.body);
- document.body.innerHTML = "";
- document.body.style.background = "white";
- }
- function ulToArray(id, name)
- {
- var list = document.getElementById(id);
- var jobArray = new Array();
- var ttlpay = 0;
- var jobNum = 0;
- if(!list)
- {
- return '<div name="'+id+'" id="'+id+'" style="width:600px; font-size: 24px;">'+id+' <span style="font-size: 16px;">(no jobs)</span></div>';
- }
- for(li = list.getElementsByTagName("li"), n = 0; n < li.length; n++)
- {
- var jobid, jobdata, joburl, jobname, joblen, jobpay, jobg8, jobg9, jobsec, jobhrly;
- jobdata = li[n].innerHTML;
- joburl = jobdata.split(/"/)[1]; // "
- joburl = joburl.split(/hittypeid=/)[1].split(/&/)[0];
- joburl = "https://www.mturk.com/mturk/preview?groupId=" + joburl;
- jobname = jobdata.split(/">/)[1].split(/ \(/)[0]; // "
- jobname = jobname.replace("::", ":");
- jobname = jobname.replace(" : ", ": ");
- jobname = jobname.replace("Difficult Audio: ", "");
- jobname = jobname.trim();
- // If searchFor is non-empty, skip this HIT if it doesn't match.
- // Skip the search term: > -1
- // Skip everything else: == -1
- if(searchFor.length > 1)
- {
- if(name == "etl")
- {
- if(jobname.toLowerCase().indexOf(searchFor.toLowerCase()) == -1)
- {
- continue;
- }
- }
- }
- if(jobname.indexOf(": ") > -1)
- {
- jobid = jobname.split(/: /)[1].trim();
- jobname = jobname.split(/: /)[0];
- }
- else if(jobname.indexOf(" #") > -1)
- {
- jobid = jobname.split(/ #/)[1].trim();
- jobname = jobname.split(/ #/)[0];
- }
- joblen = jobdata.substring(jobdata.indexOf("[") + 1, jobdata.indexOf("]") - 5); // 05:38
- jobpay = jobdata.substring(jobdata.lastIndexOf("$") + 1, jobdata.lastIndexOf("</span>")); // 0.77
- jobg7 = jobpay * 2; jobg7 = jobg7.toFixed(2); // Only used for testing with the pay-per-minute calculation.
- jobg8 = jobpay * 3; jobg8 = jobg8.toFixed(2);
- jobg9 = jobpay * 3; jobg9 = jobg9.toFixed(2);
- jobsec = eval(joblen.split(/:/)[1]); // seconds only
- if(joblen.split(/:/)[0] > 0) // has minutes, so adjust
- jobsec += joblen.split(/:/)[0] * 60;
- jobhrly = jobg8 / (jobsec * speed / 3600);
- jobhrly = jobhrly.toFixed(2);
- job = new Object();
- job.name = jobname;
- job.id = jobid;
- job.len = joblen;
- job.sec = jobsec;
- job.pay = jobpay;
- job.g8 = jobg8;
- job.g9 = jobg9;
- job.hrly = jobhrly;
- job.url = joburl;
- job.pps = job.g8 / (job.sec / 60)
- if(job.pps < minPPM && name == "etl")
- {
- continue;
- }
- jobArray[jobNum] = job;
- jobNum++;
- ttlpay += eval(job.pay);
- totalpay += eval(job.pay);
- }
- if(sortBy == SORT_HRLY)
- jobArray.sort(function(a, b) { return b.hrly - a.hrly; } );
- if(sortBy == SORT_PAY)
- jobArray.sort(function(a, b) { return b.pay - a.pay; } );
- if(sortBy == SORT_PPM)
- jobArray.sort(function(a, b) { return b.pps - a.pps; } );
- var tableData = '';
- var oddeven = 0;
- var thecolor = "r1";
- for(n = 0; n < jobArray.length; n++)
- {
- if(!jobArray[n])
- break;
- if(oddeven == 0)
- {
- oddeven = 1;
- thecolor = "r1";
- }
- else
- {
- oddeven = 0;
- thecolor = "r2";
- }
- var padding = "4px;";
- /*
- // If "searchFor" isn't empty, only display hits with that search time in Express.
- var hits = 0;
- if(searchFor.length > 1)
- {
- if(name == "etl")
- {
- if(jobArray[n].name.indexOf(searchFor) == -1)
- {
- continue;
- }
- hits++;
- }
- }
- */
- tableData += '<tr class="'+thecolor+'">'+
- '<td style="border-top: 1px solid #fefefe; border-bottom: 1px solid #ececec; padding: '+padding+'"><a href="' + jobArray[n].url + '" style="color: blue;">' + jobArray[n].name + '</a> (<a href="https://www.mturk.com/mturk/searchbar?selectedSearchType=hitgroups&minReward=0.00&x=0&y=0&searchWords=%23' + jobArray[n].id + '">'+ jobArray[n].id +'</a>)</td>'+
- '<td style="border-top: 1px solid #fefefe; border-bottom: 1px solid #ececec; padding: '+padding+' text-align: right; color: #666">'+jobArray[n].len+'</td>'+
- '<td style="border-top: 1px solid #fefefe; border-bottom: 1px solid #ececec; padding: '+padding+' text-align: right; color: #666;">$'+jobArray[n].pay+'</td>'+
- '<td style="border-top: 1px solid #fefefe; border-bottom: 1px solid #ececec; padding: '+padding+' text-align: right;">$'+jobArray[n].g8+'</td>'+
- //'<td style="border-top: 1px solid #fefefe; border-bottom: 1px solid #ececec; padding: '+padding+' text-align: right; color: #666">$'+jobArray[n].g9+'</td>'+
- '<td style="border-top: 1px solid #fefefe; border-bottom: 1px solid #ececec; padding: '+padding+' text-align: right;">$'+jobArray[n].hrly+'</td>'+
- '<td style="border-top: 1px solid #fefefe; border-bottom: 1px solid #ececec; padding: '+padding+' text-align: right;">$'+jobArray[n].pps.toFixed(2)+'</td>'+
- "</tr>";
- }
- // Replaced 2012-02-22
- /*
- var COMBO = '<div style="width:600px; font-size: 24px;">'+id+' <span style="font-size: 16px;">($<b style="color: green;">'+ttlpay.toFixed(2)+'</b> / $<b style="color: green;">'+eval(ttlpay*3).toFixed(2)+'</b>)</span></div>'+
- '<table style="width: 600px;" id="'+name+'" name="'+name+'" cellspacing="0"><tr class="r">'+
- '<td style="font-weight:bold;width:350px;border-bottom:1px solid #aaa;">Name</td>'+
- '<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">Pay</td>'+
- '<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">G8</td>'+
- '<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">G9</td>'+
- '<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">Len</td>'+
- '<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">Hrly</td>'+
- '</tr>'+
- tableData+
- '<tr><td colspan="6" style="text-align: center; padding-top: 7px;"><b>Total pay</b>: $'+ttlpay.toFixed(2)+', <b>W/G8</b>: $'+eval(ttlpay*3).toFixed(2)+'</td></tr>'+
- '</table>';
- */
- var COMBO = '<div style="width:600px; font-size: 24px;">'+id+' <span style="font-size: 16px;">($<b style="color: green;">'+ttlpay.toFixed(2)+'</b> / $<b style="color: green;">'+eval(ttlpay*3).toFixed(2)+'</b>)</span></div>'+
- '<table style="width: 600px;" id="'+name+'" name="'+name+'" cellspacing="0"><tr class="r">'+
- '<td style="font-weight:bold;width:350px;border-bottom:1px solid #aaa;">Name</td>'+
- '<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">Len</td>'+
- '<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">Pay</td>'+
- '<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">G9</td>'+
- //'<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">G9</td>'+
- '<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">Hrly</td>'+
- '<td style="font-weight:bold;width:60px;border-bottom:1px solid #aaa; padding: 2px; text-align: right;">PPM</td>'+
- '</tr>'+
- tableData+
- '<tr><td colspan="6" style="text-align: center; padding-top: 7px;"><b>Total pay</b>: $'+ttlpay.toFixed(2)+', <b>W/G8</b>: $'+eval(ttlpay*3).toFixed(2)+'</td></tr>'+
- '</table>';
- return COMBO;
- }
- function formatCurrency(amount)
- {
- var i = parseFloat(amount);
- if(isNaN(i)) { i = 0.00; }
- var minus = '';
- if(i < 0) { minus = '-'; }
- i = Math.abs(i);
- i = parseInt((i + .005) * 100);
- i = i / 100;
- s = new String(i);
- if(s.indexOf('.') < 0) { s += '.00'; }
- if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
- s = minus + s;
- return s;
- }
- function count(id)
- {
- if(!document.getElementById(id))
- return 0;
- return document.getElementById(id).getElementsByTagName("li").length;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement