Hatena::Groupsubtech

冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

 | 

Dec 15, 2007 (Sat)

Haiku のイラスト投稿を確実にする Greasemonkey script 21:12 はてなブックマーク - Haiku のイラスト投稿を確実にする Greasemonkey script - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

postDrawing がたびたびよびだしされないので、fotolife を GM_xhr で監視して投稿するようにするスクリプトです。

流れは

  1. ページロード時に fotolifeフィードを取得 (ほんとはおえかきに切り替えしたときにしたいけど、prototype かきかえができない……)
  2. currentForm がセットされるのを監視 (Haiku! をおすとセットされる)
  3. セットされたら fotolifeフィードを監視開始
  4. ページロード時の状況と比較して、増えたものをハイクから投稿されたものとみなし、postDrawing をキック

tumblr に投稿しなおすスクリプトより後に実行する必要があります。

なかなか投稿できないなぁってときは APIエラーだしていたりするので http://f.hatena.ne.jp/rkatom/feedアクセスして確認してみるとよいかもです

Firefox3 の Greasemonkey, unsafeWindow 内の prototype がとれない 20:05 はてなブックマーク - Firefox3 の Greasemonkey, unsafeWindow 内の prototype がとれない - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

なぜかわからないけど unsafeWindow 中のオブジェクトprototype がとれないっぽい……

unsafeWindow.Hatena.Haiku.EntryForm.prototype //=> undefined

でもって回避しようとして以下のようなコードを書いてみたけど

	function unsafeeval (code) {
		var d = new Deferred;
		unsafeWindow.___eval = arguments.callee;
		arguments.callee.callback = function (r) {
			delete unsafeWindow.___eval
			d.call(r);
		};
		unsafeWindow.location.href = "javascript:"+encodeURIComponent("___eval.callback("+code+")");
		return d;
	}

	unsafeeval("Hatena.Haiku.EntryForm.prototype").
	next(function (proto) {
		alert(proto.showDrawForm); // とれてる
		proto.showDrawForm = function () {
			alert("aaa"); // 実行されない orz
		};
		alert(proto.showDrawForm); // かきかえはできてる
	});

って感じになる。javascript:alert(Hatena.Haiku.EntryForm.prototype.showDrawForm) するとちゃんと設定された関数が表示されるんだけど、実行はされない (もとの関数はもちろんよばれない)。だれかたすけて>< これは Fxバグ?

prototype 以外への書きかえはもちろんうごく……

はてなハイクお絵描き機能で fotolife の変わりに tumblr をつかう 15:42 はてなブックマーク - はてなハイクのお絵描き機能で fotolife の変わりに tumblr をつかう - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

fotolife は容量制限が厳しくて、落書きを大量に投稿する、というときちょっと不安 (制限に逹っしたとき、消さないといけないなぁという不安) があるので、tumblr を使うようにする userscript を書きました。(月別の容量制限とかならいいんだけどなぁ)

(イラスト投稿を確実にする GM より前に実行する必要があります)

といっても、tumblrいまいち安定感 (いろんないみで) がないように思えるのでなんともいえない……

URL をうけとって保存してくれるサービス/そういうAPIがあるサービスなら簡単に対応できるんですが、そういうのあんまないっすね……

postDrawing がよばれないことが多々ある、そういうときはブックマークレットでよぶ

javascript:Hatena.Haiku.EntryForm.postDrawing("fotolife の該当画像URL");

書きはじめてから一定時間おきに fotolife の feed を監視して投稿する、みたいなのをつくろうとおもったけど、二重投稿とか考えるのがめんどくてやめた……

 | 

スポンサード リンク

書いてる人

cho45 (佐藤広央) (www.lowreal.net)

Perl, JavaScript, Ruby, HTML, CSS, Web etc


スポンサード リンク