// ==UserScript== // @name huiji-tieba-script // @name:zh-CN 百度灰机汉化组吧脚本 // @version 0.1.1 // @description Automatic URL conversion, fix sticker link // @description:zh-cn 自动转换4位尾号为网址, 修复包含表情的链接 // @author yahiousun // @include *://tieba.baidu.com/p/* // @grant none // @namespace https://greasyfork.org/users/157242 // @downloadURL none // ==/UserScript== (function(window, document) { 'use strict'; var CODE_REGEX = /(\u4ee3\u7801|\u4ee3\u53f7|\u5c3e\u53f7|\u672b\u4f4d|\u56db\u4f4d|\u56db\u4f4d\u6570|\u4f60\u4eec\u61c2\u5f97)[^\d]*?(\d{4})(?!:)/g; var STICKER_REGEX = /h([^<]*]*class="BDE_Smiley[^>]*>)+[^<]*omnibus\/100(\d{4})/g; var TEMPLATE = "http://smp.yoedge.com/view/omnibus/100$2"; var THRESHOLD = 300; function debounce(fn, thershold, context) { var timer = null; return function() { clearTimeout(timer); var args = arguments; timer = setTimeout(function() { fn.apply(context, args); }, thershold); }; } function smp() { var cc = document.querySelectorAll('cc'); if (CODE_REGEX.test(document.body.innerHTML) && typeof cc !== 'undefined') { [].forEach.call(cc, function(node) { node.innerHTML = node.innerHTML.replace(CODE_REGEX, TEMPLATE); }); } if (STICKER_REGEX.test(document.body.innerHTML) && typeof cc !== 'undefined') { [].forEach.call(cc, function(node) { node.innerHTML = node.innerHTML.replace(STICKER_REGEX, TEMPLATE); }); } } window.addEventListener('DOMNodeInserted', debounce(smp, THRESHOLD)); window.addEventListener('DOMSubtreeModified', debounce(smp, THRESHOLD)); })(window, document);