# # TechnoratiBlogInfo # # 2006/01/03 1.00 First release # package MT::Plugin::TechnoratiBlogInfo; use strict; my $apikey = 'your_api_key'; use MT; use MT::Template::Context; use MT::Blog; use MT::Request; use MT::Plugin; use MT::Util qw(encode_url); use XML::Simple; use LWP::Simple; #show plugin information to main menu eval("use Storable;"); if (!$@ && MT->can('add_plugin')) { my $plugin = MT::Plugin->new; $plugin->name('Technorati Blog Info'); $plugin->description('Show information of Technorati blog info.'); if (MT->version_number >= 3.2) { $plugin->version('1.00'); $plugin->author_name('Hajime Fujimoto'); $plugin->author_link('http://www.h-fj.com/blog/'); } MT->add_plugin($plugin); } # add tag MT::Template::Context->add_tag(TechnoratiInboundLinks => \&inbound_links); MT::Template::Context->add_tag(TechnoratiInboundBlogs => \&inbound_blogs); MT::Template::Context->add_tag(TechnoratiBlogWorth => \&blog_worth); MT::Template::Context->add_tag(TechnoratiRank => \&rank); # inbound_links main sub inbound_links { my ($ctx, $args) = @_; my $info = &_technorati_blog_info($ctx); my $inbound_links = $info->{document}->{result}->{inboundlinks}; $inbound_links = 0 if (ref($inbound_links) eq 'HASH'); $inbound_links; } # inbound_blogs main sub inbound_blogs { my ($ctx, $args) = @_; my $info = &_technorati_blog_info($ctx); my $inbound_blogs = $info->{document}->{result}->{inboundblogs}; $inbound_blogs = 0 if (ref($inbound_blogs) eq 'HASH'); $inbound_blogs; } # blog_worth main sub blog_worth { my ($ctx, $args) = @_; my $blogs = &inbound_blogs($ctx, $args); my $worth = $blogs * 564.64; $worth; } # rank main sub rank { my ($ctx, $args) = @_; my $info = &_technorati_blog_info($ctx); my $rank = $info->{document}->{result}->{weblog}->{rank} || 0; $rank; } # get technorati blog info sub _technorati_blog_info { my $ctx = shift; my $req = MT::Request->instance(); my $info = $req->cache('technorati_blog_info'); if (!$info) { my $blog = $ctx->stash('blog'); my $url = 'http://api.technorati.com/bloginfo?key=' . $apikey . '&format=xml&url=' . encode_url($blog->site_url); my $xml = get($url); $info = XMLin($xml); $req->cache('technorati_blog_info', $info); } $info; } 1;