spot_search Fork

    @@ -1,48 +1,66 @@ // ==UserScript== - // @title spot_author_search - // @name spot_author_search + // @title twitter2hatena + // @name twitter2hatena // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You - // @match https://travel.spot-app.jp/* + // @match https://twitter.com/*/status/* // @grant none // ==/UserScript== - var result6 = document.evaluate('//ul[@class="nav_list"]', document, null, 7, null); - result6.snapshotItem(0).insertAdjacentHTML('afterbegin', '<input type="text" id="sub_search" value="">'); - document.getElementById("sub_search").addEventListener('change', function () { - location.href = "https://travel.spot-app.jp/?s=" + document.getElementById("sub_search").value; - }); - if (!(/\/tag\//g.test(location.href)) && !(/\/category\//g.test(location.href))) { - var result = document.evaluate('//div[@class="author-name"]/a/text()', document, null, 7, null); - var result2 = document.evaluate('//div[@class="loop-meta"]/div', document, null, 7, null); - for (var i = 0; i < result.snapshotLength; i++) { - var sp = " "; - var reg2 = new RegExp(sp); - if (reg2.test(result.snapshotItem(i).nodeValue)) { - result2.snapshotItem(i).insertAdjacentHTML('beforeend', "<div class=n_author><a></a></div>"); - } else { - result2.snapshotItem(i).insertAdjacentHTML('beforeend', "<div class=n_author><a href=https://travel.spot-app.jp/tag/" + result.snapshotItem(i).nodeValue + "/#dummy>" + result.snapshotItem(i).nodeValue + "</a></div>"); + var result = document.evaluate('//div[@class="ProfileTweet-actionList js-actions"]', document, null, 7, null); + result.snapshotItem(0).insertAdjacentHTML('beforeend', '<input type="button" value="登録" id="regist2">'); + var result2 = document.evaluate('id("regist2")', document, null, 7, null); + result2.snapshotItem(0).addEventListener('click', sample, false); + + function sample() { + for (var i = 0; i < 128; i++) { + if (!('tweet' + (i + 1) in localStorage)) { + if (i == 127) { + alert("保存できるURLの数は128までに制限しています。\nローカルストレージから登録したキーを削除してください"); + break; + } + var cb = list_check(i + 1, location.href); + if (cb != 1) { + localStorage.setItem('tweet' + (i + 1), location.href); + alert("登録しました"); + break; + } else { + break; + } } } - var result3 = document.evaluate('//div[@class="cover"]', document, null, 7, null); - for (var j = 0; j < result3.snapshotLength; j++) { - result3.snapshotItem(j).remove(); - } - } else if (/#dummy/g.test(location.href)) { - var result5 = document.evaluate('//span[@class="title"]/text()', document, null, 7, null); - var t1 = result5.snapshotItem(0).nodeValue; - var er = "ERROR" - var reg = new RegExp(er); - if (reg.test(t1)) { - alert("authorページが確認できません。\n元のページに戻ります"); - history.back(); - } else { - var result4 = document.evaluate('//div[@class="author-name"]/a', document, null, 7, null); - for (var k = 0; k < result4.snapshotLength; k++) { - if (result4.snapshotItem(k).href == result4.snapshotItem(k + 1).href) { - location.replace(result4.snapshotItem(k).href); + //重複削除 + function list_check(lp, n_name) { + var flag = 0; + for (var i = 0; i < lp; i++) { + if (localStorage.getItem('tweet' + (i + 1)) == n_name) { + alert("このツイートは既に登録されています"); + flag = 1; + break; } } + return flag; } + } + //リスト表示処理 + var result4 = document.evaluate('//div[@class="ProfileTweet-actionList js-actions"]', document, null, 7, null); + result4.snapshotItem(0).insertAdjacentHTML('beforeend', '<input type="button" value="リスト" id="list2">'); + var result5 = document.evaluate('id("list2")', document, null, 7, null); + result5.snapshotItem(0).addEventListener('click', sample2, false); + + function sample2() { + localStorage.setItem("n_url", location.href); + history.pushState(null, null, "/koko_nanimo_naidesuyo3"); + document.body.innerHTML = ""; + for (var i = 0; i < 128; i++) { + if ('tweet' + (i + 1) in localStorage) { + document.body.insertAdjacentHTML('beforeend', '<div>[' + localStorage.getItem('tweet' + (i + 1)) + ':embed]</div>'); + } else { + break; + } + } + window.addEventListener('popstate', function (event) { + location.href = localStorage.getItem("n_url"); + }); }
  • // ==UserScript==
    // @title         twitter2hatena
    // @name         twitter2hatena
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        https://twitter.com/*/status/*
    // @grant        none
    // ==/UserScript==
    var result = document.evaluate('//div[@class="ProfileTweet-actionList js-actions"]', document, null, 7, null);
    result.snapshotItem(0).insertAdjacentHTML('beforeend', '<input type="button" value="登録" id="regist2">');
    var result2 = document.evaluate('id("regist2")', document, null, 7, null);
    result2.snapshotItem(0).addEventListener('click', sample, false);
    
    function sample() {
      for (var i = 0; i < 128; i++) {
        if (!('tweet' + (i + 1) in localStorage)) {
          if (i == 127) {
            alert("保存できるURLの数は128までに制限しています。\nローカルストレージから登録したキーを削除してください");
            break;
          }
          var cb = list_check(i + 1, location.href);
          if (cb != 1) {
            localStorage.setItem('tweet' + (i + 1), location.href);
            alert("登録しました");
            break;
          } else {
            break;
          }
        }
      }
      //重複削除
      function list_check(lp, n_name) {
        var flag = 0;
        for (var i = 0; i < lp; i++) {
          if (localStorage.getItem('tweet' + (i + 1)) == n_name) {
            alert("このツイートは既に登録されています");
            flag = 1;
            break;
          }
        }
        return flag;
      }
    }
    //リスト表示処理
    var result4 = document.evaluate('//div[@class="ProfileTweet-actionList js-actions"]', document, null, 7, null);
    result4.snapshotItem(0).insertAdjacentHTML('beforeend', '<input type="button" value="リスト" id="list2">');
    var result5 = document.evaluate('id("list2")', document, null, 7, null);
    result5.snapshotItem(0).addEventListener('click', sample2, false);
    
    function sample2() {
      localStorage.setItem("n_url", location.href);
      history.pushState(null, null, "/koko_nanimo_naidesuyo3");
      document.body.innerHTML = "";
      for (var i = 0; i < 128; i++) {
        if ('tweet' + (i + 1) in localStorage) {
          document.body.insertAdjacentHTML('beforeend', '<div>[' + localStorage.getItem('tweet' + (i + 1)) + ':embed]</div>');
        } else {
          break;
        }
      }
      window.addEventListener('popstate', function (event) {
        location.href = localStorage.getItem("n_url");
      });
    }
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。