M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2008年5月13日 22:52

TypePadの複数のblogのカテゴリの不足をレポートするPerlスクリプト

このエントリーをはてなブックマークに追加 mixiチェック

たとえば都道府県分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システムなら使えるんじゃなかろうか。

投稿 大野 義貴 [TypePad] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2469

コメントする