Hatena::ブログ(Diary)

MediaLab Love このページをアンテナに追加 RSSフィード

07/16(Sun), 2006 mozex+greasemonkeyでFirefoxから直接2chブラウザを起動する

mozex+greasemonkeyでfirefoxから直接2chブラウザを起動する

mozexとは、プロトコルスキーマ*1ごとにアプリケーションを設定できるFirefoxの拡張機能です。telnetsshだけではなく、FTPクライアントダウンローダー、HTML内のTEXTAREA部分でエディタを指定できたりします。また独自のプロトコルスキーマを設定することも出来ます。

今回はその機能を使って2chスレッドあるいは板のURIから、2chブラウザを直接起動させたいと思います。

最初に断っておきますが、2chブラウザはJane Doe Styleを使います。Live2chでも何とかならないかと頑張りましたが、できませんでした。その顛末は後述します。ホットゾヌかちゅ〜しゃなども、おそらく無理だと思います。

まず、mozexをインストールしてください。mozdev.org - mozex: developmentからインストールできます。インストールしたら、再起動して拡張機能の設定を開いてください。そして、Universalタブをクリックし、Comma separated list of protocol schemesに h2chb 、Command (with no arguments)にJaneDoeStyleの実行ファイル絶対パスを入れてください。*2

f:id:Koumei_S:20060716082747j:image:w300

これで、mozexの設定は終りです。次はgreasemonkeyスクリプトインストールします。このスクリプトは、2chの板やスレッドURIhttp://...からh2chb://...に変えるものです。また、2chブラウザ起動のためのリンクも生成します。こちら(4718.user.js)からインストールしてください。

// ==UserScript==
// @name          hop 2ch for Jane Style
// @namespace     http://d.hatena.ne.jp/Koumei_S/
// @description	  helps to make link to Jane (Doe) Style[2ch browser] at firefox with mozex[firefox extension].
// @include       *
// @exclude       http://menu.2ch.net/bbsmenu.html
// @version       1.0
// ==/UserScript==
(function(){
	if(location.host.match(/([^(info|irc|movie|shop|epg|find)]\.2ch\.net)|(\.bbspink\.com)|(machi\.to)$/)){
		var linktojs = document.createElement("a");
		var Strboardorthread;
		linktojs.setAttribute('href',location.href);
		linktojs.protocol='h2chb:';
		if(is2chboard(location.pathname)){
			Strboardorthread = '\u677f';//板
		}
		else{
			Strboardorthread = '\u30b9\u30ec\u30c3\u30c9';//スレッド
		}
		linktojs.innerHTML='<span style="color:#000000;font-weight:bold;">\u3053\u306e' + Strboardorthread + '\u3092Jane Style\u3067\u8868\u793a\u3059\u308b</span><br>';
		//この(スレッド|板)をJane Styleで表示する
		document.body.insertBefore(linktojs,document.body.firstChild);
	}
	for(i=0;i<document.links.length;i++){
		var link = document.links[i];
		if(link.host.match(/([^(info|irc|movie|shop|epg|find)]\.2ch\.net)|(\.bbspink\.com)|(machi\.to)$/)){
			link.protocol='h2chb:';
			link.innerHTML = link.innerHTML.replace(/^http:/,"h2chb:");
		}
	}
})();
function is2chboard(Strpathname){
	return Strpathname.match(/^\/.*\/$/);
}

これで使えるようになります。あとは2chを開けば、左上にリンクが現われるので、それをクリックするとJane Doe Styleが起動します。もしくは2chへのリンクを開いても同じです。スクリーンショットを採りましたので、是非ご覧下さい。

f:id:Koumei_S:20060716082748j:image:small

f:id:Koumei_S:20060716082746j:image:small

hop 2ch for Live2ch

出来なかったので、気づいたことをメモしておきます。

  • h2chb://***.2ch.net/...では開けない。h2chb:/***.2ch.net/...では開ける。しかし、h2chb:/***.2ch.net/...というリンクは設定できない。
  • スレッドは開けても、板は開けない。
  • Live2chがすでに起動している場合、開けない。

hop 2ch作成中に気づいたこと

これもメモしておきます。

linkobject.setAttribute('href','2chb://' + location.host + '/');

ならばlinkobjectのhrefパラメータには、2chb://that.2ch.net/が入りそうなものだが、実際はhttp://that.2ch.net/2chb://that.2ch.net/というパラメータが入る。なぜか強制的にhttpから始まるようになる。2chb://ではなく、アルファベッドで始めるならば特に問題はない。RFCに規定があるのか?それともMozilla独自にやっているのか?

*1:httpとかftpなどのこと。もしかしたら一般的な名称ではないかもしれません。

*2フォルダ名にスペースが入っている場合、ダブルクオーテーションで囲む必要があります。

<ご指定のscriptタグは許可されていません。詳しくははてなダイアリーで使えるブログパーツをご覧ください>document.write(unescape("%3Cscript")+" src='http://widget.zenback.jp/?base_uri=http%3A//d.hatena.ne.jp/Koumei_S/&nsid=101367852098948126%3A%3A101414370889733769&rand="+Math.ceil((new Date()*1) * Math.random())+"'type='text/javascript'"+unescape("%3E%3C/script%3E"));<ご指定のscriptタグは許可されていません。詳しくははてなダイアリーで使えるブログパーツをご覧ください>