<?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/asannou/rss">
    <link>https://let.hatelabo.jp/asannou/rss</link>
    <description></description>
    <title>Bookmarklets from asannou</title>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://let.hatelabo.jp/asannou/let/hLHUiMbf7phF"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/asannou/let/gYC-xfqBjfiICA"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/asannou/let/gYC-xuGbm76OSA"/>
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://let.hatelabo.jp/asannou/let/hLHUiMbf7phF">
    <link>https://let.hatelabo.jp/asannou/let/hLHUiMbf7phF</link>
    <dc:date>2013-09-03T09:45:41Z</dc:date>
    <description>Flash Player がない環境でニコニコ漫画を見る</description>
    <dc:creator>asannou</dc:creator>
    <title>[Let] ニコニコ漫画</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fasannou%2Flet%2FhLHUiMbf7phF.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 Flash Player がない環境でニコニコ漫画を見る
 * @include http://seiga.nicovideo.jp/watch/mg*
 * @license MIT License
 */

(function($){

var id = location.href.match(/http:\/\/seiga\.nicovideo\.jp\/watch\/mg([0-9]+)/)[1];
var images = [{}];
var i = Number(location.hash.substring(1) || 1);

var comments = {};

var audios = {};
var bgm;
var se;

var img = $(&amp;quot;&amp;lt;img&amp;gt;&amp;lt;/img&amp;gt;&amp;quot;).css({ float: &amp;quot;left&amp;quot;, width: &amp;quot;670px&amp;quot;, height: &amp;quot;380px&amp;quot;, border: &amp;quot;solid 1px #000&amp;quot; });
var mask = $(&amp;quot;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;).css({ position: &amp;quot;absolute&amp;quot;, border: &amp;quot;solid 1px #000&amp;quot;, &amp;quot;background-color&amp;quot;: &amp;quot;#000&amp;quot;, &amp;quot;z-index&amp;quot;: &amp;quot;100&amp;quot;, opacity: &amp;quot;0.5&amp;quot; }).appendTo(&amp;quot;body&amp;quot;);
var div = $(&amp;quot;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;).css({ float: &amp;quot;left&amp;quot;, width: &amp;quot;200px&amp;quot;, height: &amp;quot;380px&amp;quot;, border: &amp;quot;solid 1px #000&amp;quot;, overflow: &amp;quot;scroll&amp;quot; });
var ol = $(&amp;quot;&amp;lt;ol&amp;gt;&amp;lt;/ol&amp;gt;&amp;quot;);

var find_image = function () {
    var id = $(this).find(&amp;quot;id&amp;quot;).text();
    comments[id] = [];
    var url = $(this).find(&amp;quot;source_url&amp;quot;).text();
    var bgm_id = $(this).find(&amp;quot;bgm_id&amp;quot;).text();
    if (bgm_id == -1) {
        bgm_id = undefined;
    } else {
        if (bgm_id) {
            if (!audios[bgm_id]) {
                var bgm_path = $(this).find(&amp;quot;bgm_path&amp;quot;).text();
                var audio = new Audio(&amp;quot;http://lohas.nicoseiga.jp&amp;quot; + bgm_path);
                audio.load();
                audio.loop = ($(this).find(&amp;quot;bgm_loop&amp;quot;).text() == 1);
                audio.volume = 0.2;
                audios[bgm_id] = audio;
            }
        } else {
            bgm_id = images[images.length - 1][&amp;quot;bgm_id&amp;quot;];
        }
    }
    var se_id = $(this).find(&amp;quot;se_id&amp;quot;).text();
    if (se_id) {
        if (!audios[se_id]) {
            var se_path = $(this).find(&amp;quot;se_path&amp;quot;).text();
            var audio = new Audio(&amp;quot;http://lohas.nicoseiga.jp&amp;quot; + se_path);
            audio.load();
            audio.volume = 0.2;
            audios[se_id] = audio;
        }
    } else {
        se_id = undefined;
    }
    images.push({ id: id, url: url, bgm_id: bgm_id, se_id: se_id });
};

var find_comment = function () {
    var image_id = $(this).find(&amp;quot;image_id&amp;quot;).text();
    var content = $(this).find(&amp;quot;content&amp;quot;).text();
    var frame = $(this).find(&amp;quot;frame&amp;quot;).text();
    comments[image_id].push({ content: content, frame: frame  });
};

var load_image = function (url) {
    var deferred = $.Deferred();
    $(img)
        .on(&amp;quot;load&amp;quot;, function () { deferred.resolve(); })
        .attr(&amp;quot;src&amp;quot;, url);
    return deferred.promise();
};

var append_comment = function (image_id) {
    var ol = $(&amp;quot;&amp;lt;ol&amp;gt;&amp;lt;/ol&amp;gt;&amp;quot;).appendTo(div.empty());
    $.each(comments[image_id], function () {
        ol.append($(&amp;quot;&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&amp;quot;).text(this[&amp;quot;content&amp;quot;]));
    });
};

var play_bgm = function (bgm_id) {
    var deferred = $.Deferred();
    if (bgm != audios[bgm_id]) {
        if (bgm) bgm.pause();
        bgm = audios[bgm_id];
        if (bgm) {
            bgm.addEventListener(&amp;quot;play&amp;quot;, function () { deferred.resolve(); });
            bgm.load();
            bgm.play();
        } else {
            deferred.resolve();
        }
    } else {
        deferred.resolve();
    }
    return deferred.promise();
};

var play_se = function (se_id) {
    var deferred = $.Deferred();
    if (se) se.pause();
    se = audios[se_id];
    if (se) {
        if (bgm) se.addEventListener(&amp;quot;ended&amp;quot;, function () { bgm.play(); });
        se.addEventListener(&amp;quot;play&amp;quot;, function () { deferred.resolve(); });
        se.load();
        se.play();
    } else {
        deferred.resolve();
    }
    return deferred.promise();
};

var go_next = function () {
    $.get(
        &amp;quot;/api/theme/next?id=&amp;quot; + id,
        function (xml, status) {
            if (status != &amp;quot;success&amp;quot;) return;
            var next = $(xml).find(&amp;quot;next&amp;quot;);
            var title = next.find(&amp;quot;title&amp;quot;).text();
            if (title &amp;amp;&amp;amp; window.confirm(title)) {
                location.href = &amp;quot;http://seiga.nicovideo.jp/watch/mg&amp;quot; + next.find(&amp;quot;id&amp;quot;).text();
            }
        }
    );
};

$.ajax({
    url: &amp;quot;/api/theme/data?theme_id=&amp;quot; + id,
    converters: {
        &amp;quot;text xml&amp;quot;: function (res) {
            res = res.replace(/[\x00-\x1f]/g, &amp;quot;&amp;quot;);
            return $.parseXML(res);
        }
    },
    success: function (xml, status) {
        if (status != &amp;quot;success&amp;quot;) return;
        $(xml).find(&amp;quot;image&amp;quot;).each(find_image);
        $(xml).find(&amp;quot;comment&amp;quot;).each(find_comment);
        $(&amp;quot;#playerBody&amp;quot;)
            .empty()
            .width(900)
            .append(img)
            .append(div);
        img
            .attr(&amp;quot;src&amp;quot;, images[i][&amp;quot;url&amp;quot;])
            .click(function (e) {
                var w = $(this).width();
                var x = e.pageX - $(this).offset().left;
                if (x &amp;lt; w / 2) {
                    if (1 &amp;lt; i) { i--; } else { return; }
                } else {
                    if (images[i + 1]) { i++; } else { go_next(); return; }
                }
                location.hash = &amp;quot;#&amp;quot; + i;
                append_comment(images[i][&amp;quot;id&amp;quot;]);
                mask.show();
                $.when(
                    load_image(images[i][&amp;quot;url&amp;quot;]),
                    play_bgm(images[i][&amp;quot;bgm_id&amp;quot;]),
                    play_se(images[i][&amp;quot;se_id&amp;quot;])
                ).done(function () { mask.hide(); })
            });
        append_comment(images[i][&amp;quot;id&amp;quot;]);
        mask
            .offset(img.offset())
            .width(img.width())
            .height(img.height())
            .on(&amp;quot;click&amp;quot;, function () {
                $(this).hide().off(&amp;quot;click&amp;quot;);
                play_bgm(images[i][&amp;quot;bgm_id&amp;quot;]);
                play_se(images[i][&amp;quot;se_id&amp;quot;]);
            });
    }
});

})(jQuery);&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/asannou/let/gYC-xfqBjfiICA">
    <link>https://let.hatelabo.jp/asannou/let/gYC-xfqBjfiICA</link>
    <dc:date>2012-06-09T07:07:32Z</dc:date>
    <description>http://d.hatena.ne.jp/asannou/20120609</description>
    <dc:creator>asannou</dc:creator>
    <title>[Let] SITF Sample AP KAEDAMA</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fasannou%2Flet%2FgYC-xfqBjfiICA.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;SITF Sample AP KAEDAMA&lt;/a&gt;&lt;pre&gt;/*
 * @title SITF Sample AP KAEDAMA
 * @description http://d.hatena.ne.jp/asannou/20120609
 * @include http://*
 * @license MIT License
 * @require 
 */

(function() {
    if (location.href == &amp;quot;http://sitf-ap.openidconnect.info/users/login&amp;quot;) {
        location.href = &amp;quot;http://ido.nu/ayaya/sitf-ap.cgi?cookie=&amp;quot; + encodeURIComponent(document.cookie);
    } else {
        location.href = &amp;quot;http://sitf-idp.openidconnect.info/sitfap/reauth&amp;quot;;
    }
})();
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/asannou/let/gYC-xuGbm76OSA">
    <link>https://let.hatelabo.jp/asannou/let/gYC-xuGbm76OSA</link>
    <dc:date>2010-09-13T06:29:00Z</dc:date>
    <description>見ているサイトをGREEのユーザー間で簡単に共有します</description>
    <dc:creator>asannou</dc:creator>
    <title>[Let] GREE Social Feedback</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fasannou%2Flet%2FgYC-xuGbm76OSA.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;GREE Social Feedback&lt;/a&gt;&lt;pre&gt;/*
 * @title GREE Social Feedback
 * @description 見ているサイトをGREEのユーザー間で簡単に共有します
 * @include http://*
 * @license MIT License
 * @require 
 */

(function(){
var url = &amp;quot;http://gree.jp/?mode=share&amp;amp;act=write&amp;amp;url=&amp;quot; + encodeURIComponent(location.href);
var features = &amp;quot;width=585,height=420,location=no,menubar=no,toolbar=no,status=yes&amp;quot;;
window.open(url, &amp;quot;greeShareWindow&amp;quot;, features);
})()&lt;/pre&gt;</content:encoded>
  </item>
</rdf:RDF>
