2005.11.24
post2blogでカテゴリー設定・・・(Movabletype)
メールからブログ投稿できるツールとして、post2blogを愛用させていただいている。
post2blogもカテゴリー設定機能がサポートされた新版がでたが、設定できるカテゴリーは固定で都合が悪い。 記事に複数のカテゴリーを設定することは、あまり無いと思えるが、カテゴリーを1つは設定したい。
そこで、メールの第1行目に Cat=山登り などと書いて、カテゴリーが設定できるように改造を試みた。
まず、下記の赤字部のように、$category_id の値は”0″にし、@categoriesの行はコメントアウトする。
my $blog_id = 1; my $username = 'Melody'; my $password = 'Nelson'; my $category_id = 0; #my @categories = (2, 3, 4); my $parse_path = '/Users/Shared/post2blog';
次に、メールから設定したいカテゴリーの語句を取り出すため、下記の赤字部を追加、修正する。
my $cont; my $dummy; my $setName; foreach (@texts) { open(CONT, $_); while (<CONT>) { s/rn/n/g; s/r/n/g; if(/^Cat=/){ ($dummy,$setName) = split(/=/); $setName =~ s/n//g; $setName = $j->set($setName)->utf8; }else{$cont = $cont.$_;} } close(CONT); }
さらに、新しく投稿をPostしてカテゴリーをPostする間に、現在登録されているカテゴリーのリストを求めて、語句が一致するcategoryのidを求め、得られたidを引き継ぐようにする。
my $ret = $rpc->call('metaWeblog.newPost', $blog_id, $username, $password, { 'title' => $title, 'description' => $description, 'mt_text_more' => $text_more }, 0, ); my $post_id = $ret->result(); $ret = $rpc->call('mt.getCategoryList', $blog_id, $username, $password, ); my $ref =$ret->result(); my $catID; my $catName; my %tmp; foreach(@$ref){ %tmp = %$_; $catID = $tmp{"categoryId"}; $catName = $tmp{"categoryName"}; $catName = $j->set($catName)->utf8; if($catName eq $setName){$category_id = 1;last;} } if ($category_id) { my $cats; $cats = [{ 'categoryId' => $catID, 'isPrimary' => 1, }]; # foreach my $cat_id (@categories) { # push @$cats, { 'categoryId' => $cat_id }; # } $ret = $rpc->call('mt.setPostCategories', $post_id, $username, $password, $cats, ); } $ret = $rpc->call('metaWeblog.editPost', $post_id, $username, $password, { 'title' => $title, 'description' => $description, 'mt_text_more' => $text_more }, 1 );
これで、メールの1行目に Cat=History などと予め登録されている、カテゴリーの語句を書くと、そのカテゴリーが設定された投稿となる。
Cat=の文がなければ、カテゴリーは当然無設定になる。
最後に、私が現在使っているpost2blogの修正版を以下に付けて置く。
カテゴリー機能付きpost2blog
コメント
コメントフィードを購読する
コメント投稿