MTurk Dashboard Change Notifier

Shows changes in submitted HITs, bonuses and earnings since last page load

  1. // ==UserScript==
  2. // @name MTurk Dashboard Change Notifier
  3. // @namespace localhost
  4. // @author ThirdClassInternationalMasterTurker
  5. // @description Shows changes in submitted HITs, bonuses and earnings since last page load
  6. // @include https://www.mturk.com/mturk/dashboard
  7. // @version 1.1
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. //
  12. // 2012-09-09 First public release by ThirdClassInternationalMasterTurker
  13. //
  14. // 2012-09-20 1.0 First vorking version
  15. //
  16. // 2012-12-02 1.1 Added @downloadURL and @updateURL
  17. //
  18. function to_fixed(str) {
  19. str = str.slice(1).replace(',', '');
  20. return parseFloat(str).toFixed(2);
  21. }
  22.  
  23. var rows = document.evaluate('//tr[@class]',
  24. document,
  25. null,
  26. XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  27.  
  28. if (localStorage['prev_approved'] === undefined)
  29. prev_approved = "$0";
  30. else
  31. prev_approved = localStorage.getItem('prev_approved');
  32.  
  33. if (localStorage['prev_bonuses'] === undefined)
  34. prev_bonuses = "$0";
  35. else
  36. prev_bonuses = localStorage.getItem('prev_bonuses');
  37.  
  38. if (localStorage['prev_total'] === undefined)
  39. prev_total = "$0";
  40. else
  41. prev_total = localStorage.getItem('prev_total');
  42.  
  43. if (localStorage['prev_submitted'] === undefined)
  44. prev_submitted = 0;
  45. else
  46. prev_submitted = parseInt(localStorage.getItem('prev_submitted'));
  47.  
  48. for (var i=0;i<rows.snapshotLength;i++) {
  49. var row = rows.snapshotItem(i);
  50.  
  51. if (row.cells.length == 2) {
  52. if (row.className.match('odd|even') == null) {
  53. continue;
  54. }
  55.  
  56. if (row.cells[0].textContent.match('Approved HITs')) {
  57. var new_approved = row.cells[1].childNodes[0].textContent;
  58. if (new_approved != prev_approved) {
  59. row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+ $" + (to_fixed(new_approved) - to_fixed(prev_approved)).toFixed(2) + "</span>";
  60. localStorage.setItem('prev_approved', new_approved);
  61. }
  62. }
  63.  
  64. if (row.cells[0].textContent.match('Bonuses')) {
  65. var new_bonuses = row.cells[1].childNodes[0].textContent;
  66. if (new_bonuses != prev_bonuses) {
  67. row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+ $" + (to_fixed(new_bonuses) - to_fixed(prev_bonuses)).toFixed(2) + "</span>";
  68. localStorage.setItem('prev_bonuses', new_bonuses);
  69. }
  70. }
  71.  
  72. if (row.cells[0].textContent.match('Total Earnings')) {
  73. new_total = row.cells[1].childNodes[0].textContent;
  74. if (new_total != prev_total) {
  75. row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+ $" + (to_fixed(new_total) - to_fixed(prev_total)).toFixed(2) + "</span>";
  76. localStorage.setItem('prev_total', new_total);
  77. }
  78. }
  79. }
  80. if (row.cells.length == 6) {
  81. if (row.className.match('odd|even') == null) {
  82. continue;
  83. }
  84. if (row.cells[0].textContent.match('Today')) {
  85. var new_submitted = parseInt(row.cells[1].textContent);
  86. if (new_submitted <= prev_submitted) {
  87. localStorage.setItem('prev_submitted', new_submitted);
  88. }
  89. else if (new_submitted > prev_submitted) {
  90. row.cells[1].innerHTML = "<span style=\"color:grey;float:left;\">+" + (new_submitted-prev_submitted) + "</span>" + row.cells[1].innerHTML;
  91. localStorage.setItem('prev_submitted', new_submitted);
  92. }
  93. }
  94.  
  95. }
  96. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址