#!/usr/bin/perl # Radio2Blosxom # Author: Sam Ruby # Version: 0+1i # Home: http://radio.weblogs.com/0101679/stories/2002/08/11/radio2blosxom.html # Usage: # # From Radio Tools->Developers->Quick Script: # # file.writeWholeFile( "c:\\exportedWeblog.xml", # table.tableToXml( radio.weblog.init() ) ) # # From the blosxom $datadir: # perl radio2blosxom.pl exportedWeblogs.xml use XML::Parser; use HTTP::Date; $p = new XML::Parser(Handlers => {Start => \&handle_start, Char => \&handle_char, End => \&handle_end}); $p->parsefile($ARGV[0]) || die; @context = (); sub handle_start { my ($expat, $tag, %attr) = @_; push @context, $attr{name} || $tag; $title = $attr{value} if $tag eq 'string' and $attr{name} eq 'title'; $data = ""; } sub handle_char { $data .= @_[1]; } sub handle_end { $tag = pop @context; return if $context[1] ne "posts"; $timestamp = str2time($data) if $tag eq "dateCreated"; $body=$data if $tag eq "body"; if ($#context == 1) { $tag =~ s/^0*//; open BLOG, ">$tag.txt"; print BLOG "$title\n$body"; close BLOG; utime $timestamp, $timestamp, "$tag.txt"; $title = ""; } }