#!/usr/bin/perl -w use DB_File; use XMLRPC::Lite; use POSIX; use XML::RSS; use strict; use vars qw(%title_cache); my %hits; tie %hits, 'DB_File', '/home/mattb/hackdiary_logs/archive_hits', O_RDONLY; my $count = $ARGV[0] || 100; my $rss = new XML::RSS(version=>'1.0'); $rss->channel(title=>"Top hackdiary items",link=>"http://www.hackdiary.com"); my @entries = sort { $hits{$b} <=> $hits{$a} } keys %hits; foreach my $url (@entries) { my $title = get_title($url); my $count = $hits{$url}; $url = "http://www.hackdiary.com".$url; $rss->add_item("title"=>$title,"link"=>$url,"description"=>$count); } print $rss->as_string; my $proxy = XMLRPC::Lite->proxy("http://www.hackdiary.com/mt-xmlrpc.cgi"); my $result = $proxy->call("mt.publishPost",20,"Matt Biddulph","biddulph")->result; sub get_title { my ($url) = @_; my ($id) = ($url =~ /\/archives\/([0-9]+)\.html/); if(exists($title_cache{$id})) { return $title_cache{$id}; } else { my $post = $id + 0; my $proxy = XMLRPC::Lite->proxy("http://www.hackdiary.com/mt-xmlrpc.cgi"); my $result = $proxy->call("metaWeblog.getPost",$post,"Matt Biddulph","biddulph")->result; my $title = $result->{'title'}; $title_cache{$id} = $title; return $title; } }