1300

移行用のテストです

西野ブログgamp版

面倒なのでJavaScriptは以下のサイトでのみ更新します。
let.hatelabo.jp

article{padding:0 !important;}
article+div{display:none;}
article+div+div{padding:0 !important;}
article>div:first-child{margin:0;}
.entry-header__title{margin:0;}
.entry amp-img[src*="/user_images/"][layout="responsive"]{margin:0;}

.div_br+.div_br{display:none;}
.node_last+.div_br{display:none;}
.div_br,.l_yoko{line-height:1;
display:block;}
.tb_cell{display:flex;}
.entry-text b{font-weight:normal;}

西野ブログ限定版

このスクリプトは実験的なスクリプトです。デザイン上必要な改行やテキストなどが消える場合がありますのでご注意ください
let.hatelabo.jp

// ==UserScript==
// @title        nishino_ameblo_only
// @name         nishino_ameblo_only
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://ameblo.jp/nishino-akihiro/*
// @grant        none
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
// ==/UserScript==
var listArray = document.querySelectorAll('.skin-entryBody *[style]');
for (var i = 0; i < listArray.length; i++) {
  listArray[i].removeAttribute("style");
}
var listArray2 = document.querySelectorAll('.skin-entryBody font[color],.skin-entryBody font[face]');
for (var j = 0; j < listArray2.length; j++) {
  listArray2[j].removeAttribute("color");
  listArray2[j].removeAttribute("face");
}
var listArray3 = document.querySelectorAll('.skin-entryBody b,.skin-entryBody i,.skin-entryBody font,.skin-entryBody u');
for (var k = 0; k < listArray3.length; k++) {
  listArray3[k].classList.add("fbi");
}
var result4 = document.evaluate('//div[@class="skin-entryBody"]//*[contains(text(),"━") or contains(text(),"=")]', document, null, 7, null);
for (var a = 0; a < result4.snapshotLength; a++) {
  result4.snapshotItem(a).classList.add("l_yoko");
}
var result2 = document.evaluate('//span[@class="l_yoko"]/following-sibling::*[1][self::span]/br[not(./preceding-sibling::node())]', document, null, 7, null);
for (var y = 0; y < result2.snapshotLength; y++) {
  result2.snapshotItem(y).remove();
}
var result5 = document.evaluate('//div[@class="skin-entryBody"]//text()', document, null, 7, null);
for (var b = 0; b < result5.snapshotLength; b++) {
  if (/^\s+$/g.test(result5.snapshotItem(b).nodeValue)) {
    if (/ /g.test(result5.snapshotItem(b).nodeValue)) {
      result5.snapshotItem(b).nodeValue = " ";
    } else {
      result5.snapshotItem(b).nodeValue = result5.snapshotItem(b).nodeValue.replace(/^\s+/g, "");
    }
  }
}
var result6 = document.evaluate('//div[@class="skin-entryBody"]//div[./text()=" "][not(./*)]', document, null, 7, null);
for (var c = 0; c < result6.snapshotLength; c++) {
  result6.snapshotItem(c).classList.add("div_br");
}
$('.fbi>.fbi,.fbi>br,.skin-entryBody span>br').parent().contents().unwrap();
var result = document.evaluate('//div[@class="skin-entryBody"]//*[self::div or self::p]/br[not(./preceding-sibling::node())]', document, null, 7, null);
for (var x = 0; x < result.snapshotLength; x++) {
  result.snapshotItem(x).classList.add("br_first");
}
$(".skin-entryBody div+br,.br_first").wrap("<div class='div_br'></div>");
$('.skin-entryBody div>div,.skin-entryBody p>div,.skin-entryBody div>p').parent().contents().unwrap();
$(".skin-entryBody").contents().filter(function () {
  return this.nodeType === 3;
}).wrap("<span class='n_text'></span>");
var result3 = document.evaluate('//div[@class="skin-entryBody"]/*[not(@class="div_br")][last()]', document, null, 7, null);
result3.snapshotItem(0).classList.add("node_last");
.skin-entryBody{margin:0;}
.skin-entryBody *{margin:0 !important;
font-size:1em !important;}
.skin-entryBody h2{font-size:1.5em !important;}

.js-blogGenreRank{display:none;}
.skin-entryHead{margin:0;}
.skin-entryThemes{margin:0;}
.hashtag-module-wrapper{display:none;}

.skin-blogMainInner{padding:0 !important;}
.LazyLoad{display:none;}

.skin-entryBody b,.skin-entryBody strong{font-weight:normal;}
.skin-entryBody i{font-style:normal;}
.skin-entryBody u{text-decoration:inherit;}
.l_yoko{display:block;}
.div_br,.l_yoko,.node_last{line-height:1;}
.node_last table{line-height:1.6;}
.div_br+.div_br{display:none;}
.node_last+.div_br{display:none;}

a[href="https://salon.otogimachi.jp"] {
  pointer-events: none;
  text-decoration: none;
  color: #333333;
}

SPOTで表示を軽く?する

// ==UserScript==
// @name         spot_light_load
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://travel.spot-app.jp/*
// @grant        none
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
// ==/UserScript==
$(".item_description>p").contents().filter(function () {
    return this.nodeType === 3;
  }).wrap("<a class='title_link'></a>");
var result = document.evaluate('//h3[@class="item_title"]/a', document, null, 7, null);
var result2 = document.evaluate('//a[@class="title_link"]', document, null, 7, null);
for (var i = 0; i < result.snapshotLength; i++) {
    result2.snapshotItem(i).href=result.snapshotItem(i).href;
}

var listArray = document.querySelectorAll('.entry_main *[style]');
for (var j = 0; j < listArray.length; j++) {
  listArray[j].removeAttribute("style");
}
.item_title a{pointer-events:none;}
.autopagerize_page_separator~.content_item .item_title a{pointer-events:auto;}

画像のみ表示時に連番画像を生成

let.hatelabo.jp

// ==UserScript==
// @name        renban_load_zero
// @namespace   http://d.hatena.ne.jp/jigendaddy/
// @include     *.jpg
// @include     *.png
// @version     1
// @grant       none
// ==/UserScript==
if (/\d/g.test(location.href)) {
  if (window.confirm("連番画像を生成します。連番前にゼロの付加を行いますか?")) {
    var keta = window.prompt("付加するゼロも含めて何桁の連番を生成しますか?\n半角英数で入力してください");
  }
  if (keta > 0) {
    var b_url = window.prompt("連番以外の文字列と連番の範囲を入力してください。\n付加するゼロは入力しないでください\nex.http://test/[1-10].jpg", location.href);
  } else {
    b_url = window.prompt("連番以外の文字列と連番の範囲を入力してください。\nex.http://test/[1-9].jpg", location.href);
  }
  var str1 = b_url.split("[");
  var m_str = str1[0];
  var str2 = str1[1].split("]");
  //m_strは連番前の文字列、str2[0]は連番、str2[1]は連番後の文字列
  var str3 = str2[0].split("-");
  var r_start = str3[0];
  var r_end = str3[1];
  document.body.innerHTML = '';
  var links = '';
  if (keta > 0) {
    while (r_start <= r_end) {
      var tmp = String(r_start);
      links += '<img src="' + m_str + tmp.padStart(keta, "0") + str2[1] + '" style="position:relative">';
      r_start++;
    }
  } else {
    while (r_start <= r_end) {
      links += '<img src="' + m_str + r_start + str2[1] + '" style="position:relative">';
      r_start++;
    }
  }
  var area = document.createElement('div');
  area.style.display = 'block';
  area.style.position = 'absolute';
  area.style.top = 0;
  area.style.left = 0;
  area.style.textAlign = 'left';
  area.innerHTML = links;
  document.body.appendChild(area);
  document.body.style.display = 'block';
}

Twitterで登録したモーメントを一覧リストで表示

let.hatelabo.jp

// ==UserScript==
// @name         twitter_moment_list
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://twitter.com/i/moments/*
// @grant        none
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
// ==/UserScript==
var result = document.evaluate('//div[@class="MomentDropdownMenu dropdown"]', document, null, 7, null);
result.snapshotItem(0).insertAdjacentHTML('afterend', '<input type="button" value="登録" id="regist3">');
var result2 = document.evaluate('id("regist3")', document, null, 7, null);
result2.snapshotItem(0).addEventListener('click', sample, false);

function sample() {
  var result3 = document.evaluate('//link[@rel="canonical"]', document, null, 7, null);
  var result4 = document.evaluate('//meta[@name="twitter:text:title"]', document, null, 7, null);
  var result5 = document.evaluate('//meta[@name="twitter:user:author:screen_name"]', document, null, 7, null);
  var n_str = result3.snapshotItem(0).href + "/";
  var n_arr = n_str.split("/");
  var n_mom = n_arr[5];
  for (var i = 0; i < 128; i++) {
    if (!('mom' + (i + 1) in localStorage)) {
      if (i == 127) {
        alert("保存できるモーメントの数は128までに制限しています。\nローカルストレージから登録したキーを削除してください");
        break;
      }
      var cb = list_check(i + 1, n_mom);
      if (cb != 1) {
        localStorage.setItem('mom' + (i + 1), n_mom);
        localStorage.setItem('title' + (i + 1), result4.snapshotItem(0).content);
        localStorage.setItem('author' + (i + 1), result5.snapshotItem(0).content);
        alert("登録しました");
        break;
      } else {
        break;
      }
    }
  }
  //重複チェック
  function list_check(lp, n_name) {
    var flag = 0;
    for (var i = 0; i < lp; i++) {
      if (localStorage.getItem('mom' + (i + 1)) == n_name) {
        alert("このページは既に登録されています");
        flag = 1;
        break;
      }
    }
    return flag;
  }
}
//リスト表示処理
result2.snapshotItem(0).insertAdjacentHTML('afterend', '<input type="button" value="リスト" id="list3">');
var result6 = document.evaluate('id("list3")', document, null, 7, null);
result6.snapshotItem(0).addEventListener('click', sample2, false);

function sample2() {
  localStorage.setItem("n_url", location.href);
  history.pushState(null, null, "/koko_nanimo_naidesuyo5");
  document.body.innerHTML = "<ol type=1></ol>";
  var result7 = document.evaluate('//ol', document, null, 7, null);
  for (var i = 0; i < 128; i++) {
    if ('mom' + (i + 1) in localStorage) {
      result7.snapshotItem(0).insertAdjacentHTML('beforeend', '<li class=line' + (i + 1) + '><img src=https://twitter.com/' + localStorage.getItem('author' + (i + 1)) + '/profile_image?size=mini><a href=https://twitter.com/' + localStorage.getItem('author' + (i + 1)) + '>@' + localStorage.getItem('author' + (i + 1)) + '</a><div><a href=https://twitter.com/i/moments/' + localStorage.getItem('mom' + (i + 1)) + '>' + localStorage.getItem('title' + (i + 1)) + '</a></div></li>');
    } else {
      document.body.insertAdjacentHTML('beforeend', '<input type=button id=remove value=削除>');
      break;
    }
  }
  var listArray = document.querySelectorAll('li+li');
  for (var a = 0; a < listArray.length; a++) {
    listArray[a].style.marginTop = "1em";
  }
  $(function () {
    $('#remove').click(function () {
      var j = window.prompt("何番目のモーメントを削除しますか?\n半角英数で入力してください。\n入力例は1番から3番を消す場合です", "1-3");
      if (/\-/g.test(j)) {
        var j_sp = j.split("-");
        var j_begin = j_sp[0];
        var j_end = j_sp[1];
        while (j_begin <= j_end) {
          $('.line' + j_begin).css({
            "display": "none"
          });
          j_begin++;
        }
      } else {
        $('.line' + j).css({
          "display": "none"
        });
      }
    }, );
  });
  window.addEventListener('popstate', function (event) {
    location.href = localStorage.getItem("n_url");
  });
}

誕生日

greasemonkeyスクリプトの新ネタが思いつかないので、日記を書くことでお茶を濁しておきたい。テーマはランダムで決めるものとした。自分で決めたところで、私の力量ではどうなるものでもない。ならば運を天に任せてみようという趣向である。フォロワーのツイートから選ぼうと思ったのだが、API制限のせいかどうもそういうwebサービスが見当たらなかった。どのみち私がフォローしているアカウントは既に3000を超え、カオスの一言に尽きる。ならば完全に無作為のアカウントから選んでも変わりないだろうと思い、以下のサイトを使用した。
random tweet -- see what the world is thinking

結果選ばれたツイートがこれである。モニターの向こう側とテンションの落差がすごいな

テーマは誕生日としたが、あまりいい思い出はない。学生時代から社会性を置き去りにした私では既に限界を迎えつつある。毎日が誕生日というのはその時点で矛盾を抱えているのではないだろうか。水商売で働く女性の一部は誕生日が複数あるという話を聞いたことがあるが、流石に毎日というわけではあるまい。そもそもとみーさんが誰か知らない。実在人物かどうかさえ知らない人間の誕生日を祝うのはいささか辛いものがある。その上でなお、素直に祝うべきだろうか。親の誕生日だってろくに祝ったことのない人間がここだけ祝うというのもおかしな話ではないだろうか。祝えと言われれば祝うが、心の奥底における煩悶がどこか消えない。しかしやはり、ここは祝うべきだろう。すべて私の個人的な事情なのだから。おめでとうございます。

ここまで読まれた方は意外に思われるかもしれないが、クリスマスというイベントを否定する気はない。祝いたい人間は素直に祝えばいいだけの話だ。ケーキも嫌いではない。むしろ成人男性としては好きな部類に入る。性行為をしたい人間はすればいい。ほんの一瞬その手のイベント行為の際に流れに乗れない、私のような不器用な人間もいるという事実を頭の片隅においていただければ幸いです。構わず放置しておけばただ一人、静かに歳を重ねるだけの話である。

Twitterで今日の予定をメモ

このスクリプトFirefoxで動作を保証しないものとします
let.hatelabo.jp

// ==UserScript==
// @name         twitter_date
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://twitter.com/*
// @grant        none
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
// @require      http://momentjs.com/downloads/moment.js
// ==/UserScript==
var result2 = document.evaluate('id("global-new-tweet-button")', document, null, 7, null);
result2.snapshotItem(0).insertAdjacentHTML('afterend', '<input type="button" value="メモ" id="task_list">');
var result3 = document.evaluate('id("task_list")', document, null, 7, null);
result3.snapshotItem(0).addEventListener('click', sample, false);

function sample() {
  localStorage.setItem("n_url", location.href);
  history.pushState(null, null, "/koko_nanimo_naidesuyo4");
  window.addEventListener('beforeunload', function (e) {
    e.returnValue = '本当に移動してよろしいですか?';
  }, false);
  var now = moment();
  var d_week = now.format("ddd");
  d_week = d_week.replace("Sun", "日");
  d_week = d_week.replace("Mon", "月");
  d_week = d_week.replace("Tue", "火");
  d_week = d_week.replace("Wed", "水");
  d_week = d_week.replace("Thu", "木");
  d_week = d_week.replace("Fri", "金");
  d_week = d_week.replace("Sat", "土");
  document.body.innerHTML = "<div><span>" + now.format("M月D日") + "</span><span>(" + d_week + ")</span></div>";
  if (!('draft2' in localStorage)) {
    document.body.insertAdjacentHTML("beforeend", "<textarea>戻るボタンなどのブラウザバックで元のページに戻ります</textarea><br>");
  } else {
    document.body.insertAdjacentHTML("beforeend", "<textarea>" + localStorage.getItem('draft2') + "</textarea><br>");
  }
  document.body.insertAdjacentHTML("beforeend", "<div><div><input type='button' value='save'><input type='button' value='load'><a href='https://www.jma.go.jp/jp/yoho/'>天気</a><a href='https://tv.so-net.ne.jp/'>TV</a></div></div>");
  var result = document.evaluate('//input', document, null, 7, null);
  result.snapshotItem(0).addEventListener('click', sample2, false);
  result.snapshotItem(1).addEventListener('click', sample3, false);

  function sample2() {
    var result4 = document.evaluate('//textarea', document, null, 7, null);
    localStorage.setItem('draft2', result4.snapshotItem(0).value);
  }

  function sample3() {
    var result4 = document.evaluate('//textarea', document, null, 7, null);
    var draft2 = localStorage.getItem('draft2');
    result4.snapshotItem(0).value = draft2;
  }
  var result5 = document.evaluate('//textarea/following-sibling::div', document, null, 7, null);
  result5.snapshotItem(0).style.width = "15%";
  result5.snapshotItem(0).classList.add("t_after");
  $('.t_after>div').css({
    "display": "flex",
    "justify-content": "space-between"
  });
  window.addEventListener('popstate', function (event) {
    location.href = localStorage.getItem("n_url");
  });
}