<?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/watchlivetvchannel/rss">
    <link>https://let.hatelabo.jp/watchlivetvchannel/rss</link>
    <description></description>
    <title>Bookmarklets from watchlivetvchannel</title>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://let.hatelabo.jp/watchlivetvchannel/let/hLHUs_73rNRa"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/watchlivetvchannel/let/hLHUs_7sk6pN"/>
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://let.hatelabo.jp/watchlivetvchannel/let/hLHUs_73rNRa">
    <link>https://let.hatelabo.jp/watchlivetvchannel/let/hLHUs_73rNRa</link>
    <dc:date>2018-02-16T18:44:50Z</dc:date>
    <description>はてなリンク記法をa要素に展開します。つまり [http://b.hatena.ne.jp/:title=hoge] を &lt;a href="http://b.hatena.ne.jp/"&gt;hoge&lt;/a&gt; に変換します。</description>
    <dc:creator>watchlivetvchannel</dc:creator>
    <title>[Let] はてなリンク記法を展開</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fwatchlivetvchannel%2Flet%2FhLHUs_73rNRa.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 はてなリンク記法をa要素に展開します。つまり [http://b.hatena.ne.jp/:title=hoge] を &amp;lt;a href=&amp;quot;http://b.hatena.ne.jp/&amp;quot;&amp;gt;hoge&amp;lt;/a&amp;gt; に変換します。
 * @include http://blog.hatena.ne.jp/*
 * @license MIT License
 * @require 
 */

function getHatenaLinkNotationOnCursor(textarea) {
  var text = textarea.value;
  var caret = textarea.selectionStart;
  var start = text.lastIndexOf('[', caret);
  var end = text.indexOf(']', caret-1);
  return text.substring(start, end+1);
}

function parseHatenaLinkNotation(notation) {
  var result = {};
  var m_url = notation.match(/https?:\/\/[^:]+/);
  if (m_url) {
     result['url'] = m_url[0];
  }
  var m_title = notation.match(/:title(?:=(.+))?\]$/);  //  [http://b.hatena.ne.jp/:title=hoge] 
  if (m_title) {
     result['title'] = m_title[1] ? m_title[1] : true;
  }
  var m_embed = notation.match(/:embed(:cite)?]$/);  // [http://b.hatena.ne.jp/:embed:cite] 
  if (m_embed) {
     result['embed'] = true;
     if (m_embed[1]) {
        result['cite'] = true;
     }
  }
  return result;
}

function expandSimpleHatenaLinkNotation(result) {
  var a = document.createElement('a');
  a.setAttribute('data-snf-link', 'keep');
  a.href = result['url'];
  if (result['title']) {
    if (typeof(result['title']) == 'string') {
      a.innerHTML = result['title'];
    } else {
      a.innerHTML = result['title'];
    }
  } else {
    a.innerHTML = result['url'];
  }
  return a;
}

function expandEmbedHatenaLinkNotation(result) {
  var iframe = document.createElement('iframe');
  iframe.setAttribute('data-snf-link', 'keep');
  iframe.src = 'https://hatenablog-parts.com/embed?url=' + encodeURIComponent(result['url']);
  iframe.title = result['title'];
  iframe.className = 'embed-card embed-blogcard';
  iframe.scrolling = 'no';
  iframe.style.display = 'block';
  iframe.style.width = '100%';
  iframe.style.height = '190px';
  iframe.style.maxWidth = '500px';
  iframe.style.margin = '10px 0px';
  var frag = document.createDocumentFragment();
  frag.appendChild(iframe);
  if (result['cite']) {
    var cite = document.createElement('cite');
    cite.className = 'hatena-citation';
    var citeLink = document.createElement('a');
    citeLink.href = result['url'];
    citeLink.innerHTML = result['title'];
    cite.appendChild(citeLink);
    frag.appendChild(cite);
  }
  return frag;
}

function expandHatenaLinkNotation(result) {
  var expanded = result['embed'] ? expandEmbedHatenaLinkNotation(result) : expandSimpleHatenaLinkNotation(result);
  var comment = document.createComment(notation);
  var div = document.createElement('div');
  div.appendChild(comment);
  div.appendChild(expanded);
  var replaceHTML = div.innerHTML;
  textarea.value = textarea.value.replace(notation, replaceHTML);
}

var textarea = document.getElementsByTagName('textarea')[0];
var notation = getHatenaLinkNotationOnCursor(textarea);
if (notation) {
  var result = parseHatenaLinkNotation(notation);
  if (typeof(result['title']) == 'string') {
    expandHatenaLinkNotation(result);
  } else {
    var syntax = '[' + result['url'] + ':title]';
    $.ajax({ url: 'http://blog.hatena.ne.jp/api/external/json?url='+encodeURIComponent('http://d.hatena.ne.jp/api/syntax?syntax=' + encodeURIComponent(syntax)) }).done(function(json) { 
       var div = document.createElement('div');
       div.innerHTML = json[syntax];
       result['title'] = div.firstChild.innerHTML;
    }).fail(function() {
       result['title'] = 'ここにタイトルを入力';
    }).always(function () {
       expandHatenaLinkNotation(result);
    });
  }
}&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/watchlivetvchannel/let/hLHUs_7sk6pN">
    <link>https://let.hatelabo.jp/watchlivetvchannel/let/hLHUs_7sk6pN</link>
    <dc:date>2018-02-16T18:43:18Z</dc:date>
    <description>Google検索結果から検索文字列以外の不要なクエリパラメータを削除</description>
    <dc:creator>watchlivetvchannel</dc:creator>
    <title>[Let] Google検索結果から検索文字列以外の不要なクエリパラメータを削除</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fwatchlivetvchannel%2Flet%2FhLHUs_7sk6pN.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;Google検索結果から検索文字列以外の不要なクエリパラメータを削除&lt;/a&gt;&lt;pre&gt;/*
 * @title Google検索結果から検索文字列以外の不要なクエリパラメータを削除
 * @description Google検索結果から検索文字列以外の不要なクエリパラメータを削除
 * @include http://www.google.*
 * @license MIT License
 * @require 
 */


if (location.host.includes(&amp;quot;www.google&amp;quot;)) { var tmp = location.href.split(&amp;quot;?&amp;quot;); var fore = tmp[0]; var queryString = tmp[1]; var q = queryString.split(&amp;quot;&amp;amp;&amp;quot;).find(function(elem) { return elem.startsWith(&amp;quot;q=&amp;quot;); } ); if (!q) alert(&amp;quot;queryStringにqがありません&amp;quot;); else { window.location.href = fore + &amp;quot;?&amp;quot; + q; } } else alert(&amp;quot;google検索のページではなさそうです!&amp;quot;);&lt;/pre&gt;</content:encoded>
  </item>
</rdf:RDF>
