uso reader

    @@ -22,36 +22,27 @@ 'www.webextender.net' ].shift(); - // TODO debouncing w/ queue + // c.f. debouncing w/ queue // https://gist.github.com/noromanba/2669793 - // https://gist.github.com/noromanba/4236851 - /* - var debounce = function (func, threshould) { - var timer, - slice = Array.prototype.slice; - return function () { - var context = this, args = slice.call(arguments); - clearTimeout(timer); + var forEach = Array.prototype.forEach, + timer, queue = [], interval = 100; + var toMirror = function (context) { + // TBD avoid cache sites; e.g. wayback, archive.today et al. + forEach.call(context.querySelectorAll('a[href*="://userscripts.org"]'), function debounce(link, idx) { timer = setTimeout(function () { - func.apply(context, args); - }, threshould || 10); - }; - }; - //*/ + queue.shift(); - var toMirror = function (link) { - link.protocol = 'http'; - link.hostname = HOST; - link.port = 80; // readonly mode when uso killing; "http://userscript.org:8080/..." + link.protocol = 'http'; + link.hostname = HOST; + link.port = 80; // readonly mode when uso killing; "http://userscript.org:8080/..." + }, idx * interval); + queue.push(timer); + }); }; + toMirror(document); - // TBD avoid cache sites; e.g. wayback, archive.today et al. - Array.prototype.forEach.call(document.querySelectorAll('a[href*="://userscripts.org"]'), function (link) { - toMirror(link); - }); - - // TBD debounce or click binding + // TBD MutationObserver or click binding document.body.addEventListener('DOMNodeInserted', function (evt) { toMirror(evt.target); }); -})(); +})();
  • /*
     * @title uso reader
     * @description replace Userscripts.org to readonly-mirror
     * @inclide http://*
     * @inclide https://*
     * @license MIT http://opensource.org/licenses/MIT
     * @javascript_url
     */
    
    // e.g. show my uso
    // http://noromanba.flavors.me
    // https://userscripts.org/users/436459/scripts
    // http://userscripts.org:8080/users/436459/scripts
    
    // c.f. smilar script
    // https://greasyfork.org/scripts/2222-uso-mirror/code
    
    // for readonly use; script install are unsafe
    (function () {
        var HOST = [
            'userscripts-mirror.org',
            'www.webextender.net'
        ].shift();
    
        // c.f. debouncing w/ queue
        //      https://gist.github.com/noromanba/2669793
        var forEach = Array.prototype.forEach,
            timer, queue = [], interval = 100;
        var toMirror = function (context) {
            // TBD avoid cache sites; e.g. wayback, archive.today et al.
            forEach.call(context.querySelectorAll('a[href*="://userscripts.org"]'), function debounce(link, idx) {
                timer = setTimeout(function () {
                    queue.shift();
    
                    link.protocol = 'http';
                    link.hostname = HOST;
                    link.port = 80;  // readonly mode when uso killing; "http://userscript.org:8080/..."
                }, idx * interval);
                queue.push(timer);
            });
        };
        toMirror(document);
    
        // TBD MutationObserver or click binding
        document.body.addEventListener('DOMNodeInserted', function (evt) {
            toMirror(evt.target);
        });
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2014/11/04 07:15:15 - 2014-11-04
  2. 2014/10/19 01:29:15 - 2014-10-19
  3. 2014/10/19 01:23:31 - 2014-10-19
  4. 2014/10/19 01:19:41 - 2014-10-19
  5. 2014/10/19 01:17:26 - 2014-10-19
  6. 2014/10/18 23:36:18 - 2014-10-18
  7. 2014/10/17 06:08:47 - 2014-10-17
  8. 2014/10/17 05:55:16 - 2014-10-17
  9. 2014/10/17 05:51:31 - 2014-10-17