// ==UserScript== // @name hipda-德高望重 // @namespace http://tampermonkey.net/ // @version 0.1.0 // @description 有时候,你只想看到德高望重的用户,除非TA是楼主 // @author 屋大维 // @license MIT // @match https://www.hi-pda.com/forum/* // @require https://code.jquery.com/jquery-3.4.1.min.js // @icon https://www.iconninja.com/files/976/19/674/mature-avatar-man-grandfather-male-person-old-icon.png // @downloadURL none // ==/UserScript== (function() { 'use strict'; // CONST const ENABLE = true; // true or false const THRESHOLD = 0; // const TOGGLE_KEY = 'alt+P'; // Your code here... // helpers function getKeys(e){ // keycode 转换 var codetable={'96':'Numpad 0','97':'Numpad 1','98':'Numpad 2','99':'Numpad 3','100':'Numpad 4','101':'Numpad 5','102':'Numpad 6','103':'Numpad 7','104':'Numpad 8','105':'Numpad 9','106':'Numpad *','107':'Numpad +','108':'Numpad Enter','109':'Numpad -','110':'Numpad .','111':'Numpad /','112':'F1','113':'F2','114':'F3','115':'F4','116':'F5','117':'F6','118':'F7','119':'F8','120':'F9','121':'F10','122':'F11','123':'F12','8':'BackSpace','9':'Tab','12':'Clear','13':'Enter','16':'Shift','17':'Ctrl','18':'Alt','20':'Cape Lock','27':'Esc','32':'Spacebar','33':'Page Up','34':'Page Down','35':'End','36':'Home','37':'←','38':'↑','39':'→','40':'↓','45':'Insert','46':'Delete','144':'Num Lock','186':';:','187':'=+','188':',<','189':'-_','190':'.>','191':'/?','192':'`~','219':'[{','220':'\|','221':']}','222':'"'}; var Keys = ''; e.shiftKey && (e.keyCode != 16) && (Keys += 'shift+'); e.ctrlKey && (e.keyCode != 17) && (Keys += 'ctrl+'); e.altKey && (e.keyCode != 18) && (Keys += 'alt+'); return Keys + (codetable[e.keyCode] || String.fromCharCode(e.keyCode) || ''); }; function addHotKey(codes,func){// 监视并执行快捷键对应的函数 document.addEventListener('keydown', function(e){ if ((e.target.tagName != 'INPUT') && (e.target.tagName != 'TEXTAREA') && getKeys(e) == codes){ func(); e.preventDefault(); e.stopPropagation(); } }, false); }; // classes class HpThread { constructor() { } getThreadTid() { return location.href.match(/tid=(\d+)/) ? parseInt(location.href.match(/tid=(\d+)/)[1]) : -999; } getUserUid() { return parseInt($("cite > a").attr("href").split("uid=")[1]); } getThreadTitle() { let l = $('#nav').text().split(" » "); return l[l.length - 1]; } getHpPosts() { let threadTid = this.getThreadTid(); let threadTitle = this.getThreadTitle(); let divs = $('#postlist > div').get(); return divs.map(d => new HpPost(threadTid, threadTitle, d)); } } class HpPost { constructor(threadTid, threadTitle, postDiv) { this.threadTid = threadTid; this.threadTitle = threadTitle; this._post_div = postDiv; this.hidden = false; } isMainPost() { return this.getPostPid() === new HpPost(this.threadTid, this.threadTitle, $('#postlist > div').first().get()).getPostPid(); } getPostAuthorName() { return $(this._post_div).find("div.postinfo > a").first().text(); } getPostAuthorUid() { return parseInt($(this._post_div).find("div.postinfo > a").first().attr("href").split("uid=")[1]); } getPostPid() { return parseInt($(this._post_div).attr("id").split("_")[1]); } getGotoUrl() { return `https://www.hi-pda.com/forum/redirect.php?goto=findpost&ptid=${this.threadTid}&pid=${this.getPostPid()}`; } getPostAuthorCredit() { return parseInt($(this._post_div).find("dl.profile > dd:nth-child(6)").text()); } hidePost() { $(this._post_div).hide(); this.hidden = true; } showPost() { $(this._post_div).show(); this.hidden = false; } highlightPost() { $(this._post_div).css("background-color", "rgba(255, 255, 0, 0.1)"); } toggleDisplay() { if (this.hidden) { this.showPost(); return; } if (this.getPostAuthorCredit() < THRESHOLD && !this.isMainPost()) { this.hidePost(); } } register() { addHotKey(TOGGLE_KEY, this.toggleDisplay.bind(this)); if (this.getPostAuthorCredit() < THRESHOLD) { this.highlightPost(); } if (ENABLE) { this.toggleDisplay(); } } } function main() { // get a thread object var THIS_THREAD = new HpThread(); var hp_posts = THIS_THREAD.getHpPosts(); for (let i=0; i