您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Modifies the MTurk dashboard.
当前为
// ==UserScript== // @name Mturk Dashboard // @namespace http://kadauchi.com/ // @version 1.6.6 // @description Modifies the MTurk dashboard. // @author Kadauchi // @icon http://kadauchi.com/avatar1.jpg // @include https://www.mturk.com/mturk/dashboard* // @grant GM_log // @grant GM_setClipboard // @require https://code.jquery.com/jquery-3.0.0-beta1.min.js // ==/UserScript== Todays_Projected_Earnings(); // Code cleanup needed. Todays_Projected_Bonus(); Best_Worst_Case(); Real_Stats(); Changes(); Yearly(); function Todays_Projected_Earnings(){ var TPEhitLOG = {}; var TPEdetailsLOG = {}; if (localStorage.TPEhitLOG){ TPEhitLOG = JSON.parse(localStorage.TPEhitLOG); } var today = $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).prop("href"); var pe = Number(localStorage.TPE_pe) || 0; var $peTR = $('<div id="TPE_div" class="even" style="display:table-row">'); var $peTD1 = $('<td class="metrics-table-first-value">'); var $peTD2 = $('<td>'); var $peA = $('<a href="javascript:void(0)">Today\'s Projected Earnings</a>'); var $TPE_details = $('<span style="color: blue; font-size: 10px; cursor: pointer; float: right;">Details<img style="margin-left: 5px;" src="/media/more.gif" border="0/"></span>'); var $peSPAN = $('<span class="reward">$0.00</span>'); $("td.metrics-table-first-value:contains(Total Earnings)").parent().after($peTR); $peTR.append($peTD1.append($peA,$TPE_details),$peTD2.append($peSPAN)); var $TPED_table = $('<table style="display: none;" width="760" align="center" cellspacing="0" cellpadding="0">'); var $TPED_tboday = $('<tbody>'); var $TPED_tr_1 = $('<tr id="TPE_tr" height="25px"><td width="10" bgcolor="#7fb4cf" style="padding-left: 10px;"></td><td width="100%" bgcolor="#7fb4cf" class="white_text_14_bold">Today\'s Projected Earnings Details <a id="fourmEXPORT" href="javascript:void(0)" class="whatis" >(Forum Export)</a></td><td width="10" align="right" bgcolor="#7fb4cf"></td></tr>'); var $TPED_tr_2 = $('<tr><td class="container-content" colspan="3"><table class="metrics-table" width="100%"><tbody><tr><td width="100%"><table class="metrics-table" width="100%"><tbody id="tbody2"></tbody></table></td></tr></tbody></table></td></tr>'); var $TPED_tr_h = $('<tr class="metrics-table-header-row"><th class="metrics-table-first-header">Requester</th><th>Submitted</th><th>Projected</th></tr>'); $("#subtabs_and_searchbar").next().next().after($TPED_table); $TPED_table.append($TPED_tboday); $TPED_tboday.append($TPED_tr_1,$TPED_tr_2); $("#tbody2").append($TPED_tr_h); $("#fourmEXPORT").click(function(){ var exportcode = ""; var bonus = $("#bonus").text(); if (bonus !== "$0.00"){ var total = (Number(pe)+Number(bonus.replace(/[^0-9.]/g, ""))).toFixed(2); exportcode += "[b]Today's Projected Earnings: $"+Number(pe).toFixed(2)+" + Bonuses: "+bonus+" = $"+total+"[/b]\n"; } else { exportcode += "[b]Today's Projected Earnings: $"+Number(pe).toFixed(2)+"[/b]\n"; } exportcode += "[spoiler=Today's Projected Earnings Full Details][table][tr][th][b]Requester[/b][/th][th][b]Submitted[/b][/th][th][b]Projected[/b][/th][/tr]"; var x_sorted = Object.keys(TPEdetailsLOG).sort(function(a,b){return TPEdetailsLOG[a].reward - TPEdetailsLOG[b].reward;}); for (var j = x_sorted.length-1; j > -1; j--){ var xkey = x_sorted[j]; var x_req = TPEdetailsLOG[xkey].req; var x_reqid = TPEdetailsLOG[xkey].reqid; var x_submitted = TPEdetailsLOG[xkey].submit; var x_reward = Number(TPEdetailsLOG[xkey].reward).toFixed(2); if (x_req === "Bonuses"){ if (x_reward !== "0.00"){ exportcode += "[tr][td]"+x_req+"[/td][td]"+x_submitted+"[/td][td]$"+x_reward+"[/td][/tr]\n"; } } else { exportcode += "[tr][td][url=https://www.mturk.com/mturk/searchbar?selectedSearchType=hitgroups&requesterId="+x_reqid+"]"+x_req+"[/url][/td][td]"+x_submitted+"[/td][td]$"+x_reward+"[/td][/tr]\n"; } } exportcode += "[/table][/spoiler]"; GM_setClipboard(exportcode); alert("Forum Export copied to your clipboard."); }); $peA.click(function(){ if ($peA.text() === "Today's Projected Earnings"){ var confirmation = confirm("Are you sure you want to recalculate Today's Projected Earnings?"); if (confirmation === true){ TPEhitLOG = {}; TPEdetailsLOG = {}; pe = 0; $("#tbody2").find("tr.odd, tr.even").remove(); getDATA(today); $peSPAN.text("$0.00"); } } }); $TPE_details.click(function(){ $TPE_details.find("img").attr("src", ($TPE_details.find("img").attr("src") === "/media/more.gif") ? "/media/less.gif" : "/media/more.gif"); $TPED_table.toggle(); }); if (today){ var date = today.split("encodedDate=")[1]; if (date === localStorage.TPE_date){ $peSPAN.text("$"+Number(pe).toFixed(2)); getDATA(localStorage.TPE_lastpage); } else { localStorage.TPE_date = date; TPEhitLOG = {}; pe = 0; $peSPAN.text("$0.00"); getDATA(today); } } else { $peA.text("Today's Projected Earnings"); $peSPAN.text("$0.00"); } function getDATA(URL){ var page = URL.match(/Number=([0-9]*)/g); if (page){ $peA.text("Calculating Page "+page.toString().replace(/[^0-9.]/g, "")); } else { $peA.text("Calculating Page 1"); } $.get(URL, function(data){ var $data = $(data); var $hits = $data.find("#dailyActivityTable").find("tr[valign='top']"); if ($hits.length){ var url = $data.find("a:contains(Next)").eq(0).prop("href"); for (var i = 0; i < $hits.length; i++){ var req = $hits.eq(i).find("td.statusdetailRequesterColumnValue").text().trim(); var title = $hits.eq(i).find("td.statusdetailTitleColumnValue").text().trim(); var reward = $hits.eq(i).find("td.statusdetailAmountColumnValue").text().trim(); var status = $hits.eq(i).find("td.statusdetailStatusColumnValue").text().trim(); var reqid = $hits.eq(i).find("a").prop("href").split("requesterId=")[1].split("&")[0]; var hitid = $hits.eq(i).find("a").prop("href").split("HIT+")[1]; if (!TPEhitLOG[hitid]){ TPEhitLOG[hitid] = { req : req, title : title, reward : reward, status : status, reqid : reqid, hitid : hitid }; } } if (url){ getDATA(url); } else { pe = 0; for(var key in TPEhitLOG){ if (TPEhitLOG[key].status !== "Rejected"){ pe += parseFloat(TPEhitLOG[key].reward.replace(/[^0-9.]/g, "")); } if (!TPEdetailsLOG[TPEhitLOG[key].reqid]){ TPEdetailsLOG[TPEhitLOG[key].reqid] = { req : TPEhitLOG[key].req, submit : 1, reward : parseFloat(TPEhitLOG[key].reward.replace(/[^0-9.]/g, "")), reqid : TPEhitLOG[key].reqid }; } else { TPEdetailsLOG[TPEhitLOG[key].reqid].submit = TPEdetailsLOG[TPEhitLOG[key].reqid].submit + 1; TPEdetailsLOG[TPEhitLOG[key].reqid].reward = TPEdetailsLOG[TPEhitLOG[key].reqid].reward + parseFloat(TPEhitLOG[key].reward.replace(/[^0-9.]/g, "")); } } if (!TPEdetailsLOG.bonuses && $("#bonus").length){ TPEdetailsLOG.bonuses = { req : "Bonuses", submit : "N/A", reward : parseFloat($("#bonus").text().replace(/[^0-9.]/g, "")), reqid : "N/A" }; } else if ($("#bonus").length){ TPEdetailsLOG.bonuses.reward = parseFloat($("#bonus").text().replace(/[^0-9.]/g, "")); } var d_sorted = Object.keys(TPEdetailsLOG).sort(function(a,b){return TPEdetailsLOG[a].reward - TPEdetailsLOG[b].reward;}); var oddeven = true; for (var j = d_sorted.length-1; j > -1; j--){ var dkey = d_sorted[j]; var d_req = TPEdetailsLOG[dkey].req; var d_submitted = TPEdetailsLOG[dkey].submit; var d_reward = Number(TPEdetailsLOG[dkey].reward).toFixed(2); if (oddeven){ oddeven = false; $("#tbody2").append('<tr class="odd"><td class="metrics-table-first-value">'+d_req+'</td><td>'+d_submitted+'</td><td><span class="reward">$'+d_reward+'</span></td></tr>'); } else { oddeven = true; $("#tbody2").append('<tr class="even"><td class="metrics-table-first-value">'+d_req+'</td><td>'+d_submitted+'</td><td><span class="reward">$'+d_reward+'</span></td></tr>'); } } localStorage.TPEhitLOG = JSON.stringify(TPEhitLOG); localStorage.TPE_lastpage = URL; localStorage.TPE_pe = pe; $peA.text("Today's Projected Earnings"); $peSPAN.text("$"+Number(pe).toFixed(2)); } } else { setTimeout(function(){ getDATA(URL); }, 2000); } }); } } function Todays_Projected_Bonus(){ var today = $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).prop("href"); var $bonusDIV = $('<div id="bonusDIV" class="odd" style="display:table-row">'); $($bonusDIV).append('<td class="metrics-table-first-value"><a href="javascript:void(0)">Today\'s Projected Bonuses</a></td><td><span id="bonus" class="reward">$0.00</span></td>'); $("#TPE_div").after($bonusDIV); if (today){ var date = today.split("encodedDate=")[1]; if (date === localStorage.TPB_date){ if (!localStorage.today_start_bonuses){ localStorage.today_start_bonuses = Number($("#bonus_earnings_amount").text().replace(/[^0-9.]/g, "")); } Bonuses(localStorage.today_start_bonuses); } else { var today_approved = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().text()); if (today_approved === 0){ localStorage.today_start_bonuses = (Number($("#bonus_earnings_amount").text().replace(/[^0-9.]/g, ""))-Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().next().next().text().replace(/[^0-9.]/g, ""))); } else { localStorage.today_start_bonuses = Number($("#bonus_earnings_amount").text().replace(/[^0-9.]/g, "")); } localStorage.TPB_date = date; Bonuses(localStorage.today_start_bonuses); } } function Bonuses(starting_bonus){ var total_bonuses = $("#bonus_earnings_amount").text().replace(/[^0-9.]/g, ""); $("#bonus").text("$"+(Math.round((Number(total_bonuses)-Number(starting_bonus))*100)/100).toFixed(2)); } } function Real_Stats(){ var approved = Number($("td.metrics-table-first-value:contains(... Approved)").next().text()); var rejected = Number($("td.metrics-table-first-value:contains(... Rejected)").next().text()); $("td.metrics-table-first-value:contains(... Approved)").next().next().text(Math.round(((approved)/(approved+rejected))*1000000)/10000+"%"); $("td.metrics-table-first-value:contains(... Rejected)").next().next().text(Math.round(((rejected)/(approved+rejected))*1000000)/10000+"%"); } function Best_Worst_Case(){ var submitted = Number($("td.metrics-table-first-value:contains(HITs Submitted)").next().text()); var rejected = Number($("td.metrics-table-first-value:contains(... Rejected)").next().text()); var $under99 = $('<span style="color: orange;"> ('+Math.round((rejected-((1.0 - 99/100)*submitted))/((1.0 - 99/100)-1))+' ≥ 99%)</span>'); var $under95 = $('<span style="color: red;"> ('+Math.round((rejected-((1.0 - 95/100)*submitted))/((1.0 - 95/100)-1))+' ≥ 95%)</span>'); $("td.metrics-table-first-value:contains(... Pending)").append($under99,$under95); $("td.metrics-table-first-value:contains(... Pending)").next().next().text(Math.round(((submitted-rejected)/submitted)*1000000)/10000+"%").css({"color": "green"}); } function Changes(){ var today = $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).prop("href"); if (today){ var date = today.split("encodedDate=")[1]; if (date !== localStorage.Changes_date){ localStorage.Changes_date = date; localStorage.today_submitted = 0; localStorage.today_approved = 0; localStorage.today_rejected = 0; localStorage.today_pending = 0; } } var earnings_hits = Number($("#approved_hits_earnings_amount").text().replace(/[^0-9.]/g, "")); var earnings_bonuses = Number($("#bonus_earnings_amount").text().replace(/[^0-9.]/g, "")); var earnings_total = Number($("#total_earnings_amount").text().replace(/[^0-9.]/g, "")); var earnings_transfer = Number($("#transfer_earnings").text().replace(/[^0-9.]/g, "")); var hits_submitted = Number($("td.metrics-table-first-value:contains(HITs Submitted)").next().text()); var hits_approved = Number($("td.metrics-table-first-value:contains(... Approved)").next().text()); var hits_rejected = Number($("td.metrics-table-first-value:contains(... Rejected)").next().text()); var hits_pending = Number($("td.metrics-table-first-value:contains(... Pending)").next().text()); var today_submitted = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().text()); var today_approved = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().text()); var today_rejected = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().text()); var today_pending = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().next().text()); if (Number(localStorage.earnings_hits) !== earnings_hits){ $("#approved_hits_earnings_amount").prev().append('<span id="earnings_hits" style="float:right;">+$'+(Math.round((earnings_hits-Number(localStorage.earnings_hits))*100)/100).toFixed(2)+'</span>'); localStorage.earnings_hits = earnings_hits; } if (Number(localStorage.earnings_bonuses) !== earnings_bonuses){ $("#bonus_earnings_amount").prev().append('<span id="earnings_bonuses" style="float:right;">+$'+(Math.round((earnings_bonuses-Number(localStorage.earnings_bonuses))*100)/100).toFixed(2)+'</span>'); localStorage.earnings_bonuses = earnings_bonuses; } if (Number(localStorage.earnings_total) !== earnings_total){ $("#total_earnings_amount").prev().append('<span id="earnings_total" style="float:right;">+$'+(Math.round((earnings_total-Number(localStorage.earnings_total))*100)/100).toFixed(2)+'</span>'); localStorage.earnings_total = earnings_total; } if (Number(localStorage.earnings_transfer) !== earnings_transfer){ if (Number(localStorage.earnings_transfer) > earnings_transfer){ $("#transfer_earnings").prev().append('<span id="earnings_transfer" style="float:right;">-$'+(Math.round((Number(localStorage.earnings_transfer)-earnings_transfer)*100)/100).toFixed(2)+'</span>'); } else { $("#transfer_earnings").prev().append('<span id="earnings_transfer" style="float:right;">+$'+(Math.round((earnings_transfer-Number(localStorage.earnings_transfer))*100)/100).toFixed(2)+'</span>'); } localStorage.earnings_transfer = earnings_transfer; } if (Number(localStorage.hits_submitted) !== hits_submitted){ $("td.metrics-table-first-value:contains(HITs Submitted)").append('<span id="hits_submitted" style="float:right;">+'+(hits_submitted-Number(localStorage.hits_submitted))+'</span>'); localStorage.hits_submitted = hits_submitted; } if (Number(localStorage.hits_approved) !== hits_approved){ $("td.metrics-table-first-value:contains(... Approved)").append('<span id="hits_approved" style="float:right;">+'+(hits_approved-Number(localStorage.hits_approved))+'</span>'); localStorage.hits_approved = hits_approved; } if (Number(localStorage.hits_rejected) !== hits_rejected){ $("td.metrics-table-first-value:contains(... Rejected)").append('<span id="hits_rejected" style="float:right;">+'+(hits_rejected-Number(localStorage.hits_rejected))+'</span>'); localStorage.hits_rejected = hits_rejected; } if (Number(localStorage.hits_pending) !== hits_pending){ if (Number(localStorage.hits_pending) > hits_pending){ $("td.metrics-table-first-value:contains(... Pending)").append('<span id="hits_pending" style="float:right;">-'+(Number(localStorage.hits_pending)-hits_pending)+'</span>'); } else { $("td.metrics-table-first-value:contains(... Pending)").append('<span id="hits_pending" style="float:right;">+'+(hits_pending-Number(localStorage.hits_pending))+'</span>'); } localStorage.hits_pending = hits_pending; } if (Number(localStorage.today_submitted) !== today_submitted){ $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().append('<span id="today_submitted" style="float:left;">+'+(today_submitted-Number(localStorage.today_submitted))+'</span>'); localStorage.today_submitted = today_submitted; } if (Number(localStorage.today_approved) !== today_approved){ $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().append('<span id="today_approved" style="float:left;">+'+(today_approved-Number(localStorage.today_approved))+'</span>'); localStorage.today_approved = today_approved; } if (Number(localStorage.today_rejected) !== today_rejected){ $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().append('<span id="today_rejected" style="float:left;">+'+(today_rejected-Number(localStorage.today_rejected))+'</span>'); localStorage.today_rejected = today_rejected; } if (Number(localStorage.today_pending) !== today_pending){ if (Number(localStorage.today_pending) > today_pending){ $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().next().append('<span id="today_pending" style="float:left;">-'+(Number(localStorage.today_pending)-today_pending)+'</span>'); } else { $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().next().append('<span id="today_pending" style="float:left;">+'+(today_pending-Number(localStorage.today_pending))+'</span>'); } localStorage.today_pending = today_pending; } } function Yearly(){ var totalearnings = Number($("#total_earnings_amount").text().replace(/[^0-9.]/g, "")); var $reward = $("#table_yearly_earnings").find("span.reward"); for (var i = 0; i < $reward.length; i++){ totalearnings -= Number($reward.eq(i).text().replace(/[^0-9.]/g, "")); } var earnings2016 = Number((totalearnings).toFixed(2)).toLocaleString("en"); var $thisyear = $('<tr class="odd"><td class="metrics-table-first-value">2016</td><td id="yearly_earnings_amount"><span class="reward">$'+earnings2016+'</span></td></tr>'); $("#table_yearly_earnings").find("tr.metrics-table-header-row").after($thisyear); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址