Togetter関連の諸々を一つにまとめてみました

By mattz, 2010/04/23

2011/05/31 追記

Togetterがリニューアルで色々と変わって、そのままでは使えないのでとりあえずリンク外します。リニューアル対応はすすめていますが、Togetter自体、このあともしばらくは変更が入りそうなので、ある程度落ち着いたところでver 4.0.0を出します。


Togetter関連のもろもろを1つのuser.jsにまとめた。

ダウンロード→ http://mattz.xii.jp/sites/default/files/togetter.js

2010/04/26 追記

greasemonkeyタグつけてブックマークしている人とかいて申し訳ないので、Greasemonkey分からないなりに頑張って対応してみた。→ http://mattz.xii.jp/sites/default/files/togetter.user.js

2010/04/27 追記

ちょこちょこと微調整。

2010/04/28 追記

RTの引用部分を省略する時に、省略した部分をRT元のIDへのtitle要素にしてマウスオーバーで参照できるように変更した。

2010/09/15 追記

Togetter側で、@つきの名前をポイントすると、プロフィール?をhover表示するようにしてるため、これがうまいこといきません。
回避するには http://platform0.twitter.com/*/javascripts/hovercards.bundle.js をコンテンツブロックしてしまうという手がありますが、副作用もあ りますので、ご利用は計画的に。

2010/07/20 追記

Togetterのデザインリニューアルにあわせて修正しました。機能の追加はありません。

できること

  • http://mattz.xii.jp/node/388 フォントいじりを全て無効化します。
  • http://mattz.xii.jp/node/389 はてなブックマーク関連のイマイチしっくりこないところを僕にとって自然な感じに変更する。
  • ↑に加えて、ldcのclip数を表示したりできます。
  • http://mattz.xii.jp/node/390 ページャーリンクの追加。
  • 作成者のtweetだけ目立たせる。
  • 作成者のtweetの占有率を表示する。 http://d.hatena.ne.jp/Pasta-K/20100321/1269164746 をclipしてる人がウォッチリストにいたのでtitleだけみ て取り込んでみた。まぁ大元は@otsuneのtweetだしパクリとか言わないで下さい。というかソースを参考にしたりはしてませんがネタ自体はパクリです。ごめんなさい。
  • ID(スクリーンネーム)ごとに背景色を変更する。
  • 「引用つき野良RT」っぽいtweetの引用されたと思しき部分を消して「誰のtweetをRTしたか」だけ分かるようにします。ちなみにtweet自体が「RT:」で始まってたりするtweetは僕にとっては無価値なので、丸ごと消えます。
  • 「お気に入りしたユーザ」のアイコンを小さく表示します。つか、これこんな上の方に要らないでしょ。

全て、ほんのちょっと書きかえるだけで、機能を無効にできます。例えばフォントいじりの無効化とかはUserCSSの方が早かったりするので、不要ならdestroyTweetsSpanStyleってところをfalseにしてもらえばいいです。誰でも分かるようにしたつもりですけど、分からなかったら諦めて下さい。面倒見る気はありません。

Togetterにページング機能を追加するuser.js

By mattz, 2010/04/14

またTogetterです。これじゃ好きじゃないとか言っても信用してもらえません。ま、せっかく作ったんで。

要するに

こうするuser.jsです。

http://mattz.xii.jp/sites/default/files/togetterpager.js

前/次リンクについてはTogetter本家が実装したようなので、<link rel='Prev'>とか<link rel='Next'>とかだけ追加するようなものに修正。

ナビゲーション要素に追加しますので、fastforwardも効きます。

Togetterの[XXusers]画像のリンク先をはてなブックマークのコメントページに変更するuser.js

By mattz, 2010/03/26

それほどTogetterが大好きってわけでもなんでもないんですが、Togettrのまとめページ見てると、何でこの画像のリ ンク先がはてなブックマークじゃないんだろう?といつも思うので。

http://mattz.xii.jp/sites/default/files/togetter2.js

追記

Togetterのデザイン変更で多分動かなくなったのでリンク外す。

Togetter関連の諸々を一つにまとめてみましたで代用可能だと思うので使ってやってください。

アクティブなtextフィールドに今日の日付を挿入するショートカットを追加するuser.js

By mattz, 2010/03/11

Excelの便利なショートカットに、Ctrl+;で日付挿入っていうのがあり、業務上それ(日付を入力する)をWebアプリでやることが多かったので作 った。色々参考にしたページ多数。実は全くそのまんまの機能のscriptも見つけてはいたのですけど、IE限定とか書いてあるし、割り当てるキーの変更がしにくいとか不満があったので。

http://mattz.xii.jp/sites/default/files/insertdate.js

色々と応用が利くのでエントリとして上げておく。

document.activeElementはFirefoxではwindow.getSelection().focusNodeとすればいいらしい。ChromeやSafariでのことは知らないし、試す気もありません

タグ

Twitterのパーマリンクを表示する時に前後のポストを取ってきて表示するUser.js作った

By mattz, 2010/03/04

特定の発言だけが RT されて前後の発言が無視されるとかなんとか、って Twitter がわで前後の発言にアクセスしづらいのも問題だよなー

追記

user.jsだと、API消費がなんなので、ブックマークレット版を推奨します。

追記終わり。

問題というか、Twitterの特定の1ポストがソーシャルブックマークでクリップされていたりなんかした時に、前後の発言も見たいなぁ、なんて思うことが多かったので、なんとかしてみた。

ダウンロード: http://mattz.xii.jp/sites/default/files/twst.js_.txt

イメージ伝わりやすいようにスクリーンキャプチャ。

APIを多分2個消費しますのでご注意ください。

あと、17行目~26行目くらいのところのCSS文字列を適当に変えると適当に見た目が変えられます。

俺環境(Windows Opera 10.50)でしか確認してないので、動作保障はしませんが、ご指摘いただければ可能な限り対応します。

既知の問題

特定ポストの直後のポストはうまく取得できなくて、最新の数ポストになっちゃうことが多いです。

修正履歴的なもの

3/4

コード中の<、>をちゃんと参照にしてなかったから全然だめだった。修正。つか、もしかしたらローカルのユーザスクリプトフォルダにjquery.jsの1.3.2を置いとかないとダメかも。

追記

別にローカルに1.3.2なくても大丈夫だった。Twitterが使ってる1.3.0だけで大丈夫。

3/5

statusでもstatusesでいいとは知らなかった。若干修正。だけで済まそうと思ったけど、よく見てみたら色々冗長だったりしたので割と全体的に見直し。

3/23

今更ですが、ブックマークレット版も用意したのでよろしければどうぞ。

3つ以上連続するbrを2個にまとめるuser.js

By mattz, 2009/10/21

栗の皮むきは難しい @ ArtSaltのサイドストーリーにコメントしたら、「<br>の連打をuser CSSで無効にする」関連の返しがあり、しばらく考えてみたがuserCSSでの解法は思いつかなかったので、user.jsで強引に解決。


// ==UserScript==
// ==/UserScript==
(function(){
  window.addEventListener('load',function(){
    var re = /<br\s*\/?>[\s\n]*<br\s*\/?>[\s\n]*<br\s*\/?>/i;
    var all = document.body.innerHTML;
    while(re.test(all)){
      all = all.replace(re, "<br /><br />");
    }
    document.body.innerHTML = all;
  },false
);})();

してみたけど、このやり方だと元々あったイベントが全部死んじゃうんだな。強引過ぎだ。もうちょっと考えてみる。

追記

考えてみた。さっきのはチャイで。

// ==UserScript==
// ==/UserScript==
(function(){
  window.addEventListener('DOMContentLoaded',function(){
    var x = document.evaluate('//', document, null, 7, null);
    var l = x.snapshotLength;
    for(i = 0;i  l;i++){
      if('BR' == x.snapshotItem(i).tagName){
        if('BR' == x.snapshotItem(i+1).tagName){
          if('BR' == x.snapshotItem(i+2).tagName){
            x.snapshotItem(i).setAttribute('style','display:none;');
          }
        }
      }
    }
  },false
);})();

これでどうだろう。これはこれで強引じゃねーか?ほっといてくれ。

また追記

ちょくちょく某所からアクセスが来るので、改訂版。

// ==UserScript==
// ==/UserScript==
(function(){
  var getNext = function(node) {
    var n = node.nextSibling;
    if (! n) return false;
    if (n.nodeType == 3 && n.nodeValue.match(/^\s*$/)) {
      n = node.nextSibling.nextSibling;
    }
    return n;
  }
  window.addEventListener('DOMContentLoaded',function(){
    var brs = document.querySelectorAll('br');
    var last = brs.length - 2;
    var n1, n2;
    for(i = 0; i < last; i++){
      n1 = getNext(brs[i]);
      if (! n1) {break;}
      n2 = getNext(n1);
      if (! n2) {break;}
      if('BR' == n1.nodeName && 'BR' == n2.nodeName) {
        brs[i].style.display = 'none';
      }
    }
  },false
);})();

Googlepediaを修正

By mattz, 2009/10/15

多少はウィンドウサイズの変動に耐えられるように変更した。

表示位置とか表示領域の大きさに関しては試行錯誤の結果の決め打ちなので、他の環境でどうかについては考慮していない。気に入らなければ勝手に調整したらいい。

ちなみにこのスクリプトは検索結果に表示される広告の部分を覆い隠してしまいますので、広告も見るんだ俺は、って方は使わないように。

ついでにYahoopediaってのも実は作ったけどGooglepedia.jsをちょっといじれば済む話なのでYahooがお好みであればそのようにしてください。

Googlepedia

By mattz, 2009/10/09

Googlepedaの記事を読んで、似たようなもんがあるだろうと探しに行ったけど動きやしないので、それっぽいものを作った。

色々詰めが甘い(Windowサイズの変更とかまったく考慮してないし)けど、基本自分用なのでよし。

Wikipediaの表示内容については http://wikipedia.simpleapi.net/ を利用している。本家がいい人は、


url[j] = "http://wikipedia.simpleapi.net/api?output=html&keyword=" + kw[j];


url[j] = "http://ja.wikipedia.org/wiki/" + kw[j];

とかに変えればよろしい。

opera:config#UserPrefs|UserJavaScriptがONになっていればopera:config#UserPrefs|UserJavaScriptFile で指定されているフォルダに保存するか、サイ ト別の設定で指定したUser.js用のフォルダに保存することでとりあえず動く。はず。あとインラインフレームは有効で。添削歓迎。

ちなみに複数のキーワードで検索したときは最初の単語しか拾わない。複数単語のそれぞれについて色々やろうとした名残はソースに残っていますが、途中でめんどくさくなって投げました。はい。

表示の仕方とかは自身のディスプレイ環境に合わせて適当に調整してください。

ソースの


f.style.cssText = "position:absolute;left:700px;height:845px;top:180px;width:auto;background-color:white;z-index:"+(100-j);

この辺で調整できます。

追記

多少スクリプトに修正を入れたので調整の方法とかは変わってしまいましたが、ソース読めば分かると思うのでこのエントリはこのままで。

全角の英数字が大嫌い

By mattz, 2009/06/09

キライなんです。醜いから。なので、極力目に入らないよう次のようなスクリプトを書いた。

// ==UserScript==
// @exclude http://mattz.xii.jp/*
// ==/UserScript==
(
function(){
  document.addEventListener(
    'DOMContentLoaded',
    function(){
      document.body.innerHTML = document.body.innerHTML.replace(/([0-9A-Za-z ])/g,function(str,p1){
        return {'0':'0','1':'1','2':'2','3':'3','4':'4','5':'5','6':'6','7':'7','8':'8','9':'9',
          'A':'A','B':'B','C':'C','D':'D','E':'E','F':'F','G':'G','H':'H','I':'I','J':'J','K':'K',
          'L':'L','M':'M','N':'N','O':'O','P':'P','Q':'Q','R':'R','S':'S','T':'T','U':'U','V':'V',
          'W':'W','X':'X','Y':'Y','Z':'Z','a':'a','b':'b','c':'c','d':'d','e':'e','f':'f','g':'g',
          'h':'h','i':'i','j':'j','k':'k','l':'l','m':'m','n':'n','o':'o','p':'p','q':'q','r':'r',
          's':'s','t':'t','u':'u','v':'v','w':'w','x':'x','y':'y','z':'z','(':'(',')':')',' ':' '}[p1];
      });
    },false
  );
})();

書いたけど、一部のスクリプトを殺してしまうようなので、ご利用は計画的に。

例えば、このDrupalの新規エントリ作成画面のスクリプトが動きません。おかしいなと思ったら、@excludeに追加していただくとか、根本的な問題を修正していた だくとか、そもそも使うのをやめるとかしてください。

2009/10/21 追記

別のスクリプトを作っている過程で、このスクリプトの問題点が分かったので対処。

ついでに、regexp - 全角英数字を半角にの全半変換関数をまんまコピーして作り直した。

Bookmarklet - link them all!でいいじゃねーかって?おっしゃる通り。

// ==UserScript==
// ==/UserScript==
(
function(){
  var fascii2ascii = (function(){
    var cclass
     = '['+String.fromCharCode(0xff01)+'-'+String.fromCharCode(0xff5e)+']';
    var re_fullwidth = new RegExp(cclass, 'g');
    var substitution = function(m){
      return String.fromCharCode(m.charCodeAt(0) - 0xfee0);
    };
    return function(s){ return s.replace(re_fullwidth, substitution) };
  })();
  window.addEventListener(
    'DOMContentLoaded',
    function(){
      var x = document.evaluate('//', document, null, 7, null);
      var l = x.snapshotLength;
      var val;
      for(i = 0;i < l;i++){
        if('#text' == x.snapshotItem(i).nodeName){
          val = x.snapshotItem(i).nodeValue;
          x.snapshotItem(i).nodeValue = fascii2ascii(val);
        }
      }
    },false
  );
})();

1アクションではてなブックマークに追加する(Operaの場合)

By mattz, 2008/12/04

手順その1

はてなブックマーク > セットアップの下の方にある旧バージョンのようなブックマークレットを使いたい 場合のところにある「ブックマークする」をブックマークレットとして使えるようにします。リンクを右クリックして、ブックマークに追加→[詳細>>]ボタ ンを押す→パーソナルバーに表示みたいにするのが一番楽かと思います。分かる人は自分なりに適当にやってください。

手順その2

次のようなuser.jsを用意します。

// ==UserScript==
// @include       http://b.hatena.ne.jp/add?*
// ==/UserScript==
(
  function(){
    window.addEventListener(
      'DOMContentLoaded',
      function(){
        document.getElementById('bookmarklet-form').submit();
      },false
    );
  }
)();

ログインしてるかどうかの判定ははてなさんがやってくれるのでしていません。サブアカとか使い分けてる人はそれなりに判定入れるようにしてください。

user.jsがやってることは、[追加する]ボタンを勝手に押す(submitする)っていうだけです。

ページを表示中にパーソナルバーの[ブックマークする]ボタンを押すと、コメント/タグなしではてなブックマークに追加して、元のページに戻ってきます。

僕基本はてなブックマークは使ってないので自分で使う気はないんですけど。