Google急上昇ワードランキングブログパーツ
GIGAZINEに載っていた「Google急上昇ワードランキングブログパーツ」
というサービス。
http://www.blogdeco.jp/google_word/
Google Trends(http://www.google.co.jp/trends/hottrends?sa=X)の結果を
ランキング上昇下降を付加して掲載するサービスらしい。
ちょっと自分でも作れるかやってみた。
実際に使うわけではないので
前回の更新との比較が出るだけのシンプルな作りにした。
本家は1日前とか出せるようだけど
差分ファイルを一つ作るだけで改造できるかと。
#!/usr/bin/perl
use strict;
my $log = 'trends.log';
my @trends;
my @html= `wget -O- -q 'http://www.google.co.jp/trends/hottrends?sa=X'`;
for my $l (@html){
if($l =~ m/num>(\d+)\..*X\">(.*)<\/a>/){
push(@trends,"$1\t$2\n");
}
}
my $outtxt;
if( -e $log ){
open my $fh , "<$log" or die ($?);
my @logtrends = <$fh>;
for my $t (@trends){
chomp $t;
my $rank;
my $word;
if($t =~ /(.*)\t(.*)/){
$rank = $1;
$word = $2;
}else{print "cant read $log";exit;}
my $logrank;
my $logword;
my $flag=1;
for my $logt (@logtrends){
chomp $logt;
if($logt =~ /(.*)\t(.*)/){
$logrank = $1;
$logword = $2;
}else{print "cant read $log";exit;}
if($logword eq $word){
my $diffrank = $logrank - $rank;
if($diffrank > 0){
#up
$outtxt .= $t . "\t" . "$diffrank UP!\n";
$flag = 0;
}elsif($diffrank < 0){
#down
$outtxt .= $t . "\t" . "$diffrank DOWN!\n";
$flag = 0;
}elsif($diffrank == 0){
#not change
$outtxt .= $t . "\t" . "-\n";
$flag = 0;
}
}
last if($flag == 0);
}
if($flag == 1){
$outtxt .= $t . "\t" . "NEW!\n"
}
}
}else{
open my $oh ,"> $log" or die($?);
print $oh @trends;
exit;
}
open my $oh ,"> $log" or die($?);
for my $oline (@trends){
print $oh $oline . "\n";
}
print $outtxt;