AutoPagerize darekagakaku

    @@ -1,247 +1,124 @@ /* - * @title endless summer on dsbd - * @description promotion version (Exponential Endless Summer) - * @include http://www.tumblr.com/dashboard* - * @include http://www.tumblr.com/show* - * @include http://www.tumblr.com/blog* + * @title endless summer on anond + * @description random next link on anond + * @include http://anond.hatelabo.jp/ * @license reblog commons license ( cc by 3.0 ) */ -// bookmark -// autopager part from "twitter.AutoPager" : http://userscripts.org/scripts/review/47998 -// random choice part from ReblogMachine : http://reblog.machine.mamemomonga.com/ -// -> ReblogMachine.endless_summer#choice : http://reblog.machine.mamemomonga.com/js/ReblogMachine.js -// history.pushState/history.replaceState : http://d.hatena.ne.jp/javascripter/20100404/1270411268 -// show page regexp from "Tumblr Dashboard Filter by Post Type" : http://userscripts.org/scripts/review/40794 -// Exponential Endless Summer version 2013.08 by saitamanodoruji : http://tumblr.g.hatena.ne.jp/saitamanodoruji/20130831/1377961157 - -(function () { - - var num = 2; - var start_url = location.href; - var oldest_id = 264102; // http://ku.tumblr.com/post/264102 - var latest_id = get_latest_id(document); - var latest_id_n =50000000000; - latest_id = (latest_id > latest_id_n) ? latest_id : latest_id_n; - console.log('latest_id: ' + latest_id); - - var State = true; - var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; - var BASE_REMAIN_HEIGHT = 10000; - var loading = false; - - var last_element = get_next_elements(document).pop(); - if (!last_element) { - return error(); - } - var insert_point = last_element.nextSibling; - var insert_parent = last_element.parentNode; - - // Exponential Endless Summer 2013.08 - - var ees = {}; - - ees.draw = function (oldestID, newestID) { - var oldestUTime = this.getUnixTimeFromPostID(oldestID); - var newestUTime = this.getUnixTimeFromPostID(newestID); - var drawnUTime = oldestUTime + Math.floor((newestUTime - oldestUTime) * Math.random()); - return this.getPostIDFromUnixTime(drawnUTime); - } - - ees.getPostIDFromUnixTime = function (utime) { - if (utime < 1149465600000) { - return; - } else if (utime === Number.POSITIVE_INFINITY) { - return Number.POSITIVE_INFINITY; - } - for (var i = 0; i < this.params.length; i++) { - if (utime <= this.params[i].upperBound) { - return Math.ceil(this.params[i].coefAlpha * Math.exp(this.params[i].coefBeta * (utime - 1136073600000))); - } - } - } - - ees.getUnixTimeFromPostID = function (postID) { - if (postID < 1) { - return; - } - for (var i = 0; i < this.params.length; i++) { - if (postID <= this.getPostIDFromUnixTime(this.params[i].upperBound)) { - return Math.floor(Math.log(postID / this.params[i].coefAlpha) / this.params[i].coefBeta) + 1136073600000; - } - } - } - - ees.params = [ - // f_i(t) = Alpha_i * exp[Beta_i * (t - t_0)] - // t: Unix time [msec] - // t_0 = 1136073600000 [msec] (2006-01-01T00:00:00+09:00) - { - coefAlpha: 1.211 * Math.pow(10, -1), - coefBeta: 1.571 * Math.pow(10, -10), - upperBound: 1160012789359 - }, { - coefAlpha: 3.619 * Math.pow(10, -13), - coefBeta: 1.266 * Math.pow(10, -9), - upperBound: 1163269541924 - }, { - coefAlpha: 2.120 * Math.pow(10, 0), - coefBeta: 1.846 * Math.pow(10, -10), - upperBound: 1172120791893 - }, { - coefAlpha: 1.179 * Math.pow(10, -49), - coefBeta: 3.331 * Math.pow(10, -9), - upperBound: 1173392561265 - }, { - coefAlpha: 4.702 * Math.pow(10, -7), - coefBeta: 7.024 * Math.pow(10, -10), - upperBound: 1176405323219 - }, { - coefAlpha: 5.338 * Math.pow(10, 1), - coefBeta: 2.425 * Math.pow(10, -10), - upperBound: 1182930300850 - }, { - coefAlpha: 8.255 * Math.pow(10, 3), - coefBeta: 1.349 * Math.pow(10, -10), - upperBound: 1193299359828 - }, { - coefAlpha: 2.496 * Math.pow(10, 6), - coefBeta: 3.509 * Math.pow(10, -11), - upperBound: 1241622616806 - }, { - coefAlpha: 2.907 * Math.pow(10, 5), - coefBeta: 5.546 * Math.pow(10, -11), - upperBound: 1283088065116 - }, { - coefAlpha: 5.206 * Math.pow(10, 4), - coefBeta: 6.716 * Math.pow(10, -11), - upperBound: 1291075200000 - }, { - coefAlpha: 8.329 * Math.pow(10, 4), - coefBeta: 6.521 * Math.pow(10, -11), - upperBound: 1292241600000 - }, { - coefAlpha: 8.396 * Math.pow(10, 4), - coefBeta: 6.541 * Math.pow(10, -11), - upperBound: 1307576237376 - }, { - coefAlpha: 7.746 * Math.pow(10, 4), - coefBeta: 6.588 * Math.pow(10, -11), - upperBound: 1313586050187 - }, { - coefAlpha: 8.798 * Math.pow(10, 6), - coefBeta: 3.922 * Math.pow(10, -11), - upperBound: 1340572542928 - }, { - coefAlpha: 2.693 * Math.pow(10, 8), - coefBeta: 2.249 * Math.pow(10, -11), - upperBound: Number.POSITIVE_INFINITY - }, - ] - - next_page_load(); - - window.addEventListener('scroll', function () { - if (loading) return; - var remain = document.documentElement.scrollHeight - window.innerHeight - window.pageYOffset; - if (State && remain < BASE_REMAIN_HEIGHT) { - next_page_load(); - } - }, false); - - function next_page_load() { - loading = true; - var next = get_next(start_url); - history.pushState("", "", next); - console.log('next: ' + next); - var x = new XMLHttpRequest(); - x.onload = function () { - if (x.status <= 200 && x.status < 300) { - load(x); - } else { - error(); - next_page_load(); - } - }; - x.open('GET', next, true); - x.send(null); - } - - function load(x) { - var html = x.responseText.replace(/<script(?:[ \t\r\n][^>]*)?>[\S\s]*?<\/script[ \t\r\n]*>|<\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^<>]*)?>/gi, ' '); - var htmlDoc; - if (document.implementation.createHTMLDocument) { - htmlDoc = document.implementation.createHTMLDocument('hogehoge') - } else { - htmlDoc = document.cloneNode(false); - if (htmlDoc) { - htmlDoc.appendChild(htmlDoc.importNode(document.documentElement, false)); - } else { - htmlDoc = document.implementation.createDocument(null, 'html', null); - } - } - var range = document.createRange(); - range.selectNodeContents(document.documentElement); - htmlDoc.documentElement.appendChild(range.createContextualFragment(html)); - var docs = get_next_elements(htmlDoc); - if (!docs.length) { - error(); - return next_page_load(); - } - target_rewrite(docs); - img_cache(docs); - docs = docs.map(function (doc) { - return insert_parent.insertBefore(document.importNode(doc, true), insert_point); - }); - loading = false; - } - - function get_next_elements(doc) { - var r = doc.evaluate('id("posts")/li[div[starts-with(@id, "post_")]]', doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); - for (var i = 0, l = r.snapshotLength, res = new Array(l); i < l; i++) res[i] = r.snapshotItem(i); - return res; - } - - function target_rewrite(docs) { - docs.forEach(function (doc) { - var as = doc.getElementsByTagName('a'); - for (var i = 0, l = as.length; i < l; i++) { - var a = as[i], - _a = a.getAttribute('href'); - if (_a && !/^javascript:/.test(_a) && !/^#/.test(_a)) a.setAttribute('target', '_blank'); - } - }); - } - - function img_cache(docs) { - docs.forEach(function (doc) { - var is = doc.getElementsByTagName('img'); - for (var i = 0, l = is.length; i < l; i++) { - img = new Image(); - img.src = is[i].src; - } - }); - } - - function error() { - return console.log('error'); - State = false; - } - - function terminate() { - return console.log('terminate'); - State = false; - } - - function get_latest_id(doc) { - return doc.evaluate('number(substring-after(id("posts")/li/div[starts-with(@id, "post_")]/@id,"post_"))', doc, null, XPathResult.NUMBER_TYPE, null).numberValue; - } - - function get_next(url) { - var ramdom_id = ees.draw(oldest_id, latest_id); - var x = /(?:\/dashboard|(?:\/blog\/[-\w]+)?\/show\/\w+|\/blog\/[-\w]+)/.exec(url)[0] + '/' + num + '?offset=' + ramdom_id; - num += 1; - return x; - } +(function() { + var start_url = location.href; -})() + var State = true; + var BASE_REMAIN_HEIGHT = 10000; + var loading = false; + + var last_element = (function() { + var a = document.querySelector('.content'); + return a.childNodes[a.childElementCount - 2]; + }()); + + var origin = Date.parse('2012-02-17'); + + if (!last_element || !origin) { + return error(); + } + var insert_point = last_element.nextSibling; + var insert_parent = last_element.parentNode; + + next_page_load(); + + window.addEventListener('scroll', function() { + if (loading) return; + var remain = document.documentElement.scrollHeight - window.innerHeight - window.pageYOffset; + if (State && remain < BASE_REMAIN_HEIGHT) { + next_page_load(); + } + }, false); + + function next_page_load() { + loading = true; + var next = get_next(location.href); + history.pushState("", "", next); + console.log('next: ' + next); + var x = new XMLHttpRequest(); + x.onload = function() { + if (x.status <= 200 && x.status < 300) { + load(x); + } else { + error(); + next_page_load(); + } + }; + x.open('GET', next, true); + x.send(null); + } + + function load(x) { + var html = x.responseText.replace(/<script(?:[ \t\r\n][^>]*)?>[\S\s]*?<\/script[ \t\r\n]*>|<\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^<>]*)?>/gi, ' '); + var htmlDoc; + if (document.implementation.createHTMLDocument) { + htmlDoc = document.implementation.createHTMLDocument('hogehoge'); + } else { + htmlDoc = document.cloneNode(false); + if (htmlDoc) { + htmlDoc.appendChild(htmlDoc.importNode(document.documentElement, false)); + } else { + htmlDoc = document.implementation.createDocument(null, 'html', null); + } + } + var range = document.createRange(); + range.selectNodeContents(document.documentElement); + htmlDoc.documentElement.appendChild(range.createContextualFragment(html)); + var docs = get_next_elements(htmlDoc); + if (!docs.length) { + error(); + return next_page_load(); + } + target_rewrite(docs); + docs = docs.map(function(doc) { + return insert_parent.appendChild(document.importNode(doc, true)); + }); + return loading = false; + } + + function get_next_elements(doc) { + var content = doc.querySelector('.content'); + content.removeChild(content.lastChild); + return Array.apply(null, content.childNodes); + } + + function target_rewrite(docs) { + docs.forEach(function(doc) { + var as = doc.getElementsByTagName('a'); + for (var i = 0, l = as.length; i < l; i++) { + var a = as[i], + _a = a.getAttribute('href'); + if (_a && !/^javascript:/.test(_a) && !/^#/.test(_a)) a.setAttribute('target', '_blank'); + } + }); + } + + function error() { + return console.log('error'); + State = false; + } + + function terminate() { + return console.log('terminate'); + State = false; + } + + function get_next(url) { + var date = url.slice(-10); + time = Date.parse(date); + time -= 86400000; + if (time < origin) { + return error(); + } + var yesterday = new Date(time).toISOString().slice(0,10); + var x = '/v/' + yesterday; + return x; + } + +return true; +})();
  • /*
     * @title endless summer on anond
     * @description random next link on anond
     * @include http://anond.hatelabo.jp/
     * @license reblog commons license ( cc by 3.0 )
     */
    
    (function() {
        var start_url = location.href;
    
        var State = true;
        var BASE_REMAIN_HEIGHT = 10000;
        var loading = false;
    
        var last_element = (function() {
            var a = document.querySelector('.content');
            return a.childNodes[a.childElementCount - 2];
        }());
    
        var origin = Date.parse('2012-02-17');
    
        if (!last_element || !origin) {
            return error();
        }
        var insert_point = last_element.nextSibling;
        var insert_parent = last_element.parentNode;
    
        next_page_load();
    
        window.addEventListener('scroll', function() {
            if (loading) return;
            var remain = document.documentElement.scrollHeight - window.innerHeight - window.pageYOffset;
            if (State && remain < BASE_REMAIN_HEIGHT) {
                next_page_load();
            }
        }, false);
    
        function next_page_load() {
            loading = true;
            var next = get_next(location.href);
            history.pushState("", "", next);
            console.log('next: ' + next);
            var x = new XMLHttpRequest();
            x.onload = function() {
                if (x.status <= 200 && x.status < 300) {
                    load(x);
                } else {
                    error();
                    next_page_load();
                }
            };
            x.open('GET', next, true);
            x.send(null);
        }
    
        function load(x) {
            var html = x.responseText.replace(/<script(?:[ \t\r\n][^>]*)?>[\S\s]*?<\/script[ \t\r\n]*>|<\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^<>]*)?>/gi, ' ');
            var htmlDoc;
            if (document.implementation.createHTMLDocument) {
                htmlDoc = document.implementation.createHTMLDocument('hogehoge');
            } else {
                htmlDoc = document.cloneNode(false);
                if (htmlDoc) {
                    htmlDoc.appendChild(htmlDoc.importNode(document.documentElement, false));
                } else {
                    htmlDoc = document.implementation.createDocument(null, 'html', null);
                }
            }
            var range = document.createRange();
            range.selectNodeContents(document.documentElement);
            htmlDoc.documentElement.appendChild(range.createContextualFragment(html));
            var docs = get_next_elements(htmlDoc);
            if (!docs.length) {
                error();
                return next_page_load();
            }
            target_rewrite(docs);
            docs = docs.map(function(doc) {
                return insert_parent.appendChild(document.importNode(doc, true));
            });
            return loading = false;
        }
    
        function get_next_elements(doc) {
            var content = doc.querySelector('.content');
            content.removeChild(content.lastChild);
            return Array.apply(null, content.childNodes);
        }
    
        function target_rewrite(docs) {
            docs.forEach(function(doc) {
                var as = doc.getElementsByTagName('a');
                for (var i = 0, l = as.length; i < l; i++) {
                    var a = as[i],
                        _a = a.getAttribute('href');
                    if (_a && !/^javascript:/.test(_a) && !/^#/.test(_a)) a.setAttribute('target', '_blank');
                }
            });
        }
    
        function error() {
            return console.log('error');
            State = false;
        }
    
        function terminate() {
            return console.log('terminate');
            State = false;
        }
    
        function get_next(url) {
            var date = url.slice(-10);
            time = Date.parse(date);
            time -= 86400000;
            if (time < origin) {
                return error();
            }
            var yesterday = new Date(time).toISOString().slice(0,10);
            var x = '/v/' + yesterday;
            return x;
        }
    
    return true;
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2014/05/14 18:52:03 - 2014-05-14
  2. 2014/05/13 14:48:18 - 2014-05-13
  3. 2014/05/12 12:25:00 - 2014-05-12
  4. 2014/05/11 03:37:20 - 2014-05-11
  5. 2014/05/11 03:22:46 - 2014-05-11
  6. 2014/05/11 03:20:28 - 2014-05-11
  7. 2014/05/11 03:20:05 - 2014-05-11