<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel rdf:about="https://let.hatelabo.jp/taizooo/rss">
    <link>https://let.hatelabo.jp/taizooo/rss</link>
    <description></description>
    <title>Bookmarklets from taizooo</title>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hLHUl_HAkYwc"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/jZ-YqqragoAA"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/gYC-yc-Il4mmLg"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hJme65Htmqkd"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/gYC-x6uFhLOWWw"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hJme_ZKK8Oke"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/gYC-ydHV3smAfg"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/gYC-ydPttrvedg"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/gYC-xpPJiqHJGQ"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hJmeq_LvjbdX"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hJmerIGL5aAs"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hJmenYHD19o0"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hLHWg7OeiI15"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/gYC-xcz67_6bYQ"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hJmeg6aGkbVV"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/gYC-yc-IqfqdHg"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/gYC-xIb15t2_cA"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hJmd1pfKo6EN"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hLHVzoPqnv9n"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/taizooo/let/hJmdzaSttJUW"/>
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hLHUl_HAkYwc">
    <link>https://let.hatelabo.jp/taizooo/let/hLHUl_HAkYwc</link>
    <dc:date>2024-11-28T02:07:54Z</dc:date>
    <description></description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] aozora tategaki</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FhLHUl_HAkYwc.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;aozora tategaki&lt;/a&gt;&lt;pre&gt;/*
 * @title aozora tategaki
 * @include http://www.aozora.gr.jp/cards/*
 * @require https://raw.github.com/necolas/normalize.css/master/normalize.css
 */

// 青空文庫 縦書き拡張 http://subtech.g.hatena.ne.jp/cho45/20110319/1300542682
// cf. https://gist.github.com/cho45/875989

// normalize.css https://github.com/necolas/normalize.css

// commentToText
// https://github.com/tombfix/core/blob/2b0f251ff7d5968a138e2a4e8d24d5947005826a/xpi/chrome/content/library/01_utility.js#L2489

var styles = document.styleSheets;
for (var i = 0, it; it = styles[i]; i++) {
    it.disabled = true;
}

var css = commentToText(function () {/*
    body {
        font-family: &amp;quot;ヒラギノ明朝 Pro W3&amp;quot;,&amp;quot;HG明朝E&amp;quot;,&amp;quot;ＭＳ Ｐ明朝&amp;quot;,&amp;quot;ＭＳ 明朝&amp;quot;,serif; !important;
        font-size: 14pt !important;
        line-height: 1.8em !important;
        padding: 1em !important;
        -webkit-writing-mode: vertical-rl;
        writing-mode: vertical-rl;
        overflow-y:hidden;
        text-align: justify;
        letter-spacing: 0.1em;
        background-color: grey !important;
        color: black !important;
        top: 0;
        right: 0;
        margin: 14pt;
    }
    a {
        text-decoration:none;
        pointer-events: none;
        color: black !important;
    }
    rt {
        display:none;
    }
    img {
        max-height:100%;
        width:auto;
    }
    pre {
        white-space:pre-wrap;
        font-family: &amp;quot;ヒラギノ明朝 Pro W3&amp;quot;,&amp;quot;HG明朝E&amp;quot;,&amp;quot;ＭＳ Ｐ明朝&amp;quot;,&amp;quot;ＭＳ 明朝&amp;quot;,serif; !important;
    }
*/});

// 先見日記用
var css2 = commentToText(function () {/*
#bass-content-body &amp;gt; center &amp;gt; table:nth-child(2) {
    height:auto!important;
}
#bass-content-body &amp;gt; center &amp;gt; table:nth-child(2) &amp;gt; tbody &amp;gt; tr &amp;gt; td:nth-child(2) &amp;gt; table:nth-child(6) &amp;gt; tbody &amp;gt; tr &amp;gt; td:nth-child(1),
#bass-archive &amp;gt; ul,
#bass-archive &amp;gt; header,
#bass-archive &amp;gt; footer {
    display:none;
}
*/});

css = css + css2;

var style = document.createElement('style');
style.type = 'text/css';
style.appendChild(document.createTextNode(css));
document.querySelector('head').appendChild(style);

// bug for rendering ruby elements
document.body.innerHTML = document.body.innerHTML;

document.body.addEventListener('wheel', function (e) {
    if (e.wheelDeltaX) {
        document.body.scrollLeft -= e.wheelDeltaX;
    } else {
        document.body.scrollLeft += e.wheelDelta;
    }
    e.preventDefault();
}, {passive: false});

// commentToText via tombloo 
function commentToText(commentFunc) {
    return (commentFunc).toString().replace(/^.*?\r?\n/, '').replace(/\r?\n.*?$/, '');
}&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/jZ-YqqragoAA">
    <link>https://let.hatelabo.jp/taizooo/let/jZ-YqqragoAA</link>
    <dc:date>2022-03-18T09:33:26Z</dc:date>
    <description>便利</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] Amazon2NDL(asin)</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FjZ-YqqragoAA.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;Amazon2NDL(asin)&lt;/a&gt;&lt;pre&gt;/*
 * @title Amazon2NDL(asin)
 * @description 便利
 * @include http://*
 * @license MIT License
 */

/*
https://www.amazon.co.jp/dp/4065150108
https://iss.ndl.go.jp/books?rft.isbn=4065150108

1)asin は必ずしも isbn を意味しない
2)国立国会図書館に登録されている書籍の全てに isbn が記載されているわけではない
ということで、ナイス・アイデアと思ったが、イマイチだった
*/

const asin = document.querySelectorAll(`input[name^=&amp;quot;ASIN&amp;quot;]`)[0].value;
window.open(&amp;quot;https://iss.ndl.go.jp/books?rft.isbn=&amp;quot; + asin);
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/gYC-yc-Il4mmLg">
    <link>https://let.hatelabo.jp/taizooo/let/gYC-yc-Il4mmLg</link>
    <dc:date>2022-03-18T09:12:27Z</dc:date>
    <description>amazon_url_shaper</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] amz</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FgYC-yc-Il4mmLg.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;amz&lt;/a&gt;&lt;pre&gt;/*
 * @title amz
 * @description amazon_url_shaper
 * @include http://www.amazon.com/*
 * @include http://www.amazon.co.jp/*
 * @license MIT License
 */

// document.getElementById('ASIN').value via http://let.hatelabo.jp/rikuo/let/gYC-yunC86-NKA

(function() {
  var u='/dp/'+document.querySelectorAll(`input[name^=&amp;quot;ASIN&amp;quot;]`)[0].value;
  history.replaceState(null, null, u);
})()&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hJme65Htmqkd">
    <link>https://let.hatelabo.jp/taizooo/let/hJme65Htmqkd</link>
    <dc:date>2019-02-05T05:13:49Z</dc:date>
    <description>先見日記の題名を title に表示する</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] insight diary title rewrite</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FhJme65Htmqkd.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;insight diary title rewrite&lt;/a&gt;&lt;pre&gt;/*
 * @title insight diary title rewrite
 * @description 先見日記の題名を title に表示する
 * @include http://www.nttdata.com/jp/ja/diary/*
 */

(function() {
	// base
	var base = '//*[@id=&amp;quot;bass-content-body&amp;quot;]/div/table[2]/tbody/tr/td[2]/table[2]';

	// http://www.nttdata.com/jp/ja/diary/diary2003/06/20030613.html
	var title1 = './tbody/tr/td[5]/font[1]/b';
	var subtitle1 = './tbody/tr/td[5]/font[2]';

	// http://www.nttdata.com/jp/ja/diary/diary2003/06/20030614.html
	var title2 = './tbody/tr/td[2]/font[1]';
	var subtitle2 = './tbody/tr/td[2]/font[2]';

	var node = $X(base)[0];
	var title = $X(title1 + '|' + title2, node)[0].textContent;
	var subtitle = $X(subtitle1 + '|' + subtitle2, node)[0].textContent;
	document.title = title + &amp;quot; (&amp;quot; + subtitle + &amp;quot;) &amp;quot; + &amp;quot; : &amp;quot; + &amp;quot;先見日記 Insight Diaries&amp;quot;;

	// https://gist.github.com/os0x/3242
	// simple version of $X
	// $X(exp);
	// $X(exp, context);
	// @source https:/raw.github.com/gist/3242
	function $X(exp, context) {
		context || (context = document);
		var expr = (context.ownerDocument || context).createExpression(exp, function(prefix) {
			return document.createNSResolver(context.documentElement || context).lookupNamespaceURI(prefix) ||
				context.namespaceURI || document.documentElement.namespaceURI || &amp;quot;&amp;quot;;
		});

		var result = expr.evaluate(context, XPathResult.ANY_TYPE, null);
		switch (result.resultType) {
			case XPathResult.STRING_TYPE:
				return result.stringValue;
			case XPathResult.NUMBER_TYPE:
				return result.numberValue;
			case XPathResult.BOOLEAN_TYPE:
				return result.booleanValue;
			case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
				// not ensure the order.
				var ret = [],
					i = null;
				while (i = result.iterateNext()) ret.push(i);
				return ret;
		}
		return null;
	}
})()&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/gYC-x6uFhLOWWw">
    <link>https://let.hatelabo.jp/taizooo/let/gYC-x6uFhLOWWw</link>
    <dc:date>2015-03-11T04:52:38Z</dc:date>
    <description>open day archive page and pray</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] 03.11</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FgYC-x6uFhLOWWw.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;03.11&lt;/a&gt;&lt;pre&gt;/*
 * @title 03.11
 * @description open day archive page and pray
 * @include http://www.tumblr.com/following*
 * @license MIT License
 */

(function () {
  var links=document.querySelectorAll('div.follower a.avatar');
  var link=links[Math.floor(Math.random() * links.length)].href+'day/2011/03/11';
  window.open(link);  
})()&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hJme_ZKK8Oke">
    <link>https://let.hatelabo.jp/taizooo/let/hJme_ZKK8Oke</link>
    <dc:date>2015-03-05T08:53:29Z</dc:date>
    <description>コピペ to グーグル翻訳</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] 翻訳</title>
    <content:encoded>&lt;a href="javascript:%28function%28%29%7Bvar%20a%3Dwindow.getSelection%28%29.toString%28%29%3Bvar%20b%3DencodeURIComponent%28a%29%3Bvar%20u%3D%22https%3A%2F%2Ftranslate.google.co.jp%2F%23auto%2Fen%2F%22%2Bb%3Bwindow.open%28u%29%7D%29%28%29%3B"&gt;翻訳&lt;/a&gt;&lt;pre&gt;/*
 * @title 翻訳
 * @description コピペ to グーグル翻訳
 * @include http://*
 * @license MIT License
 * @javascript_url
 */

(function() {
	var a = window.getSelection().toString();
	var b = encodeURIComponent(a);
	var u = &amp;quot;https://translate.google.co.jp/#auto/en/&amp;quot; + b;
	window.open(u);
})()&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/gYC-ydHV3smAfg">
    <link>https://let.hatelabo.jp/taizooo/let/gYC-ydHV3smAfg</link>
    <dc:date>2015-02-26T10:18:54Z</dc:date>
    <description>darekagakaku nikki wo random ni autopagerize with scroll push^H^H^H^HreplaceState</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] darekagakaku endless scroll and pushstate</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FgYC-ydHV3smAfg.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;darekagakaku endless scroll and pushstate&lt;/a&gt;&lt;pre&gt;/*
 * @title darekagakaku endless scroll and pushstate
 * @description darekagakaku nikki wo random ni autopagerize with scroll push^H^H^H^HreplaceState
 * @include http://darekagakaku.herokuapp.com/*
 * @license MIT License
 */

// http://darekagakaku.herokuapp.com/ wo endless summer-ize!!!
// via http://wayback.archive.org/web/20131110230206/http://userscripts.org/scripts/review/47998

var next = location.href;
var depth = 0;
var hold = [];
hold.push({
  &amp;quot;url&amp;quot;: next,
  &amp;quot;depth&amp;quot;: depth
})

var State = true;
var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
var BASE_REMAIN_HEIGHT = 50;
var loading = false;

var now = new Date();
var bottom = new Date(&amp;quot;Feburary 17, 2012&amp;quot;); /* http://darekagakaku.herokuapp.com/v/2012-02-17 */

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;

next_page_load();

window.addEventListener('scroll', function () {
  if (loading) return;
  var remain = document.documentElement.scrollHeight - window.innerHeight - window.pageYOffset;
  if (State &amp;amp;&amp;amp; remain &amp;lt; BASE_REMAIN_HEIGHT) {
    next_page_load();
  }
}, false);

function next_page_load() {
  loading = true;
  next = go();
  var x = new XMLHttpRequest();
  x.onload = function () {
    if (x.status &amp;lt;= 200 &amp;amp;&amp;amp; x.status &amp;lt; 300) {
      load(x);
    } else {
      error();
    }
  };
  x.open('GET', next, true);
  x.send(null);
}

function load(x) {
  var html = x.responseText.replace(/&amp;lt;script(?:[ \t\r\n][^&amp;gt;]*)?&amp;gt;[\S\s]*?&amp;lt;\/script[ \t\r\n]*&amp;gt;|&amp;lt;\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^&amp;lt;&amp;gt;]*)?&amp;gt;/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));
  //next = get_next(htmlDoc);
  var docs = get_next_elements(htmlDoc);
  if (!docs.length) {
    return error();
  }

  var lastElement = get_next_elements(document).pop();
  depth = getElementPosition(lastElement).bottom;
  hold.push({
    &amp;quot;url&amp;quot;: next,
    &amp;quot;depth&amp;quot;: depth
  })

  docs = docs.map(function (doc) {
    return insert_parent.insertBefore(document.importNode(doc, true), insert_point);
  });

  //history.pushState(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, next);

  loading = false;
  //  if (!next) {
  //    return terminate();
  //  }
}

var timer = null;
window.addEventListener('scroll', function () {
  clearTimeout(timer);
  timer = setTimeout(function () {
    onscroll();
  }, 10);
}, false);

function onscroll() {
  current = window.pageYOffset;
  for(var i = hold.length - 1, section; (ele = hold[i]); i--) {
    if(ele.depth &amp;lt;= current) break;
  }
  ele = hold[i];
  if (ele.url != location.href) {
    //history.pushState(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, ele.url);
    history.replaceState(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, ele.url);
    console.log('current: '+current);
    console.log('url: '+ele.url);
    console.log('depth: '+ele.depth);
  }
}

//function get_next(doc) {
//  return doc.evaluate('id(&amp;quot;next_page_link&amp;quot;)', doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
//}
function get_next_elements(doc) {
  var r = doc.evaluate('//div[@class=&amp;quot;content&amp;quot;]', doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  for (var i = 0, l = r.snapshotLength, res = new Array(l); i &amp;lt; l; i++) res[i] = r.snapshotItem(i);
  return res;
}

function error() {
  return console.log('error');
  State = false;
}

function terminate() {
  return console.log('terminate');
  State = false;
}

// via http://d.hatena.ne.jp/javascripter/20080531/1212264942
function getElementPosition(elem) {
  var position = elem.getBoundingClientRect();
  return {
    left: Math.round(window.scrollX + position.left),
    right: Math.round(window.scrollY + position.right),
    top: Math.round(window.scrollY + position.top),
    bottom: Math.round(window.scrollY + position.bottom)
  }
}

// via http://let.hatelabo.jp/taizooo/let/gYC-xcG60rLuBA
function trim(num, l) {
  if (num &amp;lt; 0) {
    num = -(num);
  }
  if (typeof (num) != 'string') {
    num = '' + num;
  }
  var s = l - num.length;
  while (s &amp;gt; 0) {
    num = '0' + num;
    --s;
  }
  return num;
}

function rday(max, min) {
  max = max.getTime();
  min = min.getTime();
  rd = new Date(Math.floor(Math.random() * (max - min) + min));
  d = trim(rd.getFullYear(), 4) + &amp;quot;-&amp;quot; + trim(rd.getMonth() + 1, 2) + &amp;quot;-&amp;quot; + trim(rd.getDate(), 2);
  return d;
}

function go() {
  url = &amp;quot;http://darekagakaku.herokuapp.com/v/&amp;quot; + rday(now, bottom);
  if (next == url) {
    url = &amp;quot;http://darekagakaku.herokuapp.com/a&amp;quot;;
  }
  return url;
}&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/gYC-ydPttrvedg">
    <link>https://let.hatelabo.jp/taizooo/let/gYC-ydPttrvedg</link>
    <dc:date>2015-02-25T07:51:47Z</dc:date>
    <description>Add a fork link in my bookmarklet page of hatena::let (for userscript)</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] addforklink</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FgYC-ydPttrvedg.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;addforklink&lt;/a&gt;&lt;pre&gt;/*
 * @title addforklink
 * @description Add a fork link in my bookmarklet page of hatena::let (for userscript)
 * @include http://let.hatelabo.jp/*
 * @license MIT License
 */

(function () {
  a = document.querySelector(&amp;quot;a.edit-link[href*='let.edit']&amp;quot;);
  if (!a) return;
  b = a.cloneNode();
  b.href = a.href.replace(&amp;quot;edit&amp;quot;, &amp;quot;fork&amp;quot;);
  b.textContent = &amp;quot;Fork&amp;quot;;
  //a.parentNode.insertBefore(b, a.nextSibling);
  a.parentNode.insertBefore(b, a);
})()&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/gYC-xpPJiqHJGQ">
    <link>https://let.hatelabo.jp/taizooo/let/gYC-xpPJiqHJGQ</link>
    <dc:date>2015-01-16T09:33:55Z</dc:date>
    <description>tumblr の個別 post ページからその post のある dashboard ページを開きます</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] go2back tumblr</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FgYC-xpPJiqHJGQ.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;go2back tumblr&lt;/a&gt;&lt;pre&gt;/*
 * @title go2back tumblr
 * @description tumblr の個別 post ページからその post のある dashboard ページを開きます
 * @include http://*
 * @license MIT License
 * @require 
 */

(function(){
  var id=Number(window.location.pathname.match(/\d+/)[0]);
  url='http://www.tumblr.com/dashboard/10?offset='+(id+1);
  //url='http://www.tumblr.com/dashboard/10/'+(id+1);
  //url='http://www.tumblr.com/dashboard/10/-'+(id);
  window.open(url);
}
)();&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hJmeq_LvjbdX">
    <link>https://let.hatelabo.jp/taizooo/let/hJmeq_LvjbdX</link>
    <dc:date>2014-10-30T10:16:01Z</dc:date>
    <description>禁コーヒーを叫ぶ</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] loud non coffee!!!</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FhJmeq_LvjbdX.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;loud non coffee!!!&lt;/a&gt;&lt;pre&gt;/*
 * @title loud non coffee!!!
 * @description 禁コーヒーを叫ぶ
 * @include http://counting.hatelabo.jp/count/148961
 * @license MIT License
 */

function randlen(x, l) {
    var n = Math.floor(l * Math.random());
    var s = '';
    for (var i = 0; i &amp;lt; n; i++) {
        s += x;
    }
    return s;
}

function loud() {
    var node, box, day, str, url;
    node = document.querySelectorAll('.count-img-3');
    box = [];
    [].forEach.call(node, function(n) {
        var a = n.src.match('/images/count_3_(.)\.gif');
        box.push(a[1]);
    });
    day = box.join('');
    str = '禁コーヒー、' + randlen('\u200B', 100) + day + '日目';
    url = 'http://twitter.com/?status=' + encodeURIComponent(str);
    window.open(url);
}

/*
var coffee = 'http://counting.hatelabo.jp/count/148961';

function go() {
    if (location.href != url) {
        location.href = url;
    } else {
        loud();
    }
}
go();
*/
loud();
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hJmerIGL5aAs">
    <link>https://let.hatelabo.jp/taizooo/let/hJmerIGL5aAs</link>
    <dc:date>2014-10-30T08:25:36Z</dc:date>
    <description>ウォー、コーヒーを叫ぶ</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] i want coffee!!!</title>
    <content:encoded>&lt;a href="javascript:function%20randlen%28x%2Cl%29%7Bvar%20n%3DMath.floor%28l%2AMath.random%28%29%29%3Bvar%20s%3D%27%27%3Bfor%28var%20i%3D0%3Bi%3Cn%3Bi%2B%2B%29%7Bs%2B%3Dx%7Dreturn%20s%7Dfunction%20loud%28s%29%7Bvar%20w%3D%5B%5D%3Bvar%20x%3Ds.split%28%27%27%29%3Bx.forEach%28%28function%28a%29%7Bw.push%28a%2Brandlen%28%27%E2%80%8B%27%2C5%29%29%7D%29%29%3Bvar%20y%3Dw.join%28%27%27%29%3Bvar%20u%3D%27http%3A%2F%2Ftwitter.com%2F%3Fstatus%3D%27%2BencodeURIComponent%28y%29%3Blocation.href%3Du%7Dvar%20str%3D%27%E3%82%A6%E3%82%A9%E3%83%BC%E3%80%81%E3%82%B3%E3%83%BC%E3%83%92%E3%83%BC%27%3Bloud%28str%29%3B"&gt;i want coffee!!!&lt;/a&gt;&lt;pre&gt;/*
 * @title i want coffee!!!
 * @description ウォー、コーヒーを叫ぶ
 * @include http://*
 * @license MIT License
 * @javascript_url
 */

function randlen(x, l) {
	var n = Math.floor(l * Math.random());
	var s = '';
	for (var i = 0; i &amp;lt; n; i++) {
		s += x;
	}
	return s;
}

function loud(s) {
	var w = [];
	var x = s.split('');
	x.forEach(function(a) {
		w.push(a + randlen('\u200B', 5));
	});
	var y = w.join('');
	//console.log(y + ':' + y.length);
	var u = 'http://twitter.com/?status=' + encodeURIComponent(y);
	location.href = u;
}

var str = 'ウォー、コーヒー';
loud(str);&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hJmenYHD19o0">
    <link>https://let.hatelabo.jp/taizooo/let/hJmenYHD19o0</link>
    <dc:date>2014-10-07T00:56:47Z</dc:date>
    <description>はてなグループの title に search 文字列を表示</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] hatenagroup title fix</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FhJmenYHD19o0.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;hatenagroup title fix&lt;/a&gt;&lt;pre&gt;/*
 * @title hatenagroup title fix
 * @description はてなグループの title に search 文字列を表示
 * @include http://*.g.hatena.ne.jp/*
 */

(function() {
    var a = location.search.match(/\?word=(.*)/)[1];
    if (a.length) {
        document.title = decodeURIComponent(a) + &amp;quot; &amp;quot; + document.title;
    }
})()
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hLHWg7OeiI15">
    <link>https://let.hatelabo.jp/taizooo/let/hLHWg7OeiI15</link>
    <dc:date>2014-09-04T10:08:59Z</dc:date>
    <description>nnade oembed test</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] nnade oembed</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FhLHWg7OeiI15.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;nnade oembed&lt;/a&gt;&lt;pre&gt;/*
 * @title nnade oembed
 * @description nnade oembed test
 * @include http://nnade.herokuapp.com/*
 * @license MIT License
 * @require https://dl.dropboxusercontent.com/u/4460110/oembed/jquery.oembed.js
 * @require https://dl.dropboxusercontent.com/u/4460110/oembed/jquery.oembed.css
 */

// oEmbed http://oembed.com/
// starfishmod/jquery-oembed-all https://github.com/starfishmod/jquery-oembed-all

$('div.row a').each(function(i, e) {
	$(e).oembed()
})
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/gYC-xcz67_6bYQ">
    <link>https://let.hatelabo.jp/taizooo/let/gYC-xcz67_6bYQ</link>
    <dc:date>2014-09-01T11:21:47Z</dc:date>
    <description>promotion version (Exponential Endless Summer)</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] endless summer on dsbd</title>
    <content:encoded>&lt;a href="javascript:%28function%28%29%7Bvar%20num%3D2%3Bvar%20start_url%3Dlocation.href%3Bvar%20oldest_id%3D264102%3Bvar%20latest_id%3Dget_latest_id%28document%29%3Bvar%20latest_id_n%3D5e10%3Blatest_id%3Dlatest_id%3Elatest_id_n%3Flatest_id%3Alatest_id_n%3Bconsole.log%28%27latest_id%3A%20%27%2Blatest_id%29%3Bvar%20State%3Dtrue%3Bvar%20HTML_NAMESPACE%3D%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%3Bvar%20BASE_REMAIN_HEIGHT%3D1e4%3Bvar%20loading%3Dfalse%3Bvar%20last_element%3Dget_next_elements%28document%29.pop%28%29%3Bif%28%21last_element%29%7Breturn%20error%28%29%7Dvar%20insert_point%3Dlast_element.nextSibling%3Bvar%20insert_parent%3Dlast_element.parentNode%3Bvar%20draw%3Dfunction%28oldestID%2CnewestID%29%7Bvar%20oldestUTime%3DgetUnixTimeFromPostID%28oldestID%29%3Bvar%20newestUTime%3DgetUnixTimeFromPostID%28newestID%29%3Bvar%20drawnUTime%3DoldestUTime%2BMath.floor%28%28newestUTime-oldestUTime%29%2AMath.random%28%29%29%3Breturn%20getPostIDFromUnixTime%28drawnUTime%29%7D%3Bvar%20getPostIDFromUnixTime%3Dfunction%28utime%29%7Bif%28utime%3C11494656e5%29%7Breturn%7Delse%20if%28utime%3D%3D%3DNumber.POSITIVE_INFINITY%29%7Breturn%20Number.POSITIVE_INFINITY%7Dfor%28var%20i%3D0%3Bi%3Cparams.length%3Bi%2B%2B%29%7Bif%28utime%3C%3Dparams%5Bi%5D.upperBound%29%7Breturn%20Math.ceil%28params%5Bi%5D.coefAlpha%2AMath.exp%28params%5Bi%5D.coefBeta%2A%28utime-11360736e5%29%29%29%7D%7D%7D%3Bvar%20getUnixTimeFromPostID%3Dfunction%28postID%29%7Bif%28postID%3C1%29%7Breturn%7Dfor%28var%20i%3D0%3Bi%3Cparams.length%3Bi%2B%2B%29%7Bif%28postID%3C%3DgetPostIDFromUnixTime%28params%5Bi%5D.upperBound%29%29%7Breturn%20Math.floor%28Math.log%28postID%2Fparams%5Bi%5D.coefAlpha%29%2Fparams%5Bi%5D.coefBeta%29%2B11360736e5%7D%7D%7D%3Bvar%20params%3D%5B%7BcoefAlpha%3A1.211%2AMath.pow%2810%2C-1%29%2CcoefBeta%3A1.571%2AMath.pow%2810%2C-10%29%2CupperBound%3A1160012789359%7D%2C%7BcoefAlpha%3A3.619%2AMath.pow%2810%2C-13%29%2CcoefBeta%3A1.266%2AMath.pow%2810%2C-9%29%2CupperBound%3A1163269541924%7D%2C%7BcoefAlpha%3A2.12%2AMath.pow%2810%2C0%29%2CcoefBeta%3A1.846%2AMath.pow%2810%2C-10%29%2CupperBound%3A1172120791893%7D%2C%7BcoefAlpha%3A1.179%2AMath.pow%2810%2C-49%29%2CcoefBeta%3A3.331%2AMath.pow%2810%2C-9%29%2CupperBound%3A1173392561265%7D%2C%7BcoefAlpha%3A4.702%2AMath.pow%2810%2C-7%29%2CcoefBeta%3A7.024%2AMath.pow%2810%2C-10%29%2CupperBound%3A1176405323219%7D%2C%7BcoefAlpha%3A5.338%2AMath.pow%2810%2C1%29%2CcoefBeta%3A2.425%2AMath.pow%2810%2C-10%29%2CupperBound%3A1182930300850%7D%2C%7BcoefAlpha%3A8.255%2AMath.pow%2810%2C3%29%2CcoefBeta%3A1.349%2AMath.pow%2810%2C-10%29%2CupperBound%3A1193299359828%7D%2C%7BcoefAlpha%3A2.496%2AMath.pow%2810%2C6%29%2CcoefBeta%3A3.509%2AMath.pow%2810%2C-11%29%2CupperBound%3A1241622616806%7D%2C%7BcoefAlpha%3A2.907%2AMath.pow%2810%2C5%29%2CcoefBeta%3A5.546%2AMath.pow%2810%2C-11%29%2CupperBound%3A1283088065116%7D%2C%7BcoefAlpha%3A5.206%2AMath.pow%2810%2C4%29%2CcoefBeta%3A6.716%2AMath.pow%2810%2C-11%29%2CupperBound%3A12910752e5%7D%2C%7BcoefAlpha%3A8.329%2AMath.pow%2810%2C4%29%2CcoefBeta%3A6.521%2AMath.pow%2810%2C-11%29%2CupperBound%3A12922416e5%7D%2C%7BcoefAlpha%3A8.396%2AMath.pow%2810%2C4%29%2CcoefBeta%3A6.541%2AMath.pow%2810%2C-11%29%2CupperBound%3A1307576237376%7D%2C%7BcoefAlpha%3A7.746%2AMath.pow%2810%2C4%29%2CcoefBeta%3A6.588%2AMath.pow%2810%2C-11%29%2CupperBound%3A1313586050187%7D%2C%7BcoefAlpha%3A8.798%2AMath.pow%2810%2C6%29%2CcoefBeta%3A3.922%2AMath.pow%2810%2C-11%29%2CupperBound%3A1340572542928%7D%2C%7BcoefAlpha%3A2.693%2AMath.pow%2810%2C8%29%2CcoefBeta%3A2.249%2AMath.pow%2810%2C-11%29%2CupperBound%3A1373049162025%7D%2C%7BcoefAlpha%3A1.225%2AMath.pow%2810%2C9%29%2CcoefBeta%3A1.61%2AMath.pow%2810%2C-11%29%2CupperBound%3ANumber.POSITIVE_INFINITY%7D%5D%3Bnext_page_load%28%29%3Bwindow.addEventListener%28%27scroll%27%2C%28function%28%29%7Bif%28loading%29return%3Bvar%20remain%3Ddocument.documentElement.scrollHeight-window.innerHeight-window.pageYOffset%3Bif%28State%26%26remain%3CBASE_REMAIN_HEIGHT%29%7Bnext_page_load%28%29%7D%7D%29%2Cfalse%29%3Bfunction%20next_page_load%28%29%7Bloading%3Dtrue%3Bvar%20next%3Dget_next%28start_url%29%3Bhistory.pushState%28%22%22%2C%22%22%2Cnext%29%3Bconsole.log%28%27next%3A%20%27%2Bnext%29%3Bvar%20x%3Dnew%20XMLHttpRequest%3Bx.onload%3Dfunction%28%29%7Bif%28x.status%3C%3D200%26%26x.status%3C300%29%7Bload%28x%29%7Delse%7Berror%28%29%3Bnext_page_load%28%29%7D%7D%3Bx.open%28%27GET%27%2Cnext%2Ctrue%29%3Bx.send%28null%29%7Dfunction%20load%28x%29%7Bvar%20html%3Dx.responseText.replace%28%2F%3Cscript%28%3F%3A%5B%20%5Ct%5Cr%5Cn%5D%5B%5E%3E%5D%2A%29%3F%3E%5B%5CS%5Cs%5D%2A%3F%3C%5C%2Fscript%5B%20%5Ct%5Cr%5Cn%5D%2A%3E%7C%3C%5C%2F%3F%28%3F%3Ai%3Fframe%7Chtml%7Cscript%7Cobject%29%28%3F%3A%5B%20%5Ct%5Cr%5Cn%5D%5B%5E%3C%3E%5D%2A%29%3F%3E%2Fgi%2C%27%20%27%29%3Bvar%20htmlDoc%3Bif%28document.implementation.createHTMLDocument%29%7BhtmlDoc%3Ddocument.implementation.createHTMLDocument%28%27hogehoge%27%29%7Delse%7BhtmlDoc%3Ddocument.cloneNode%28false%29%3Bif%28htmlDoc%29%7BhtmlDoc.appendChild%28htmlDoc.importNode%28document.documentElement%2Cfalse%29%29%7Delse%7BhtmlDoc%3Ddocument.implementation.createDocument%28null%2C%27html%27%2Cnull%29%7D%7Dvar%20range%3Ddocument.createRange%28%29%3Brange.selectNodeContents%28document.documentElement%29%3BhtmlDoc.documentElement.appendChild%28range.createContextualFragment%28html%29%29%3Bvar%20docs%3Dget_next_elements%28htmlDoc%29%3Bif%28%21docs.length%29%7Berror%28%29%3Breturn%20next_page_load%28%29%7Dtarget_rewrite%28docs%29%3Bimg_cache%28docs%29%3Bdocs%3Ddocs.map%28%28function%28doc%29%7Breturn%20insert_parent.insertBefore%28document.importNode%28doc%2Ctrue%29%2Cinsert_point%29%7D%29%29%3Bloading%3Dfalse%7Dfunction%20get_next_elements%28doc%29%7Bvar%20r%3Ddoc.evaluate%28%27id%28%22posts%22%29%2Fli%5Bdiv%5Bstarts-with%28%40id%2C%20%22post_%22%29%5D%5D%27%2Cdoc%2Cnull%2CXPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2Cnull%29%3Bfor%28var%20i%3D0%2Cl%3Dr.snapshotLength%2Cres%3Dnew%20Array%28l%29%3Bi%3Cl%3Bi%2B%2B%29res%5Bi%5D%3Dr.snapshotItem%28i%29%3Breturn%20res%7Dfunction%20target_rewrite%28docs%29%7Bdocs.forEach%28%28function%28doc%29%7Bvar%20as%3Ddoc.getElementsByTagName%28%27a%27%29%3Bfor%28var%20i%3D0%2Cl%3Das.length%3Bi%3Cl%3Bi%2B%2B%29%7Bvar%20a%3Das%5Bi%5D%2C_a%3Da.getAttribute%28%27href%27%29%3Bif%28_a%26%26%21%2F%5Ejavascript%3A%2F.test%28_a%29%26%26%21%2F%5E%23%2F.test%28_a%29%29a.setAttribute%28%27target%27%2C%27_blank%27%29%7D%7D%29%29%7Dfunction%20img_cache%28docs%29%7Bdocs.forEach%28%28function%28doc%29%7Bvar%20is%3Ddoc.getElementsByTagName%28%27img%27%29%3Bfor%28var%20i%3D0%2Cl%3Dis.length%3Bi%3Cl%3Bi%2B%2B%29%7Bvar%20img%3Dnew%20Image%3Bimg.src%3Dis%5Bi%5D.src%7D%7D%29%29%7Dfunction%20error%28%29%7BState%3Dfalse%3Breturn%20console.log%28%27error%27%29%7Dfunction%20terminate%28%29%7BState%3Dfalse%3Breturn%20console.log%28%27terminate%27%29%7Dfunction%20get_latest_id%28doc%29%7Breturn%20doc.evaluate%28%27number%28substring-after%28id%28%22posts%22%29%2Fli%2Fdiv%5Bstarts-with%28%40id%2C%20%22post_%22%29%5D%2F%40id%2C%22post_%22%29%29%27%2Cdoc%2Cnull%2CXPathResult.NUMBER_TYPE%2Cnull%29.numberValue%7Dfunction%20get_next%28url%29%7Bvar%20ramdom_id%3Ddraw%28oldest_id%2Clatest_id%29%3Bvar%20x%3D%2F%28%3F%3A%5C%2Fdashboard%7C%28%3F%3A%5C%2Fblog%5C%2F%5B-%5Cw%5D%2B%29%3F%5C%2Fshow%5C%2F%5Cw%2B%7C%5C%2Fblog%5C%2F%5B-%5Cw%5D%2B%29%2F.exec%28url%29%5B0%5D%2B%27%2F%27%2Bnum%2B%27%3Foffset%3D%27%2Bramdom_id%3Bnum%2B%3D1%3Breturn%20x%7D%7D%29%28%29%3B"&gt;endless summer on dsbd&lt;/a&gt;&lt;pre&gt;/*
 * @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*
 * @license reblog commons license ( cc by 3.0 )
 * @javascript_url 
 */

// bookmark
// autopager part from &amp;quot;twitter.AutoPager&amp;quot; : http://userscripts.org/scripts/review/47998
// random choice part from ReblogMachine : http://reblog.machine.mamemomonga.com/
//   -&amp;gt; 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 &amp;quot;Tumblr Dashboard Filter by Post Type&amp;quot; : http://userscripts.org/scripts/review/40794
// Exponential Endless Summer version 2014 by saitamanodoruji : http://tumblr.g.hatena.ne.jp/saitamanodoruji/20140831/1409496698

(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 &amp;gt; 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 2014 */
  
  var draw = function(oldestID, newestID) {
    var oldestUTime = getUnixTimeFromPostID(oldestID);
    var newestUTime = getUnixTimeFromPostID(newestID);
    var drawnUTime = oldestUTime + Math.floor((newestUTime - oldestUTime) * Math.random());
    return getPostIDFromUnixTime(drawnUTime);
  };

  var getPostIDFromUnixTime = function(utime) {
    if (utime &amp;lt; 1149465600000) {
      return;
    } else if (utime === Number.POSITIVE_INFINITY) {
      return Number.POSITIVE_INFINITY;
    }
    for (var i = 0; i &amp;lt; params.length; i++) {
      if (utime &amp;lt;= params[i].upperBound) {
        return Math.ceil(params[i].coefAlpha * Math.exp(params[i].coefBeta * (utime - 1136073600000)));
      }
    }
  };

  var getUnixTimeFromPostID = function(postID) {
    if (postID &amp;lt; 1) {
      return;
    }
    for (var i = 0; i &amp;lt; params.length; i++) {
      if (postID &amp;lt;= getPostIDFromUnixTime(params[i].upperBound)) {
        return Math.floor(Math.log(postID / params[i].coefAlpha) / params[i].coefBeta) + 1136073600000;
      }
    }
  };

  var 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: 1373049162025
    }, {
      coefAlpha: 1.225 * Math.pow(10, 9),
      coefBeta: 1.610 * 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 &amp;amp;&amp;amp; remain &amp;lt; BASE_REMAIN_HEIGHT) {
      next_page_load();
    }
  }, false);

  function next_page_load() {
    loading = true;
    var next = get_next(start_url);
    history.pushState(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, next);
    console.log('next: ' + next);
    var x = new XMLHttpRequest();
    x.onload = function() {
      if (x.status &amp;lt;= 200 &amp;amp;&amp;amp; x.status &amp;lt; 300) {
        load(x);
      } else {
        error();
        next_page_load();
      }
    };
    x.open('GET', next, true);
    x.send(null);
  }

  function load(x) {
    var html = x.responseText.replace(/&amp;lt;script(?:[ \t\r\n][^&amp;gt;]*)?&amp;gt;[\S\s]*?&amp;lt;\/script[ \t\r\n]*&amp;gt;|&amp;lt;\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^&amp;lt;&amp;gt;]*)?&amp;gt;/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(&amp;quot;posts&amp;quot;)/li[div[starts-with(@id, &amp;quot;post_&amp;quot;)]]', doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = 0, l = r.snapshotLength, res = new Array(l); i &amp;lt; 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 &amp;lt; l; i++) {
        var a = as[i],
          _a = a.getAttribute('href');
        if (_a &amp;amp;&amp;amp; !/^javascript:/.test(_a) &amp;amp;&amp;amp; !/^#/.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 &amp;lt; l; i++) {
        var img = new Image();
        img.src = is[i].src;
      }
    });
  }

  function error() {
    State = false;
    return console.log('error');
  }

  function terminate() {
    State = false;
    return console.log('terminate');
  }

  function get_latest_id(doc) {
    return doc.evaluate('number(substring-after(id(&amp;quot;posts&amp;quot;)/li/div[starts-with(@id, &amp;quot;post_&amp;quot;)]/@id,&amp;quot;post_&amp;quot;))', doc, null, XPathResult.NUMBER_TYPE, null).numberValue;
  }

  function get_next(url) {
    var ramdom_id = 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;
  }

})();&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hJmeg6aGkbVV">
    <link>https://let.hatelabo.jp/taizooo/let/hJmeg6aGkbVV</link>
    <dc:date>2014-08-28T02:11:20Z</dc:date>
    <description>nnade、embed.ly の上限に達して埋め込み効かなくなった、やる気が出たら途中まで作ってた embed.ly に依存しないやり方を適用したいけど、たぶんやる気出ないので embed.ly が 9 月中旬に復活するまでお待ちください https://twitter.com/tily/status/504614817705893888</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] nnade embed img</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FhJmeg6aGkbVV.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;nnade embed img&lt;/a&gt;&lt;pre&gt;/*
 * @title nnade embed img
 * @description nnade、embed.ly の上限に達して埋め込み効かなくなった、やる気が出たら途中まで作ってた embed.ly に依存しないやり方を適用したいけど、たぶんやる気出ないので embed.ly が 9 月中旬に復活するまでお待ちください https://twitter.com/tily/status/504614817705893888
 * @include http://nnade.herokuapp.com/*
 * @license MIT License
 */

var selector = 'a[href$=&amp;quot;.jpg&amp;quot;], a[href$=&amp;quot;.png&amp;quot;], a[href$=&amp;quot;.gif&amp;quot;]'
var elms = document.querySelectorAll(&amp;quot;.col-md-3&amp;quot;)
for (var i = 0; i &amp;lt; elms.length; i++) {
	var elm = elms[i]
	var as = elm.querySelector(selector)
	if (as != null) {
		var img = document.createElement('img')
		img.src = as
		var a = document.createElement('a')
		a.href = as
		a.target = '_blank'
		a.appendChild(img)
		elm.replaceChild(a, as)
	}

}

&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/gYC-yc-IqfqdHg">
    <link>https://let.hatelabo.jp/taizooo/let/gYC-yc-IqfqdHg</link>
    <dc:date>2014-08-27T02:55:34Z</dc:date>
    <description>google search url shaper via http://let.hatelabo.jp/uneco/let/gYC-yby_yIjbcQ</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] YAKIUDON</title>
    <content:encoded>&lt;a href="javascript:%28function%28%29%7Ba%3Dlocation.hash%3D%3D%22%22%3Flocation.search%3Alocation.hash%3Ba%3Da.substr%281%29.split%28%27%26%27%29%3Ba%3Da.filter%28%28function%28e%29%7Breturn%2F%5E%28%3F%3Aq%7Ctbm%7Ctbs%29%2F.test%28e%29%7D%29%29%3Ba%3Da.join%28%27%26%27%29%3Ba%3Dlocation.pathname%2B%27%23%27%2Ba%3Bhistory.pushState%28null%2Cnull%2Ca%29%7D%29%28%29%3B"&gt;YAKIUDON&lt;/a&gt;&lt;pre&gt;/*
 * @title YAKIUDON
 * @description  google search url shaper via http://let.hatelabo.jp/uneco/let/gYC-yby_yIjbcQ
 * @include http://www.google.co.jp/search*
 * @include https://www.google.co.jp/search*
 * @license MIT License
 * @require 
 * @javascript_url
 */

// tbm http://hisame72.blog133.fc2.com/blog-entry-302.html
//  ( via http://let.hatelabo.jp/nkoz/let/gYC-ysq6-6rrGw )
// tbs http://d.hatena.ne.jp/ken3memo+video/20111218/1324219672 

(function () {
  a = (location.hash == &amp;quot;&amp;quot;) ? location.search : location.hash;
  a = a.substr(1).split('&amp;amp;');
  a = a.filter(function (e) {
    return /^(?:q|tbm|tbs)/.test(e);
  });
  a = a.join('&amp;amp;');
  a = location.pathname + '#' + a;
  history.pushState(null, null, a);
})()&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/gYC-xIb15t2_cA">
    <link>https://let.hatelabo.jp/taizooo/let/gYC-xIb15t2_cA</link>
    <dc:date>2014-06-19T08:25:21Z</dc:date>
    <description>全角年号→半角英数年号</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] 法令データ年号変換</title>
    <content:encoded>&lt;a href="javascript:%28function%28%29%7Bvar%20a%2Cb%2Cc%2Cd%2Cn%2Cs%3Ba%3D%24X%28%27%2F%2Fdiv%5Bcontains%28text%28%29%2C%22%E6%9C%80%E7%B5%82%E6%94%B9%E6%AD%A3%EF%BC%9A%22%29%5D%27%29%5B0%5D%3Bb%3D%24X%28%27translate%28.%2Ftext%28%29%2C%22%E3%80%87%E4%B8%80%E4%BA%8C%E4%B8%89%E5%9B%9B%E4%BA%94%E5%85%AD%E4%B8%83%E5%85%AB%E4%B9%9D%22%2C%220123456789%22%29%27%2Ca%29%3Bc%3Db.replace%28%27%E6%9C%80%E7%B5%82%E6%94%B9%E6%AD%A3%EF%BC%9A%27%2C%27%27%29.replace%28%2F%28%5CD%2B%29%2F%2C%27%241.%27%29.replace%28%27%E5%B9%B4%27%2C%27.%27%29.replace%28%27%E6%9C%88%27%2C%27.%27%29.replace%28%27%E6%97%A5%27%2C%27.%27%29.replace%28%27%E5%BE%8B%27%2C%27%27%29.replace%28%27%E4%BB%A4%27%2C%27%27%29.replace%28%27%E7%AC%AC%27%2C%27%27%29.replace%28%27%E5%8F%B7%27%2C%27%27%29%3Bd%3Dc.split%28%27.%27%29%3Bn%3Dd%5B0%5D%2Cyear%3DparseInt%28d%5B1%5D%29%2Cmonth%3DparseInt%28d%5B2%5D%29%2Cday%3DparseInt%28d%5B3%5D%29%2Clow%3Dd%5B4%5D%3Bif%28n%3D%3D%22%E5%B9%B3%E6%88%90%22%26%26year%3E0%29%7Bs%3Dyear%2B1988%7Delse%20if%28n%3D%3D%22%E6%98%AD%E5%92%8C%22%26%26year%3E0%26%26year%3C%3D64%29%7Bs%3Dyear%2B1925%7Delse%20if%28n%3D%3D%22%E5%A4%A7%E6%AD%A3%22%26%26year%3E0%26%26year%3C%3D15%29%7Bs%3Dyear%2B1911%7Delse%20if%28n%3D%3D%22%E6%98%8E%E6%B2%BB%22%26%26year%3E0%26%26year%3C%3D45%29%7Bs%3Dy%2B1867%7Delse%7B%7Da.innerHTML%3D%27%E6%9C%80%E7%B5%82%E6%94%B9%E6%AD%A3%EF%BC%9A%20%27%2Bs%2B%27.%27%2Bmonth%2B%27.%27%2Bday%2B%27%20%27%2Blow%3Bfunction%20%24X%28exp%2Ccontext%2Ctype%29%7Bif%28typeof%20context%3D%3D%22function%22%29%7Btype%3Dcontext%3Bcontext%3Dnull%7Dif%28%21context%29context%3Ddocument%3Bexp%3D%28context.ownerDocument%7C%7Ccontext%29.createExpression%28exp%2C%28function%28prefix%29%7Bvar%20o%3Ddocument.createNSResolver%28context%29%28prefix%29%3Bif%28o%29return%20o%3Breturn%20document.contentType%3D%3D%22application%2Fxhtml%2Bxml%22%3F%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%3A%22%22%7D%29%29%3Bswitch%28type%29%7Bcase%20String%3Areturn%20exp.evaluate%28context%2CXPathResult.STRING_TYPE%2Cnull%29.stringValue%3Bcase%20Number%3Areturn%20exp.evaluate%28context%2CXPathResult.NUMBER_TYPE%2Cnull%29.numberValue%3Bcase%20Boolean%3Areturn%20exp.evaluate%28context%2CXPathResult.BOOLEAN_TYPE%2Cnull%29.booleanValue%3Bcase%20Array%3Avar%20result%3Dexp.evaluate%28context%2CXPathResult.ORDERED_NODE_SNAPSHOT_TYPE%2Cnull%29%3Bfor%28var%20ret%3D%5B%5D%2Ci%3D0%2Clen%3Dresult.snapshotLength%3Bi%3Clen%3Bi%2B%2B%29%7Bret.push%28result.snapshotItem%28i%29%29%7Dreturn%20ret%3Bcase%20undefined%3Avar%20result%3Dexp.evaluate%28context%2CXPathResult.ANY_TYPE%2Cnull%29%3Bswitch%28result.resultType%29%7Bcase%20XPathResult.STRING_TYPE%3Areturn%20result.stringValue%3Bcase%20XPathResult.NUMBER_TYPE%3Areturn%20result.numberValue%3Bcase%20XPathResult.BOOLEAN_TYPE%3Areturn%20result.booleanValue%3Bcase%20XPathResult.UNORDERED_NODE_ITERATOR_TYPE%3Avar%20ret%3D%5B%5D%2Ci%3Dnull%3Bwhile%28i%3Dresult.iterateNext%28%29%29ret.push%28i%29%3Breturn%20ret%7Dreturn%20null%3Bdefault%3Athrow%20TypeError%28%22%24X%3A%20specified%20type%20is%20not%20valid%20type.%22%29%7D%7D%7D%29%28%29%3B"&gt;法令データ年号変換&lt;/a&gt;&lt;pre&gt;/*
 * @title 法令データ年号変換
 * @description 全角年号→半角英数年号
 * @include http://law.e-gov.go.jp/*
 * @javascript_url
 */

// cf. http://law.e-gov.go.jp/htmldata/S58/S58HO043.html
// 最終改正：平成二三年一二月一四日法律第一二二号
// ↓
// 最終改正： 2011.12.14 法122

(function () {
	var a, b, c, d, n, s;
	a = $X('//div[contains(text(),&amp;quot;最終改正：&amp;quot;)]')[0];
	b = $X('translate(./text(),&amp;quot;〇一二三四五六七八九&amp;quot;,&amp;quot;0123456789&amp;quot;)', a);
	c = b.replace('最終改正：', '').replace(/(\D+)/, '$1.').replace('年', '.').replace('月', '.').replace('日', '.').replace('律', '').replace('令', '').replace('第', '').replace('号', '');
	d = c.split('.');
	n = d[0], year = parseInt(d[1]), month = parseInt(d[2]), day = parseInt(d[3]), low = d[4];

	//via http://www.openreference.jp/?aid=190
	if ((n == &amp;quot;平成&amp;quot;) &amp;amp;&amp;amp; (year &amp;gt; 0)) {
		s = (year + 1988);
	} else if ((n == &amp;quot;昭和&amp;quot;) &amp;amp;&amp;amp; (year &amp;gt; 0) &amp;amp;&amp;amp; (year &amp;lt;= 64)) {
		s = (year + 1925);
	} else if ((n == &amp;quot;大正&amp;quot;) &amp;amp;&amp;amp; (year &amp;gt; 0) &amp;amp;&amp;amp; (year &amp;lt;= 15)) {
		s = (year + 1911);
	} else if ((n == &amp;quot;明治&amp;quot;) &amp;amp;&amp;amp; (year &amp;gt; 0) &amp;amp;&amp;amp; (year &amp;lt;= 45)) {
		s = (y + 1867);
	} else {}

	a.innerHTML = '最終改正： ' + s + '.' + month + '.' + day + ' ' + low;



	// cho45 / dollarX.js https://gist.github.com/cho45/3238
	// extend version of $X
	// $X(exp);
	// $X(exp, context);
	// $X(exp, type);
	// $X(exp, context, type);

	function $X(exp, context, type /* want type */ ) {
		if (typeof context == &amp;quot;function&amp;quot;) {
			type = context;
			context = null;
		}
		if (!context) context = document;
		exp = (context.ownerDocument || context).createExpression(exp, function (prefix) {
			var o = document.createNSResolver(context)(prefix);
			if (o) return o;
			return (document.contentType == &amp;quot;application/xhtml+xml&amp;quot;) ? &amp;quot;http://www.w3.org/1999/xhtml&amp;quot; : &amp;quot;&amp;quot;;
		});

		switch (type) {
		case String:
			return exp.evaluate(context, XPathResult.STRING_TYPE, null).stringValue;
		case Number:
			return exp.evaluate(context, XPathResult.NUMBER_TYPE, null).numberValue;
		case Boolean:
			return exp.evaluate(context, XPathResult.BOOLEAN_TYPE, null).booleanValue;
		case Array:
			var result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
			for (var ret = [], i = 0, len = result.snapshotLength; i &amp;lt; len; i++) {
				ret.push(result.snapshotItem(i));
			}
			return ret;
		case undefined:
			var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
			switch (result.resultType) {
			case XPathResult.STRING_TYPE:
				return result.stringValue;
			case XPathResult.NUMBER_TYPE:
				return result.numberValue;
			case XPathResult.BOOLEAN_TYPE:
				return result.booleanValue;
			case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
				// not ensure the order.
				var ret = [],
					i = null;
				while ((i = result.iterateNext())) ret.push(i);
				return ret;
			}
			return null;
		default:
			throw (TypeError(&amp;quot;$X: specified type is not valid type.&amp;quot;));
		}
	}
})()&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hJmd1pfKo6EN">
    <link>https://let.hatelabo.jp/taizooo/let/hJmd1pfKo6EN</link>
    <dc:date>2014-06-19T08:15:27Z</dc:date>
    <description>my bookmarklet</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] 元気でる</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FhJmd1pfKo6EN.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;元気でる&lt;/a&gt;&lt;pre&gt;/*
 * @title 元気でる
 * @description my bookmarklet
 * @include http://*
 * @license MIT License
 * @require jquery
 */

var imgsrc=&amp;quot;http://38.media.tumblr.com/679693c980283127450388d634d1a2ea/tumblr_mtw6uxszMr1qzd2dto1_75sq.jpg&amp;quot;;

//document.body.setAttribute(&amp;quot;style&amp;quot;,&amp;quot;background: url(&amp;quot;+imgsrc+&amp;quot;)&amp;quot;)
$(&amp;quot;body&amp;quot;).attr(&amp;quot;style&amp;quot;,&amp;quot;background: url(&amp;quot;+imgsrc+&amp;quot;)&amp;quot;);
$(&amp;quot;img&amp;quot;).attr(&amp;quot;src&amp;quot;,imgsrc);

// via http://let.hatelabo.jp/yuta25/let/hJmdu66j7o1l
// 以下、パーリンノイズ http://hitode909.hatenablog.com/entry/2014/04/23/203032
$(&amp;quot;body&amp;quot;).append('&amp;lt;script src=&amp;quot;http://hitode909.github.io/hatenablog-unofficial-modules/haikei-gunyagunya.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;');&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hLHVzoPqnv9n">
    <link>https://let.hatelabo.jp/taizooo/let/hLHVzoPqnv9n</link>
    <dc:date>2014-06-09T03:25:03Z</dc:date>
    <description>Amazon.co.jp： オルタカルチャー―日本版 (オルタブックス (000)): 本 http://www.amazon.co.jp/dp/4073072242</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] alt.culture 2 wayback machine</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Ftaizooo%2Flet%2FhLHVzoPqnv9n.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;alt.culture 2 wayback machine&lt;/a&gt;&lt;pre&gt;/*
 * @title alt.culture 2 wayback machine
 * @description Amazon.co.jp： オルタカルチャー―日本版 (オルタブックス (000)): 本 http://www.amazon.co.jp/dp/4073072242
 * @include http://cruel.org/trial/alt.html
 */

var nodes = document.querySelectorAll('a[href^=&amp;quot;http://www.mediaworks.co.jp&amp;quot;]');
[].forEach.call(nodes, function (item) {
    item.href='http://wayback.archive.org/web/19960101000000/'+item.href;
});
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/taizooo/let/hJmdzaSttJUW">
    <link>https://let.hatelabo.jp/taizooo/let/hJmdzaSttJUW</link>
    <dc:date>2014-06-05T06:09:56Z</dc:date>
    <description>【ズッキュン】機能をリリースいたしました。https://note.mu/suzurijp/n/ne1803641058b #suzurijp https://twitter.com/suzurijp/status/474404315000365058</description>
    <dc:creator>taizooo</dc:creator>
    <title>[Let] suzurijp zukyuuuunnnnn-nize</title>
    <content:encoded>&lt;a href="javascript:with%28D%28%29%29%7Bnext%28%28function%28e%29%7Bconsole.log%28%22zukyuuuunnnnn-nize%20start%21%22%29%7D%29%29.loop%2830%2C%28function%28i%2Co%29%7Bconsole.log%28i%29%3Bdocument.querySelector%28%27.favorite-button%27%29.click%28%29%3Breturn%20o.last%3Fi%3Await%281%29%7D%29%29.next%28%28function%28e%29%7Bconsole.log%28%22zukyuuuunnnnn-nize%20done%21%20%5B%22%2Be%2B%22%5D%22%29%7D%29%29%7D%0A%2F%2F%20JSDeferred%200.4.0%20Copyright%20%28c%29%202007%20cho45%20%28%20www.lowreal.net%20%29%0Afunction%20D%28%29%7Bfunction%20Deferred%28%29%7Breturn%20this%20instanceof%20Deferred%3Fthis.init%28%29%3Anew%20Deferred%7DDeferred.ok%3Dfunction%28x%29%7Breturn%20x%7D%3BDeferred.ng%3Dfunction%28x%29%7Bthrow%20x%7D%3BDeferred.prototype%3D%7B_id%3A0xe38286e381ae%2Cinit%3Afunction%28%29%7Bthis._next%3Dnull%3Bthis.callback%3D%7Bok%3ADeferred.ok%2Cng%3ADeferred.ng%7D%3Breturn%20this%7D%2Cnext%3Afunction%28fun%29%7Breturn%20this._post%28%22ok%22%2Cfun%29%7D%2Cerror%3Afunction%28fun%29%7Breturn%20this._post%28%22ng%22%2Cfun%29%7D%2Ccall%3Afunction%28val%29%7Breturn%20this._fire%28%22ok%22%2Cval%29%7D%2Cfail%3Afunction%28err%29%7Breturn%20this._fire%28%22ng%22%2Cerr%29%7D%2Ccancel%3Afunction%28%29%7B%28this.canceller%7C%7Cfunction%28%29%7B%7D%29%28%29%3Breturn%20this.init%28%29%7D%2C_post%3Afunction%28okng%2Cfun%29%7Bthis._next%3Dnew%20Deferred%3Bthis._next.callback%5Bokng%5D%3Dfun%3Breturn%20this._next%7D%2C_fire%3Afunction%28okng%2Cvalue%29%7Bvar%20next%3D%22ok%22%3Btry%7Bvalue%3Dthis.callback%5Bokng%5D.call%28this%2Cvalue%29%7Dcatch%28e%29%7Bnext%3D%22ng%22%3Bvalue%3De%3Bif%28Deferred.onerror%29Deferred.onerror%28e%29%7Dif%28Deferred.isDeferred%28value%29%29%7Bvalue._next%3Dthis._next%7Delse%7Bif%28this._next%29this._next._fire%28next%2Cvalue%29%7Dreturn%20this%7D%7D%3BDeferred.isDeferred%3Dfunction%28obj%29%7Breturn%21%21%28obj%26%26obj._id%3D%3D%3DDeferred.prototype._id%29%7D%3BDeferred.next_default%3Dfunction%28fun%29%7Bvar%20d%3Dnew%20Deferred%3Bvar%20id%3DsetTimeout%28%28function%28%29%7Bd.call%28%29%7D%29%2C0%29%3Bd.canceller%3Dfunction%28%29%7BclearTimeout%28id%29%7D%3Bif%28fun%29d.callback.ok%3Dfun%3Breturn%20d%7D%3BDeferred.next_faster_way_readystatechange%3Dtypeof%20window%3D%3D%3D%27object%27%26%26location.protocol%3D%3D%22http%3A%22%26%26%21window.opera%26%26%2F%5CbMSIE%5Cb%2F.test%28navigator.userAgent%29%26%26function%28fun%29%7Bvar%20d%3Dnew%20Deferred%3Bvar%20t%3D%28new%20Date%29.getTime%28%29%3Bif%28t-arguments.callee._prev_timeout_called%3C150%29%7Bvar%20cancel%3Dfalse%3Bvar%20script%3Ddocument.createElement%28%22script%22%29%3Bscript.type%3D%22text%2Fjavascript%22%3Bscript.src%3D%22data%3Atext%2Fjavascript%2C%22%3Bscript.onreadystatechange%3Dfunction%28%29%7Bif%28%21cancel%29%7Bd.canceller%28%29%3Bd.call%28%29%7D%7D%3Bd.canceller%3Dfunction%28%29%7Bif%28%21cancel%29%7Bcancel%3Dtrue%3Bscript.onreadystatechange%3Dnull%3Bdocument.body.removeChild%28script%29%7D%7D%3Bdocument.body.appendChild%28script%29%7Delse%7Barguments.callee._prev_timeout_called%3Dt%3Bvar%20id%3DsetTimeout%28%28function%28%29%7Bd.call%28%29%7D%29%2C0%29%3Bd.canceller%3Dfunction%28%29%7BclearTimeout%28id%29%7D%7Dif%28fun%29d.callback.ok%3Dfun%3Breturn%20d%7D%3BDeferred.next_faster_way_Image%3Dtypeof%20window%3D%3D%3D%27object%27%26%26typeof%20Image%21%3D%22undefined%22%26%26%21window.opera%26%26document.addEventListener%26%26function%28fun%29%7Bvar%20d%3Dnew%20Deferred%3Bvar%20img%3Dnew%20Image%3Bvar%20handler%3Dfunction%28%29%7Bd.canceller%28%29%3Bd.call%28%29%7D%3Bimg.addEventListener%28%22load%22%2Chandler%2Cfalse%29%3Bimg.addEventListener%28%22error%22%2Chandler%2Cfalse%29%3Bd.canceller%3Dfunction%28%29%7Bimg.removeEventListener%28%22load%22%2Chandler%2Cfalse%29%3Bimg.removeEventListener%28%22error%22%2Chandler%2Cfalse%29%7D%3Bimg.src%3D%22data%3Aimage%2Fpng%2C%22%2BMath.random%28%29%3Bif%28fun%29d.callback.ok%3Dfun%3Breturn%20d%7D%3BDeferred.next_tick%3Dtypeof%20process%3D%3D%3D%27object%27%26%26typeof%20process.nextTick%3D%3D%3D%27function%27%26%26function%28fun%29%7Bvar%20d%3Dnew%20Deferred%3Bprocess.nextTick%28%28function%28%29%7Bd.call%28%29%7D%29%29%3Bif%28fun%29d.callback.ok%3Dfun%3Breturn%20d%7D%3BDeferred.next%3DDeferred.next_faster_way_readystatechange%7C%7CDeferred.next_faster_way_Image%7C%7CDeferred.next_tick%7C%7CDeferred.next_default%3BDeferred.chain%3Dfunction%28%29%7Bvar%20chain%3DDeferred.next%28%29%3Bfor%28var%20i%3D0%2Clen%3Darguments.length%3Bi%3Clen%3Bi%2B%2B%29%28function%28obj%29%7Bswitch%28typeof%20obj%29%7Bcase%22function%22%3Avar%20name%3Dnull%3Btry%7Bname%3Dobj.toString%28%29.match%28%2F%5E%5Cs%2Afunction%5Cs%2B%28%5B%5E%5Cs%28%29%5D%2B%29%2F%29%5B1%5D%7Dcatch%28e%29%7B%7Dif%28name%21%3D%22error%22%29%7Bchain%3Dchain.next%28obj%29%7Delse%7Bchain%3Dchain.error%28obj%29%7Dbreak%3Bcase%22object%22%3Achain%3Dchain.next%28%28function%28%29%7Breturn%20Deferred.parallel%28obj%29%7D%29%29%3Bbreak%3Bdefault%3Athrow%22unknown%20type%20in%20process%20chains%22%7D%7D%29%28arguments%5Bi%5D%29%3Breturn%20chain%7D%3BDeferred.wait%3Dfunction%28n%29%7Bvar%20d%3Dnew%20Deferred%2Ct%3Dnew%20Date%3Bvar%20id%3DsetTimeout%28%28function%28%29%7Bd.call%28%28new%20Date%29.getTime%28%29-t.getTime%28%29%29%7D%29%2Cn%2A1e3%29%3Bd.canceller%3Dfunction%28%29%7BclearTimeout%28id%29%7D%3Breturn%20d%7D%3BDeferred.call%3Dfunction%28fun%29%7Bvar%20args%3DArray.prototype.slice.call%28arguments%2C1%29%3Breturn%20Deferred.next%28%28function%28%29%7Breturn%20fun.apply%28this%2Cargs%29%7D%29%29%7D%3BDeferred.parallel%3Dfunction%28dl%29%7Bvar%20isArray%3Dfalse%3Bif%28arguments.length%3E1%29%7Bdl%3DArray.prototype.slice.call%28arguments%29%3BisArray%3Dtrue%7Delse%20if%28Array.isArray%26%26Array.isArray%28dl%29%7C%7Ctypeof%20dl.length%3D%3D%22number%22%29%7BisArray%3Dtrue%7Dvar%20ret%3Dnew%20Deferred%2Cvalues%3D%7B%7D%2Cnum%3D0%3Bfor%28var%20i%20in%20dl%29if%28dl.hasOwnProperty%28i%29%29%28function%28d%2Ci%29%7Bif%28typeof%20d%3D%3D%22function%22%29dl%5Bi%5D%3Dd%3DDeferred.next%28d%29%3Bd.next%28%28function%28v%29%7Bvalues%5Bi%5D%3Dv%3Bif%28--num%3C%3D0%29%7Bif%28isArray%29%7Bvalues.length%3Ddl.length%3Bvalues%3DArray.prototype.slice.call%28values%2C0%29%7Dret.call%28values%29%7D%7D%29%29.error%28%28function%28e%29%7Bret.fail%28e%29%7D%29%29%3Bnum%2B%2B%7D%29%28dl%5Bi%5D%2Ci%29%3Bif%28%21num%29Deferred.next%28%28function%28%29%7Bret.call%28%29%7D%29%29%3Bret.canceller%3Dfunction%28%29%7Bfor%28var%20i%20in%20dl%29if%28dl.hasOwnProperty%28i%29%29%7Bdl%5Bi%5D.cancel%28%29%7D%7D%3Breturn%20ret%7D%3BDeferred.earlier%3Dfunction%28dl%29%7Bvar%20isArray%3Dfalse%3Bif%28arguments.length%3E1%29%7Bdl%3DArray.prototype.slice.call%28arguments%29%3BisArray%3Dtrue%7Delse%20if%28Array.isArray%26%26Array.isArray%28dl%29%7C%7Ctypeof%20dl.length%3D%3D%22number%22%29%7BisArray%3Dtrue%7Dvar%20ret%3Dnew%20Deferred%2Cvalues%3D%7B%7D%2Cnum%3D0%3Bfor%28var%20i%20in%20dl%29if%28dl.hasOwnProperty%28i%29%29%28function%28d%2Ci%29%7Bd.next%28%28function%28v%29%7Bvalues%5Bi%5D%3Dv%3Bif%28isArray%29%7Bvalues.length%3Ddl.length%3Bvalues%3DArray.prototype.slice.call%28values%2C0%29%7Dret.call%28values%29%3Bret.canceller%28%29%7D%29%29.error%28%28function%28e%29%7Bret.fail%28e%29%7D%29%29%3Bnum%2B%2B%7D%29%28dl%5Bi%5D%2Ci%29%3Bif%28%21num%29Deferred.next%28%28function%28%29%7Bret.call%28%29%7D%29%29%3Bret.canceller%3Dfunction%28%29%7Bfor%28var%20i%20in%20dl%29if%28dl.hasOwnProperty%28i%29%29%7Bdl%5Bi%5D.cancel%28%29%7D%7D%3Breturn%20ret%7D%3BDeferred.loop%3Dfunction%28n%2Cfun%29%7Bvar%20o%3D%7Bbegin%3An.begin%7C%7C0%2Cend%3Atypeof%20n.end%3D%3D%22number%22%3Fn.end%3An-1%2Cstep%3An.step%7C%7C1%2Clast%3Afalse%2Cprev%3Anull%7D%3Bvar%20ret%2Cstep%3Do.step%3Breturn%20Deferred.next%28%28function%28%29%7Bfunction%20_loop%28i%29%7Bif%28i%3C%3Do.end%29%7Bif%28i%2Bstep%3Eo.end%29%7Bo.last%3Dtrue%3Bo.step%3Do.end-i%2B1%7Do.prev%3Dret%3Bret%3Dfun.call%28this%2Ci%2Co%29%3Bif%28Deferred.isDeferred%28ret%29%29%7Breturn%20ret.next%28%28function%28r%29%7Bret%3Dr%3Breturn%20Deferred.call%28_loop%2Ci%2Bstep%29%7D%29%29%7Delse%7Breturn%20Deferred.call%28_loop%2Ci%2Bstep%29%7D%7Delse%7Breturn%20ret%7D%7Dreturn%20o.begin%3C%3Do.end%3FDeferred.call%28_loop%2Co.begin%29%3Anull%7D%29%29%7D%3BDeferred.repeat%3Dfunction%28n%2Cfun%29%7Bvar%20i%3D0%2Cend%3D%7B%7D%2Cret%3Dnull%3Breturn%20Deferred.next%28%28function%28%29%7Bvar%20t%3D%28new%20Date%29.getTime%28%29%3Bdo%7Bif%28i%3E%3Dn%29return%20null%3Bret%3Dfun%28i%2B%2B%29%7Dwhile%28%28new%20Date%29.getTime%28%29-t%3C20%29%3Breturn%20Deferred.call%28arguments.callee%29%7D%29%29%7D%3BDeferred.register%3Dfunction%28name%2Cfun%29%7Bthis.prototype%5Bname%5D%3Dfunction%28%29%7Bvar%20a%3Darguments%3Breturn%20this.next%28%28function%28%29%7Breturn%20fun.apply%28this%2Ca%29%7D%29%29%7D%7D%3BDeferred.register%28%22loop%22%2CDeferred.loop%29%3BDeferred.register%28%22wait%22%2CDeferred.wait%29%3BDeferred.connect%3Dfunction%28funo%2Coptions%29%7Bvar%20target%2Cfunc%2Cobj%3Bif%28typeof%20arguments%5B1%5D%3D%3D%22string%22%29%7Btarget%3Darguments%5B0%5D%3Bfunc%3Dtarget%5Barguments%5B1%5D%5D%3Bobj%3Darguments%5B2%5D%7C%7C%7B%7D%7Delse%7Bfunc%3Darguments%5B0%5D%3Bobj%3Darguments%5B1%5D%7C%7C%7B%7D%3Btarget%3Dobj.target%7Dvar%20partialArgs%3Dobj.args%3FArray.prototype.slice.call%28obj.args%2C0%29%3A%5B%5D%3Bvar%20callbackArgIndex%3DisFinite%28obj.ok%29%3Fobj.ok%3Aobj.args%3Fobj.args.length%3Aundefined%3Bvar%20errorbackArgIndex%3Dobj.ng%3Breturn%20function%28%29%7Bvar%20d%3D%28new%20Deferred%29.next%28%28function%28args%29%7Bvar%20next%3Dthis._next.callback.ok%3Bthis._next.callback.ok%3Dfunction%28%29%7Breturn%20next.apply%28this%2Cargs.args%29%7D%7D%29%29%3Bvar%20args%3DpartialArgs.concat%28Array.prototype.slice.call%28arguments%2C0%29%29%3Bif%28%21%28isFinite%28callbackArgIndex%29%26%26callbackArgIndex%21%3D%3Dnull%29%29%7BcallbackArgIndex%3Dargs.length%7Dvar%20callback%3Dfunction%28%29%7Bd.call%28new%20Deferred.Arguments%28arguments%29%29%7D%3Bargs.splice%28callbackArgIndex%2C0%2Ccallback%29%3Bif%28isFinite%28errorbackArgIndex%29%26%26errorbackArgIndex%21%3D%3Dnull%29%7Bvar%20errorback%3Dfunction%28%29%7Bd.fail%28arguments%29%7D%3Bargs.splice%28errorbackArgIndex%2C0%2Cerrorback%29%7DDeferred.next%28%28function%28%29%7Bfunc.apply%28target%2Cargs%29%7D%29%29%3Breturn%20d%7D%7D%3BDeferred.Arguments%3Dfunction%28args%29%7Bthis.args%3DArray.prototype.slice.call%28args%2C0%29%7D%3BDeferred.retry%3Dfunction%28retryCount%2CfuncDeferred%2Coptions%29%7Bif%28%21options%29options%3D%7B%7D%3Bvar%20wait%3Doptions.wait%7C%7C0%3Bvar%20d%3Dnew%20Deferred%3Bvar%20retry%3Dfunction%28%29%7Bvar%20m%3DfuncDeferred%28retryCount%29%3Bm.next%28%28function%28mes%29%7Bd.call%28mes%29%7D%29%29.error%28%28function%28e%29%7Bif%28--retryCount%3C%3D0%29%7Bd.fail%28%5B%27retry%20failed%27%2Ce%5D%29%7Delse%7BsetTimeout%28retry%2Cwait%2A1e3%29%7D%7D%29%29%7D%3BsetTimeout%28retry%2C0%29%3Breturn%20d%7D%3BDeferred.methods%3D%5B%22parallel%22%2C%22wait%22%2C%22next%22%2C%22call%22%2C%22loop%22%2C%22repeat%22%2C%22chain%22%5D%3BDeferred.define%3Dfunction%28obj%2Clist%29%7Bif%28%21list%29list%3DDeferred.methods%3Bif%28%21obj%29obj%3Dfunction%20getGlobal%28%29%7Breturn%20this%7D%28%29%3Bfor%28var%20i%3D0%3Bi%3Clist.length%3Bi%2B%2B%29%7Bvar%20n%3Dlist%5Bi%5D%3Bobj%5Bn%5D%3DDeferred%5Bn%5D%7Dreturn%20Deferred%7D%3Bthis.Deferred%3DDeferred%3Bfunction%20http%28opts%29%7Bvar%20d%3DDeferred%28%29%3Bvar%20req%3Dnew%20XMLHttpRequest%3Breq.open%28opts.method%2Copts.url%2Ctrue%29%3Bif%28opts.headers%29%7Bfor%28var%20k%20in%20opts.headers%29if%28opts.headers.hasOwnProperty%28k%29%29%7Breq.setRequestHeader%28k%2Copts.headers%5Bk%5D%29%7D%7Dreq.onreadystatechange%3Dfunction%28%29%7Bif%28req.readyState%3D%3D4%29d.call%28req%29%7D%3Breq.send%28opts.data%7C%7Cnull%29%3Bd.xhr%3Dreq%3Breturn%20d%7Dhttp.get%3Dfunction%28url%29%7Breturn%20http%28%7Bmethod%3A%22get%22%2Curl%3Aurl%7D%29%7D%3Bhttp.post%3Dfunction%28url%2Cdata%29%7Breturn%20http%28%7Bmethod%3A%22post%22%2Curl%3Aurl%2Cdata%3Adata%2Cheaders%3A%7B%22Content-Type%22%3A%22application%2Fx-www-form-urlencoded%22%7D%7D%29%7D%3Bhttp.jsonp%3Dfunction%28url%2Cparams%29%7Bif%28%21params%29params%3D%7B%7D%3Bvar%20Global%3Dfunction%28%29%7Breturn%20this%7D%28%29%3Bvar%20d%3DDeferred%28%29%3Bvar%20cbname%3Dparams%5B%22callback%22%5D%3Bif%28%21cbname%29do%7Bcbname%3D%22callback%22%2BString%28Math.random%28%29%29.slice%282%29%7Dwhile%28typeof%20Global%5Bcbname%5D%21%3D%22undefined%22%29%3Bparams%5B%22callback%22%5D%3Dcbname%3Burl%2B%3Durl.indexOf%28%22%3F%22%29%3D%3D-1%3F%22%3F%22%3A%22%26%22%3Bfor%28var%20name%20in%20params%29if%28params.hasOwnProperty%28name%29%29%7Burl%3Durl%2BencodeURIComponent%28name%29%2B%22%3D%22%2BencodeURIComponent%28params%5Bname%5D%29%2B%22%26%22%7Dvar%20script%3Ddocument.createElement%28%27script%27%29%3Bscript.type%3D%22text%2Fjavascript%22%3Bscript.charset%3D%22utf-8%22%3Bscript.src%3Durl%3Bdocument.body.appendChild%28script%29%3BGlobal%5Bcbname%5D%3Dfunction%20callback%28data%29%7Bdelete%20Global%5Bcbname%5D%3Bdocument.body.removeChild%28script%29%3Bd.call%28data%29%7D%3Breturn%20d%7D%3Bfunction%20xhttp%28opts%29%7Bvar%20d%3DDeferred%28%29%3Bif%28opts.onload%29d%3Dd.next%28opts.onload%29%3Bif%28opts.onerror%29d%3Dd.error%28opts.onerror%29%3Bopts.onload%3Dfunction%28res%29%7Bd.call%28res%29%7D%3Bopts.onerror%3Dfunction%28res%29%7Bd.fail%28res%29%7D%3BsetTimeout%28%28function%28%29%7BGM_xmlhttpRequest%28opts%29%7D%29%2C0%29%3Breturn%20d%7Dxhttp.get%3Dfunction%28url%29%7Breturn%20xhttp%28%7Bmethod%3A%22get%22%2Curl%3Aurl%7D%29%7D%3Bxhttp.post%3Dfunction%28url%2Cdata%29%7Breturn%20xhttp%28%7Bmethod%3A%22post%22%2Curl%3Aurl%2Cdata%3Adata%2Cheaders%3A%7B%22Content-Type%22%3A%22application%2Fx-www-form-urlencoded%22%7D%7D%29%7D%3BDeferred.Deferred%3DDeferred%3BDeferred.http%3Dhttp%3BDeferred.xhttp%3Dtypeof%20GM_xmlhttpRequest%3D%3D%27undefined%27%3Fhttp%3Axhttp%3Breturn%20Deferred%7D"&gt;suzurijp zukyuuuunnnnn-nize&lt;/a&gt;&lt;pre&gt;/*
 * @title suzurijp zukyuuuunnnnn-nize
 * @description 【ズッキュン】機能をリリースいたしました。https://note.mu/suzurijp/n/ne1803641058b #suzurijp https://twitter.com/suzurijp/status/474404315000365058
 * @include https://suzuri.jp/*
 * @javascript_url
 */

// http://cho45.stfuawsc.com/jsdeferred/#cookbook-delay-loop

with(D()) {
	next(function (e) {
		console.log(&amp;quot;zukyuuuunnnnn-nize start!&amp;quot;);
	}).
	loop(30, function (i, o) {
		console.log(i);
		document.querySelector('.favorite-button').click();
		return o.last ? i : wait(1);
	}).
	next(function (e) {
		console.log(&amp;quot;zukyuuuunnnnn-nize done! [&amp;quot; + e + &amp;quot;]&amp;quot;);
	})
}

// Usage:: with (D()) { your code }
// JSDeferred 0.4.0 Copyright (c) 2007 cho45 ( www.lowreal.net )
// See http://github.com/cho45/jsdeferred
function D () {

function Deferred () { return (this instanceof Deferred) ? this.init() : new Deferred() }
Deferred.ok = function (x) { return x };
Deferred.ng = function (x) { throw  x };
Deferred.prototype = {
	
	_id : 0xe38286e381ae,

	
	init : function () {
		this._next    = null;
		this.callback = {
			ok: Deferred.ok,
			ng: Deferred.ng
		};
		return this;
	},

	
	next  : function (fun) { return this._post(&amp;quot;ok&amp;quot;, fun) },

	
	error : function (fun) { return this._post(&amp;quot;ng&amp;quot;, fun) },

	
	call  : function (val) { return this._fire(&amp;quot;ok&amp;quot;, val) },

	
	fail  : function (err) { return this._fire(&amp;quot;ng&amp;quot;, err) },

	
	cancel : function () {
		(this.canceller || function () {})();
		return this.init();
	},

	_post : function (okng, fun) {
		this._next =  new Deferred();
		this._next.callback[okng] = fun;
		return this._next;
	},

	_fire : function (okng, value) {
		var next = &amp;quot;ok&amp;quot;;
		try {
			value = this.callback[okng].call(this, value);
		} catch (e) {
			next  = &amp;quot;ng&amp;quot;;
			value = e;
			if (Deferred.onerror) Deferred.onerror(e);
		}
		if (Deferred.isDeferred(value)) {
			value._next = this._next;
		} else {
			if (this._next) this._next._fire(next, value);
		}
		return this;
	}
};
Deferred.isDeferred = function (obj) {
	return !!(obj &amp;amp;&amp;amp; obj._id === Deferred.prototype._id);
};

Deferred.next_default = function (fun) {
	var d = new Deferred();
	var id = setTimeout(function () { d.call() }, 0);
	d.canceller = function () { clearTimeout(id) };
	if (fun) d.callback.ok = fun;
	return d;
};
Deferred.next_faster_way_readystatechange = ((typeof window === 'object') &amp;amp;&amp;amp; (location.protocol == &amp;quot;http:&amp;quot;) &amp;amp;&amp;amp; !window.opera &amp;amp;&amp;amp; /\bMSIE\b/.test(navigator.userAgent)) &amp;amp;&amp;amp; function (fun) {
	var d = new Deferred();
	var t = new Date().getTime();
	if (t - arguments.callee._prev_timeout_called &amp;lt; 150) {
		var cancel = false;
		var script = document.createElement(&amp;quot;script&amp;quot;);
		script.type = &amp;quot;text/javascript&amp;quot;;
		script.src  = &amp;quot;data:text/javascript,&amp;quot;;
		script.onreadystatechange = function () {
			if (!cancel) {
				d.canceller();
				d.call();
			}
		};
		d.canceller = function () {
			if (!cancel) {
				cancel = true;
				script.onreadystatechange = null;
				document.body.removeChild(script);
			}
		};
		document.body.appendChild(script);
	} else {
		arguments.callee._prev_timeout_called = t;
		var id = setTimeout(function () { d.call() }, 0);
		d.canceller = function () { clearTimeout(id) };
	}
	if (fun) d.callback.ok = fun;
	return d;
};
Deferred.next_faster_way_Image = ((typeof window === 'object') &amp;amp;&amp;amp; (typeof(Image) != &amp;quot;undefined&amp;quot;) &amp;amp;&amp;amp; !window.opera &amp;amp;&amp;amp; document.addEventListener) &amp;amp;&amp;amp; function (fun) {
	var d = new Deferred();
	var img = new Image();
	var handler = function () {
		d.canceller();
		d.call();
	};
	img.addEventListener(&amp;quot;load&amp;quot;, handler, false);
	img.addEventListener(&amp;quot;error&amp;quot;, handler, false);
	d.canceller = function () {
		img.removeEventListener(&amp;quot;load&amp;quot;, handler, false);
		img.removeEventListener(&amp;quot;error&amp;quot;, handler, false);
	};
	img.src = &amp;quot;data:image/png,&amp;quot; + Math.random();
	if (fun) d.callback.ok = fun;
	return d;
};
Deferred.next_tick = (typeof process === 'object' &amp;amp;&amp;amp; typeof process.nextTick === 'function') &amp;amp;&amp;amp; function (fun) {
	var d = new Deferred();
	process.nextTick(function() { d.call() });
	if (fun) d.callback.ok = fun;
	return d;
};
Deferred.next = 
	Deferred.next_faster_way_readystatechange ||
	Deferred.next_faster_way_Image ||
	Deferred.next_tick ||
	Deferred.next_default;

Deferred.chain = function () {
	var chain = Deferred.next();
	for (var i = 0, len = arguments.length; i &amp;lt; len; i++) (function (obj) {
		switch (typeof obj) {
			case &amp;quot;function&amp;quot;:
				var name = null;
				try {
					name = obj.toString().match(/^\s*function\s+([^\s()]+)/)[1];
				} catch (e) { }
				if (name != &amp;quot;error&amp;quot;) {
					chain = chain.next(obj);
				} else {
					chain = chain.error(obj);
				}
				break;
			case &amp;quot;object&amp;quot;:
				chain = chain.next(function() { return Deferred.parallel(obj) });
				break;
			default:
				throw &amp;quot;unknown type in process chains&amp;quot;;
		}
	})(arguments[i]);
	return chain;
};

Deferred.wait = function (n) {
	var d = new Deferred(), t = new Date();
	var id = setTimeout(function () {
		d.call((new Date()).getTime() - t.getTime());
	}, n * 1000);
	d.canceller = function () { clearTimeout(id) };
	return d;
};

Deferred.call = function (fun) {
	var args = Array.prototype.slice.call(arguments, 1);
	return Deferred.next(function () {
		return fun.apply(this, args);
	});
};

Deferred.parallel = function (dl) {
	var isArray = false;
	if (arguments.length &amp;gt; 1) {
		dl = Array.prototype.slice.call(arguments);
		isArray = true;
	} else if (Array.isArray &amp;amp;&amp;amp; Array.isArray(dl) || typeof dl.length == &amp;quot;number&amp;quot;) {
		isArray = true;
	}
	var ret = new Deferred(), values = {}, num = 0;
	for (var i in dl) if (dl.hasOwnProperty(i)) (function (d, i) {
		if (typeof d == &amp;quot;function&amp;quot;) dl[i] = d = Deferred.next(d);
		d.next(function (v) {
			values[i] = v;
			if (--num &amp;lt;= 0) {
				if (isArray) {
					values.length = dl.length;
					values = Array.prototype.slice.call(values, 0);
				}
				ret.call(values);
			}
		}).error(function (e) {
			ret.fail(e);
		});
		num++;
	})(dl[i], i);

	if (!num) Deferred.next(function () { ret.call() });
	ret.canceller = function () {
		for (var i in dl) if (dl.hasOwnProperty(i)) {
			dl[i].cancel();
		}
	};
	return ret;
};

Deferred.earlier = function (dl) {
	var isArray = false;
	if (arguments.length &amp;gt; 1) {
		dl = Array.prototype.slice.call(arguments);
		isArray = true;
	} else if (Array.isArray &amp;amp;&amp;amp; Array.isArray(dl) || typeof dl.length == &amp;quot;number&amp;quot;) {
		isArray = true;
	}
	var ret = new Deferred(), values = {}, num = 0;
	for (var i in dl) if (dl.hasOwnProperty(i)) (function (d, i) {
		d.next(function (v) {
			values[i] = v;
			if (isArray) {
				values.length = dl.length;
				values = Array.prototype.slice.call(values, 0);
			}
			ret.call(values);
			ret.canceller();
		}).error(function (e) {
			ret.fail(e);
		});
		num++;
	})(dl[i], i);

	if (!num) Deferred.next(function () { ret.call() });
	ret.canceller = function () {
		for (var i in dl) if (dl.hasOwnProperty(i)) {
			dl[i].cancel();
		}
	};
	return ret;
};


Deferred.loop = function (n, fun) {
	var o = {
		begin : n.begin || 0,
		end   : (typeof n.end == &amp;quot;number&amp;quot;) ? n.end : n - 1,
		step  : n.step  || 1,
		last  : false,
		prev  : null
	};
	var ret, step = o.step;
	return Deferred.next(function () {
		function _loop (i) {
			if (i &amp;lt;= o.end) {
				if ((i + step) &amp;gt; o.end) {
					o.last = true;
					o.step = o.end - i + 1;
				}
				o.prev = ret;
				ret = fun.call(this, i, o);
				if (Deferred.isDeferred(ret)) {
					return ret.next(function (r) {
						ret = r;
						return Deferred.call(_loop, i + step);
					});
				} else {
					return Deferred.call(_loop, i + step);
				}
			} else {
				return ret;
			}
		}
		return (o.begin &amp;lt;= o.end) ? Deferred.call(_loop, o.begin) : null;
	});
};


Deferred.repeat = function (n, fun) {
	var i = 0, end = {}, ret = null;
	return Deferred.next(function () {
		var t = (new Date()).getTime();
		do {
			if (i &amp;gt;= n) return null;
			ret = fun(i++);
		} while ((new Date()).getTime() - t &amp;lt; 20);
		return Deferred.call(arguments.callee);
	});
};

Deferred.register = function (name, fun) {
	this.prototype[name] = function () {
		var a = arguments;
		return this.next(function () {
			return fun.apply(this, a);
		});
	};
};

Deferred.register(&amp;quot;loop&amp;quot;, Deferred.loop);
Deferred.register(&amp;quot;wait&amp;quot;, Deferred.wait);

Deferred.connect = function (funo, options) {
	var target, func, obj;
	if (typeof arguments[1] == &amp;quot;string&amp;quot;) {
		target = arguments[0];
		func   = target[arguments[1]];
		obj    = arguments[2] || {};
	} else {
		func   = arguments[0];
		obj    = arguments[1] || {};
		target = obj.target;
	}

	var partialArgs       = obj.args ? Array.prototype.slice.call(obj.args, 0) : [];
	var callbackArgIndex  = isFinite(obj.ok) ? obj.ok : obj.args ? obj.args.length : undefined;
	var errorbackArgIndex = obj.ng;

	return function () {
		var d = new Deferred().next(function (args) {
			var next = this._next.callback.ok;
			this._next.callback.ok = function () {
				return next.apply(this, args.args);
			};
		});

		var args = partialArgs.concat(Array.prototype.slice.call(arguments, 0));
		if (!(isFinite(callbackArgIndex) &amp;amp;&amp;amp; callbackArgIndex !== null)) {
			callbackArgIndex = args.length;
		}
		var callback = function () { d.call(new Deferred.Arguments(arguments)) };
		args.splice(callbackArgIndex, 0, callback);
		if (isFinite(errorbackArgIndex) &amp;amp;&amp;amp; errorbackArgIndex !== null) {
			var errorback = function () { d.fail(arguments) };
			args.splice(errorbackArgIndex, 0, errorback);
		}
		Deferred.next(function () { func.apply(target, args) });
		return d;
	};
};
Deferred.Arguments = function (args) { this.args = Array.prototype.slice.call(args, 0) };

Deferred.retry = function (retryCount, funcDeferred, options) {
	if (!options) options = {};

	var wait = options.wait || 0;
	var d = new Deferred();
	var retry = function () {
		var m = funcDeferred(retryCount);
		m.
			next(function (mes) {
				d.call(mes);
			}).
			error(function (e) {
				if (--retryCount &amp;lt;= 0) {
					d.fail(['retry failed', e]);
				} else {
					setTimeout(retry, wait * 1000);
				}
			});
	};
	setTimeout(retry, 0);
	return d;
};

Deferred.methods = [&amp;quot;parallel&amp;quot;, &amp;quot;wait&amp;quot;, &amp;quot;next&amp;quot;, &amp;quot;call&amp;quot;, &amp;quot;loop&amp;quot;, &amp;quot;repeat&amp;quot;, &amp;quot;chain&amp;quot;];
Deferred.define = function (obj, list) {
	if (!list) list = Deferred.methods;
	if (!obj)  obj  = (function getGlobal () { return this })();
	for (var i = 0; i &amp;lt; list.length; i++) {
		var n = list[i];
		obj[n] = Deferred[n];
	}
	return Deferred;
};

this.Deferred = Deferred;



function http (opts) {
	var d = Deferred();
	var req = new XMLHttpRequest();
	req.open(opts.method, opts.url, true);
	if (opts.headers) {
		for (var k in opts.headers) if (opts.headers.hasOwnProperty(k)) {
			req.setRequestHeader(k, opts.headers[k]);
		}
	}
	req.onreadystatechange = function () {
		if (req.readyState == 4) d.call(req);
	};
	req.send(opts.data || null);
	d.xhr = req;
	return d;
}
http.get   = function (url)       { return http({method:&amp;quot;get&amp;quot;,  url:url}) };
http.post  = function (url, data) { return http({method:&amp;quot;post&amp;quot;, url:url, data:data, headers:{&amp;quot;Content-Type&amp;quot;:&amp;quot;application/x-www-form-urlencoded&amp;quot;}}) };
http.jsonp = function (url, params) {
	if (!params) params = {};

	var Global = (function () { return this })();
	var d = Deferred();
	var cbname = params[&amp;quot;callback&amp;quot;];
	if (!cbname) do {
		cbname = &amp;quot;callback&amp;quot; + String(Math.random()).slice(2);
	} while (typeof(Global[cbname]) != &amp;quot;undefined&amp;quot;);

	params[&amp;quot;callback&amp;quot;] = cbname;

	url += (url.indexOf(&amp;quot;?&amp;quot;) == -1) ? &amp;quot;?&amp;quot; : &amp;quot;&amp;amp;&amp;quot;;

	for (var name in params) if (params.hasOwnProperty(name)) {
		url = url + encodeURIComponent(name) + &amp;quot;=&amp;quot; + encodeURIComponent(params[name]) + &amp;quot;&amp;amp;&amp;quot;;
	}

	var script = document.createElement('script');
	script.type    = &amp;quot;text/javascript&amp;quot;;
	script.charset = &amp;quot;utf-8&amp;quot;;
	script.src     = url;
	document.body.appendChild(script);

	Global[cbname] = function callback (data) {
		delete Global[cbname];
		document.body.removeChild(script);
		d.call(data);
	};
	return d;
};

function xhttp (opts) {
	var d = Deferred();
	if (opts.onload)  d = d.next(opts.onload);
	if (opts.onerror) d = d.error(opts.onerror);
	opts.onload = function (res) {
		d.call(res);
	};
	opts.onerror = function (res) {
		d.fail(res);
	};
	setTimeout(function () {
		GM_xmlhttpRequest(opts);
	}, 0);
	return d;
}
xhttp.get  = function (url)       { return xhttp({method:&amp;quot;get&amp;quot;,  url:url}) };
xhttp.post = function (url, data) { return xhttp({method:&amp;quot;post&amp;quot;, url:url, data:data, headers:{&amp;quot;Content-Type&amp;quot;:&amp;quot;application/x-www-form-urlencoded&amp;quot;}}) };



Deferred.Deferred = Deferred;
Deferred.http     = http;
Deferred.xhttp    = (typeof(GM_xmlhttpRequest) == 'undefined') ? http : xhttp;
return Deferred;
}// End of JSDeferred

&lt;/pre&gt;</content:encoded>
  </item>
</rdf:RDF>
