您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Scrape right on the site
// ==UserScript== // @name worker.mturk updater // @namespace saqfish // @version 0.1 // @description Scrape right on the site // @author saqfish // @match https://worker.mturk.com/projects* // @require http://code.jquery.com/jquery-3.1.0.min.js // @grant none // ==/UserScript== (function() { 'use strict'; var oldhits, runs =0; var Main = { numHits: 30, rewardAmount: 0.01, setMasters : false, setQualified: true, sortType: 'updated_desc', mturkURL:"https://worker.mturk.com/", refreshDelay : 1, results :null, _template : null, _header : null, _tags: null, getQueries: function(a){ var result = {}; console.log(a); a.split("&").forEach(function(part) { var item = part.split("="); result[decodeURIComponent(item[0])] = decodeURIComponent(item[1]); }); return result; }, load: ()=>{ var _worker = { url: $(location).attr('href')}; var _queries= Main.getQueries(_worker.url); console.log(_queries); Main.rewardAmount = _queries['filters[min_reward]']; Main.setMasters = _queries['filters[masters]']; Main.setQualified = _queries['filters[qualified]']; Main.sortType = _queries.sort; // Main. = _queries.; Main._tags = { results : 'ol.table-frame.hit-set-table', requester: ".4.1:$0.0.$requester0.0.1" ,title: ".4.1:$0.0.$title1", tasks:".4.1:$0.0.$tasksRemaining2", rewardAmount: ".4.1:$0.0.$rewardAmount3", preview: ".4.1:$0.0.$actions5.0.0", accept: ".4.1:$0.0.$actions5.0.1.0"}; Main.results = $(Main._tags.results); Main._template = $(Main.results.find('li')[1]).clone(); Main._header = $(Main.results.find('li')[0]).clone(); $('div.projects-controls').append('<div id="tingScrape"><label class="m-b-0 items-per-page-container"><span class="supportive-label m-r-sm">Update:</span> <span id="scrapeSpan" class="accept-qualify-container"><a id="scrapeButton" class="btn work-btn hidden-sm-down" >GO</a></span></div>'); $('#scrapeButton').click(function() { $('div.projects-controls').children().not('#tingScrape').remove(); $('.mturk-pagination').remove(); var ting = $(scrapeSpan); var ting2 = $(this); if(!Scraper.scraping){ ting.removeClass('accept-qualify-container'); ting2.addClass('btn btn-secondary'); ting2.text('STOP'); Scraper.start(); }else{ ting.addClass('accept-qualify-container'); ting2.text('GO'); Scraper.stop(); } }); } }; var Scraper = { scraping: false, sInterval : null, highInterval : null, resultTable : null, start: function(){ Scraper.scraping = true; Scraper.sInterval = setInterval(function(){ Scraper.scrape(Main.numHits, Main.rewardAmount, Main.setMasters, Main.setQualified, Main.sortType, Main.mturkURL); }, Main.refreshDelay*1000); }, stop: function(){ Scraper.scraping = false; clearInterval(Scraper.sInterval); }, scrape: function(numHits,rewardAmount,setMasters, setQualified, sortType, mturkURL){ $.getJSON( mturkURL, { 'filters[search_term]': '', 'page_size' : numHits, 'filters[qualified]': setQualified, 'filters[masters]': setMasters, 'sort': sortType, 'filters[min_reward]': rewardAmount, }) .done(function( data ) { var idz = Array(); $.each(data.results,function (i,v){ idz[i] = sit(v.requester_id); }); if(Main.showTO) Scraper.getTO(idz,data); else Scraper.format(data); }); }, format: function(data){ var found = false; var results = Main.results; var _header = Main._header; if(runs < 1){ oldhits = data; results.empty(); results.append(_header); } $.each(data.results,(e,v)=>{ var hit = data.results[e]; for(var eye = 0, len = oldhits.results.length; eye < len; eye++) { if (oldhits.results[eye].hit_set_id === hit.hit_set_id){ found = true; } } if(!found){ var _template = Main._template.clone(); _template.find(`span[data-reactid="${Main._tags.title}"]`).text(hit.title); _template.find(`a[data-reactid="${Main._tags.requester}"]`).text(hit.requester_name); _template.find(`a[data-reactid="${Main._tags.requester}"]`).attr('href',hit.requester_url); _template.find(`span[data-reactid="${Main._tags.tasks}"]`).text(hit.assignable_hits_count); _template.find(`span[data-reactid="${Main._tags.rewardAmount}"]`).text(hit.monetary_reward.amount_in_dollars); _template.find(`span[data-reactid="${Main._tags.preview}"]`).attr('href',hit.project_tasks_url); _template.find(`span[data-reactid="${Main._tags.accept}"]`).attr('href',hit.accept_project_task_url); _header.after(_template); } }); oldhits = data; runs++; } }; function sit(ting){ var ting2 = JSON.stringify(ting).replace(/\"/g, ""); return ting2; } Main.load(); })();