2008/01/31


Firefoxをshellの様に扱えるグリモン「Minibuffer ? Userscripts.org」で使える、Fuck!コマンド「fuck」書いた。 使い方は、はてなブックマークコマンドとほぼ同じ。
目障りな記事を見つけたら :fuck とすれば良い。 もしくはpinを付けて :pinned-link | fuck とすればpinを付けたリンクが全部「Fuck!」になる。
なお :pinned-node | fuck とすれば、pinが指すノード自体が削除される。
例えばtwitterなんかで
minibuffer-fuck1
followerの発言をpinしてfuckしようもんなら
minibuffer-fuck2
こんなんになっちゃう!
※followerの皆様ごめんなさい。

ソースはこんな感じ // ==UserScript==
// @name           Minibuffer Fuck Command
// @namespace      Minibuffer.Fuck.Command
// @description    add fuck command to Minibuffer.
// @include        http://*
// @include        https://*
// ==/UserScript==

window.Minibuffer.addCommand({
  name: 'fuck',
  command: function(stdin){
    if (stdin.length == 0) {
      document.open();
      document.write('<h1>Fuck!</h1>');
      document.close();
    } else {
      stdin.forEach(function(obj){
        if (("" + obj).match(/^https?:.*/)) {
          var links = document.getElementsByTagName('a');
          for(var n = 0; n < links.length; n++) {
            if (links[n].href == obj) {
              links[n].href = 'javascript:void(0);';
              links[n].addEventListener('click', function() {alert(this.innerHTML)}, false);
              links[n].innerHTML = 'Fuck!';
            }
          }
        } else if (typeof obj == 'object') {
          try {
            obj.parentNode.removeChild(obj);
          } catch(e) { }
        }
      });
    }
    return stdin;
  }
});

インストール:minibuffer.fuck.user.js

てか使い道なくね?
Posted at by




デジャブかもしれません
twitterを使ってみんなでアイデアを共有するサービス、ひらめいったーはてなスターサイト上で、twitterユーザのアイコンが表示されるようにするグリモン書いた。

続きを読む...

Posted at by




Firefoxをshellの様に扱えるグリモン「Minibuffer ? Userscripts.org」で使える、はてなブックマークコマンド「hatena-bookmark」書いた。 Minibufferは、LDRizeと併用すると「pinned-link」や「pinned-node」というルートコマンド(フィルタコマンドではない)が追加される。
例えば、LDRizeでpinを付けたリンクをタブで開くには :pinned-link | open とすれば良い。ここで注意しなければならないのがグリモンの設定で
  • Minibuffer
  • LDRize
  • ...LDRizeプラグインもしくはMinubufferプラグイン...
という順番にしておかないと、「pinned-link」や「pinned-node」が正しく動かなくなるので注意。

この順番になるように、以下のスクリプト入れると、「hatena-bookmark」コマンドが追加される。
LDRizeを入れておくと、ブログ等の記事1つずつにpinが付けられるようになっていて、そのpinを付けたものに対してパイプ形式にコマンドを繋げられる。
例えば、pinをつけたリンクのGoogleキャッシュを開くには :pinned-link | google-cache | open とすればよい。
※pinをつけるには「p」を押す。

「hatena-bookmark」の使い方は、何もpinしていない状態で「Alt-x」(ALTキーを押しながらx)を押して :hatena-bookmark とすると、現在見ているページのはてなブックマーク登録画面が立ち上がる。またpinを付けた状態で :pinned-link | hatena-bookmark とすると、pinが指すリンクのブックマーク登録画面が立ち上がる。
なお :pinned-node | hatena-bookmark では、pinしているHTMLノードの先頭にあるリンクを使ってブックマーク登録画面を表示する。
ちなみにソースはこんな感じ。 // ==UserScript==
// @name           Minibuffer Hatena Command
// @namespace      Minibuffer.Hatena-Command
// @description    add hatena-bookmark command to Minibuffer.
// @include        http://*
// @include        https://*
// ==/UserScript==

var SCRIPT_VERSION  = 'Thu, 15 Nov 2007'

var Minibuffer_Hatena = new function() {
    var self = this;

    this._run_bookmark = function(u, t) {
        var link;
        if (t) link = 'http://b.hatena.ne.jp/add?mode=confirm&is_bm=1&title='+escape(t)+'&url='+escape(u);
        else   link = 'http://b.hatena.ne.jp/add?mode=confirm&is_bm=1&url='+escape(u);

        setTimeout(function(){
            window.open(link, '_blank', 'width=550,height=600,resizable=1,scrollbars=1');
        }, 10);
    }

    this.bookmark = function ( stdin ) {
        if (stdin.length == 0) {
            self._run_bookmark(location.href, document.title);
        } else {
            stdin.forEach(function(obj){
                if (typeof obj == 'string' && obj.match(/^https?:.*/)) self._run_bookmark(obj);
                else if (typeof obj == 'object') {
                    try {
                        var links = obj.getElementsByTagName('a');
                        for(var n = 0; n < links.length; n++) {
                            if (links[n].href.match(/^https?:.*/)) {
                                self._run_bookmark(links[n].href);
                                break;
                            }
                        }
                    } catch(e) { }
                }
            });
        }
    };
    this.condition = function() { return true; };
};

if (window.Minibuffer) {
    Minibuffer.addCommand({
        "hatena-bookmark": Minibuffer_Hatena.bookmark,
    });
}

インストール:minibuffer.hatena.user.js
ちなみに、ファイル名が「minibuffer.hatena.bookmark.user.js」になっていないのは、いずれ他のコマンドも作って行きたいから...。

あ、あと記事とは無関係ですが、今日CodeReposのLDRize-SITEINFO書いときました。

追記1
bookmarkコマンドで、stdinを返すように修正した。
これで :pinned-link | hatena-bookmark | clear-pin とか出来る様になった。

追記2
申し訳ない。objがtypeofでstringとして戻るパターンとobjectとして戻るパターンがあるようです。修正しました。
Posted at by