読者です 読者をやめる 読者になる 読者になる

MediaLab Love Chapter 2

Assistance of MediaLab Love about Javascript test and more...

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

greasemonkey

mozexとは、プロトコル・スキーマ*1ごとにアプリケーションを設定できるFirefox拡張機能です。telnetやsshだけではなく、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

これで、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へのリンクを開いても同じです。スクリーンショットを採りましたので、是非ご覧下さい。

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

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

hop 2ch for Live2ch

greasemonkey memo

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

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

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

greasemonkey memo

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

  • 最初は、プロトコル・スキーマを2chb://にしようと思ったがうまくいかず。たとえばlocation.hostがthat.2ch.net、の場合
linkobject.setAttribute('href','2chb://' + location.host + '/');

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