DuckDuckGo bang fixer

Cross-references bangs on the DuckDuckGo bangs page

// ==UserScript==
// @name         DuckDuckGo bang fixer
// @namespace    http://tombebbington.github.io/
// @version      0.3
// @description  Cross-references bangs on the DuckDuckGo bangs page
// @author       Tom Bebbington
// @match        https://duckduckgo.com/bang.html
// @grant        none
// ==/UserScript==

"use strict";
(function() {
    function remove(node) {
        node.parentNode.removeChild(node);
    };
    function run_xpath(path) {
    	return document.evaluate(path, document.body, null, XPathResult.ANY_TYPE, null).iterateNext();
    }
    var re = /(.+) \((\!.+)\)/;
    var bang_re = /\!([^ \!]+)/g;
    var values = run_xpath(".//*[@id=\"content_internal\"]/p[5]");
    var text_values = values.textContent;
    remove(values);
    remove(document.getElementById("bottom_spacing2"));
    remove(run_xpath("//*[@id=\"content_internal\"]/h4[8]"));
    var entries = new Map();
    for(entry of text_values.trim().split("\n")) {
        var matched = entry.match(re);
        if(matched != null) {
        	entries.set(matched[2], matched[1]);
        }
    }
    var content = document.getElementById("content_internal");
    var lists = content.getElementsByTagName("ul");
    lists = [].slice.call(lists);
    lists.shift();
    for(list of lists) {
        var sublists = list.children;
        for(var i = 0; i < sublists.length; i++) {
        	var elem = sublists[i];
        	var new_content = elem.innerHTML.substr(0, elem.innerHTML.indexOf("!") - 1);
        	var bangs = elem.innerHTML.match(bang_re);
            for(bang of bangs) {
        		bang = bang.trim();
        		new_content += bang + " (" + entries.get(bang) + ") \n";
            }
        	elem.innerHTML = new_content;
    	}
    }
})()

QingJ © 2025

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