// ==UserScript== // @name 51Talk.教师评分|课程数|好评率|Top 5 // @version 0.0.13 // @namespace tsharp.js.51talk_sort // @description 51Talk教师评分:评价量、好评比。 此脚本会在老师的名字后添加2个参数:1、教师标签评价量。2、教师的好评比率(0-100%)。 正在开发中功能:增加过滤功能,高亮显示Top 5的老师。 // @author jimbo // @license GPLv3 // @match https://www.51talk.com/ReserveNew/index* // @match http://www.51talk.com/ReserveNew/index* // @icon https://avatars3.githubusercontent.com/u/25388328 // @grant GM_xmlhttpRequest // @require http://code.jquery.com/jquery-3.4.1.min.js // @require https://code.jquery.com/ui/1.12.1/jquery-ui.min.js // @downloadURL none // ==/UserScript== (function() { 'use strict'; $("head").append ( '' ); //删除数组中的空元素 Array.prototype.clean = function(deleteValue="") { for (var i = 0; i < this.length; i++) { if (this[i] == deleteValue) { this.splice(i, 1); i--; } } return this; }; function teacher_sort(a, b){ return b - a; } /** * 提交运算函数到 document 的 fx 队列 */ var submit = function (fun) { var queue = $.queue(document, "fx", fun); if (queue[0] == 'inprogress') { return; } $.dequeue(document); }; let num = /[0-9]*/g; $.each($(".item-top-cont"),function(i,item){ item.innerHTML=item.innerHTML.replace('',''); }); let i_len = $(".label").length; let value = []; var callbacks=[]; for(let i = 0; i < i_len; i++) { let j_len = $(".label")[i].textContent.match(num).clean("").length; value[i] = 0; for(let j = 0; j < j_len; j++) { value[i] += Number($(".label")[i].textContent.match(num).clean("")[j]); } value[i] /= 5; $(".teacher-name")[i].innerText += "[" + value[i].toFixed(0) + "]"; callbacks.push({'index':i,'tid':$(".teacher-details-link a")[i].href.replace("https://www.51talk.com/TeacherNew/info/","").replace('http://www.51talk.com/TeacherNew/info/','')}); } $.each(callbacks, function(index, item){ submit(function(next){ // ajax 请求一定要包含在一个函数中 $.ajax({ url:'https://www.51talk.com/TeacherNew/teacherComment?tid='+item.tid+'&type=bad&has_msg=1', type:'GET', dateType:'html', //headers:{'Referer': 'https://www.51talk.com/TeacherNew/info/'+item.tid}, success:function (r) { if($(".evaluate-content-left span",r) && $(".evaluate-content-left span",r).length>=3){ var thumbup =Number($(".evaluate-content-left span",r)[1].innerText.match(num).clean("")[0]); var thumbdown =Number($(".evaluate-content-left span",r)[2].innerText.match(num).clean("")[0]); var thumbupRate =((thumbup+0.00001)/(thumbdown+thumbup)).toFixed(2)*100; $(".teacher-name")[index].innerText += "[" + thumbupRate + "%]"; $($(".item")[index]).attr('thumbup',thumbup) .attr('thumbdown',thumbdown) .attr('thumbupRate',thumbupRate) .attr('age',$($('.teacher-age')[index]).text().match(num).clean("")); } else{ console.log(item); } }, error:function(data){console.log("error--"+data);} }).always(next); }); }); value.sort(teacher_sort); var dialog=$("