2007-01-27

wp-mta で画像回転すると EXIF が落ちる

yuriko による 18:21:18 の投稿
カテゴリー: WordPressハック
タグ: ,

ここんところ「旅行記」じゃなくて「WordPress ハック日記」になってしまっています;-) 来週金曜日 (2月2日) から関西方面に行くので、何らかの旅行レポートができると思います。行程はそろそろ出します。

さて、わたしの利用している、モブログ投稿スクリプト wp-mta に画像回転をさせたとき不具合があることが分かりました。それは、「GPS 情報を付与した画像を回転させたとき、回転後の画像に EXIF が付与されない」ということです。この結果、Ktai Location で EXIF データーが読み取られず、位置情報がプロットできなくなります。

サムネールを作ったときも EXIF を書いていませんが、Ktai Location では a タグでリンクされてるオリジナル画像 (縮小前) を読むことで EXIF 情報を取り出しています。ですが、画像を回転したときはオリジナル画像 (回転前) はどこにも保存されていないので、こういう問題が起きてしまいます。

回転後の画像に EXIF データーを付与して保存すればいいんですが、PHP の画像関数でどうやっていいのか良く分かりません……。当面は「制限事項」として扱うことになりそうです。

で、こうやってバグ情報をウェブログで書くのはちょっと面倒な気がしてきました。スクリプト/プラグインの宣伝になっていいのですが、SourceForge のバグトラッキングシステムを使った方がいいかも。

2007-01-24

push 型モブログ投稿スクリプト wp-mta 0.3.0 リリース

yuriko による 23:50:32 の投稿
カテゴリー: WordPressハック
タグ: , ,

メールサーバーに仕込んで、携帯電話・PHS から push 型でモブログ投稿を行うスクリプト wp-mta のバージョン 0.3.0 をリリースしました。今回から WordPress Plugins/JSeries での配布とします。

配布ページ
WordPress Plugins/JSeries » wp-mta

設置方法・使用方法などは配布ページに記載してありますので、ここではそれ以外の小話を書いておきます;-)

改善点

なんといっても、WordPress コアの修正が不要になった点が大きいです。いくらシェルアカウントが必要な玄人向けスクリプトとは言え、「functions-post.php の修正が必要です」なんてスクリプトは配れませんから……。wp-shot にならい、$allowedposttags を設定してやることで、div 要素の class 属性を残したまま wp_insert_post() 経由で投稿することができました。なお、犯人は balanceTags() じゃなくて kses.php の関数群でした;-)

さらに、サーバー側で画像回転する機能を付けましたが、複数の画像があるとき回転方向を画像ごとに選択できるようにしています。これは、他のモグログ投稿スクリプトにはない特徴でしょう。そのかわり、回転方向を指示する文字列の文法が複雑ですが;-)

(続きを見る…)

2007-01-19

wp-mta はしばしお待ちくらはい

yuriko による 01:41:08 の投稿
カテゴリー: WordPressハック
タグ:

位置情報プラグインは2本リリースしたのですが、ウチで使っている「push 型モブログ投稿スクリプト wp-mta」については、もうちょっと練ってからリリースします。

実は、他のプラグインで何かエラーが発生した場合、メールサーバーには deferral が返されて、再配信されてしまうため、メールがループしてしまいます。もし、wp_insert_post() 実行後にエラーが発生していると、投稿処理は終っているため、投稿が何重にも繰り返されてしまいます。プラグインの開発中はどうしてもエラーが発生するため、複数投稿が起きてしまいました。

これではマズいため、多重投稿の防止機能を付ける必要があります。本当ならば、WordPress コアが PHP スクリプトエラーで終了するときの終了コードをいじって、qmail でハードエラーを表す100とできればいい (こうすれば再配信はしない) のですが、どうやればいいかよく分かりません;-) そこで、wp-mta 側で多重投稿を検出し、その場合はハードエラーで終了 (exit(100);) すればいいわけです。こうすれば、再配信も終了するため、メールループにはなりません。

さて、問題はどうやって多重投稿を検出するか。wp-mta では、メールの Date フィールドから投稿時刻を決定しているため、投稿時刻が同じならば多重投稿と考えていいでしょうか。タイトル (Subject フィールドから抽出) が同じである、という条件も入れたいところですが、特殊記号などは DB に入るときに文字が化ける場合もあるので、多重投稿を防げない場合もありそうです。

あ、ここで、Date フィールドが欠けているメールについて考慮してないことに気がつきました……。Date をつけないようなヤクザな MUA からのメールは破棄することにしていいかも;-)

2007-01-17
雨

wp-mta位置情報テスト

yuriko(d) による 19:47:02 の投稿
カテゴリー: WordPressハック
タグ: ,

今度は位置情報を入れてテスト。多摩区の誇るべき癒しスポット生田緑地です。

HTTP://i.mapfan.com/m.cgi?uid=NULLGWDOCOMO&F=AP&M=E139.33.48.2N35.36.20.4&SC=SHH00YI&AR=07900

[追記] 緯度 (latitude) の読み取りが不正確なようだったので、修正しました。修正後の Lat_Long = 35.608797685462,139.56014977271

[さらに追記] 同一地点テストのため、もう1つのテストに位置情報を揃えました。

wp-mtaテスト

yuriko(w) による 19:39:44 の投稿
カテゴリー: WordPressハック
タグ:

投稿テストです。

[追記] どうやら問題ないようです。

2006-12-17
くもり時々雨

wp-mta ベータ版 0.20

yuriko による 11:07:57 の投稿
カテゴリー: WordPressハック
タグ: , ,

wp-shot v0.1 リリースに触発されまして、大幅修正中の wp-mta を未完成ながら公開してしまいます。これは、ウチで使っているモブログ投稿スクリプトで、メールサーバーに届いたタイミングで投稿処理が行なわれる仕組みを採用しています。他のスクリプトのように POP3 でメールを読みに行くものとは全く動作原理が異なります。

現在、WordPress コアの修正が必要であることと、まだテストが不十分なので、実戦投入は避けてください。むしろ、wp-shot に対するコードの貢献が目的です。

現在、ドキュメントはまったく附属していません。概要・設置方法については前バージョンのリリース案内を参照してください。

コードを見てもらうと分かりますが、メールアドレスの抽出部分はかなり独特の方法ですが、相当変なアドレスでも判別可能です。メールアドレスにコンマ(,)を含んでも大丈夫なのはすごいところです。ただし、かっこの扱い (メールアドレスにおけるかっこはコメントを意味します) が RFC2822 には厳密に準拠しておらず、少しバグがあります。例えば From: hoge(comment)hoge@example.jp という From フィールドの記述は不正ですが hogehoge@example.jp として抽出してしまいます。ちなみに、From: hoge(comment)@example.jp という記述ならば正当で、hoge@example.jp というメールアドレスを意味します。

かっこが入れ子になっているときも挙動不審です。

2006-12-07
くもり

wp-mta 大幅修正中

yuriko による 22:13:31 の投稿
カテゴリー: WordPressハック
タグ:

wp-mta の大幅修正を行なっています。もともと SOMY さんの改造版を使っていましたが、WordPress 2.0.5. ME 附属の wp-mail.php のコードを取り込んだり、サムネール生成を WordPress コアのもの (wp_create_thumbnail() 関数) を利用したりと、大幅な改善を行なっています。

ただいまテストしていますので、完成すれば公開いたします。

[追記] 写真に廻り込みを行なわせるための class 属性が消されてしまっています。投稿処理は以下のようなコードですが、このどこかで class 属性が取り除かれているようです。この直前までは存在しますから。

	$post_status = 'publish';
	$post_data = compact('post_content','post_title','post_date','post_date_gmt','post_author','post_category', 'post_status');
	$post_data = add_magic_quotes($post_data);
	$post_ID = wp_insert_post($post_data);
	if (! $post_ID) {
		echo "we couldn't post, for whatever reason.\n";
		exit(103);
	}
	do_action('publish_phone', $post_ID);

2006-12-06

wp-mtaてすと

yuriko(d) による 14:16:27 の投稿
カテゴリー: WordPressハック
タグ:

wp-mta 設置し直したのでテスト。コードも少々いじってます。

[追記] 問題ないようです。次は写真付きメールのてすと。

2006-09-07

wp-mta + wp-eznavi てすと

yuriko(d) による 02:00:28 の投稿
カテゴリー: WordPressハック
タグ: ,

てすとメェルです。夜中に生田緑地に行ったわけでは有馬線。

HTTP://i.mapfan.com/m.cgi?uid=NULLGWDOCOMO&F=AP&M=E139.33.48.2N35.36.20.4&SC=SHH00YI&AR=07900

[追記] これは失敗したみたいです。修正して位置情報を入れておきました。

2006-08-09

push型モブログ投稿スクリプトwp-mta.php

yuriko による 00:53:37 の投稿
カテゴリー: WordPressハック,サイト更新情報
タグ: , ,

ウチで使っているモブログ投稿スクリプトは、wp-mail.php サムネイル+機能強化版を改造して使っているわけですが、その改造版も wp-eznavi.php 改造版にならって配布することにします。

wp-mta.tar.gz (SHA1 ダイジェスト: 700da25248e285cc4165a37f71617bd4a3fb621f)
(うっかり消してしまったので、2006-12-02 17:35 現在ダウンロードできません復活させました)
WordPress Plugins/JSeries からダウンロードしてください。

7月28日〜30日の3-3-SUN フリーきっぷ旅行で使っていたものそのままではなく、コードをいじってあるため、バグを作り込んでいる可能性はあります:-)

概要

  • その他のモブログスクリプトと違って、メールサーバーから push 型で起動します。いちいちブラウザで wp-mail.php を呼び出す必要はありません。
  • ブラウザが不要なので、メール送信できればキャリアおよび機種を問いません。
  • 設置するには、メールサーバーへのシェルアカウントが必要です。
  • POP で読み出す処理はコメントアウトしてあるので、ソース修正すれば POP 読み出しタイプに改造可能。

(続きを見る…)