« | Home | »

2005.11.24

post2blogでカテゴリー設定

メールからブログ投稿できるツールとして、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

コメント

コメントはありません

コメントフィードを購読する

コメント投稿





コメント本文に次の(X)HTMLタグを使えます:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)