TypePadの複数のblogのカテゴリの不足をレポートするPerlスクリプト
スポンサードリンク
たとえば都道府県分47個のblogがTypePadにあったとして、それらのblog群のカテゴリに相違がある場合、不足しているとしてレポートするPerlスクリプトです。
僕以外の誰に役立つかは知らん。
Filename: check_category.pl
#!/usr/bin/perl use strict; use warnings; use utf8; binmode STDOUT=>':utf8'; my $bloglist = { '愛知県' => 1, '愛媛県' => 2, '茨城県' => 3, '岡山県' => 4, '沖縄県' => 5, '岩手県' => 6, '岐阜県' => 7, '宮崎県' => 8, '宮城県' => 9, '京都府' => 10, '熊本県' => 11, '群馬県' => 12, '広島県' => 13, '香川県' => 14, '高知県' => 15, '佐賀県' => 16, '埼玉県' => 17, '三重県' => 18, '山形県' => 19, '山口県' => 20, '山梨県' => 21, '滋賀県' => 22, '鹿児島県' => 23, '秋田県' => 24, '新潟県' => 25, '神奈川県' => 26, '青森県' => 27, '静岡県' => 28, '石川県' => 29, '千葉県' => 30, '大阪府' => 31, '大分県' => 32, '長崎県' => 33, '長野県' => 34, '鳥取県' => 35, '島根県' => 36, '東京都' => 37, '徳島県' => 38, '栃木県' => 39, '奈良県' => 40, '富山県' => 41, '福井県' => 42, '福岡県' => 43, '福島県' => 44, '兵庫県' => 45, '北海道' => 46, '和歌山県' => 47, }; my $categories_sum = {}; my $categories_hash = {}; foreach my $blog ( keys %$bloglist) { my $blog_id = $bloglist->{$blog}; my $categories = category_list($blog_id); foreach my $item ( @$categories ) { $categories_sum ->{ $item->{categoryName} }++; $categories_hash->{ $blog }->{ $item->{categoryName} } = 1; } } foreach my $blog ( sort keys %$bloglist ) { print "$blog\n"; foreach my $category ( sort keys %$categories_sum ) { if ( !$categories_hash->{ $blog }->{ $category } ) { print "$category\n"; } } print "\n"; } exit; sub category_list { my $blog_id = shift; my $xmlrpc = TypePadXMLRPC->new(); $xmlrpc->set(); # カテゴリリスト取得 $xmlrpc->set_blogid( $blog_id ); my $categories_list = $xmlrpc->mt_getCategoryList(); return $categories_list; } package TypePadXMLRPC; use XMLRPC::Lite; sub new{ return bless{ _DATA => { } }, shift; } sub dataref { $_[0]->{ _DATA } } sub set { my $self = shift; $self->dataref->{api} = 'http://www.typepad.jp/t/api'; $self->dataref->{username} = 'hogehoge'; $self->dataref->{password} = 'fugaguga'; return; } sub set_blogid { my $self = shift; my $blogid = shift; $self->dataref->{blogid} = $blogid; } sub mt_getCategoryList { my $self = shift; my $categories_list = XMLRPC::Lite -> proxy( $self->dataref->{api} ) -> call('mt.getCategoryList', $self->dataref->{blogid}, $self->dataref->{username}, $self->dataref->{password}, ) -> result; return $categories_list; } 1;
実行結果は、もう不足を直しちゃったあとなので提示できません……
MovableTypeのXML-RPCインターフェースと同じAPIを持つblogシステムなら使えるんじゃなかろうか。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2469
コメントする