--- tamtam/tamtam2socialtext.pl 2007/12/12 12:12:21 5 +++ tamtam/tamtam2socialtext.pl 2007/12/12 12:48:42 6 @@ -8,23 +8,42 @@ use Regexp::Common qw/balanced/; use Socialtext::Resting; use Encode; +use HTTP::Date; use Data::Dump qw/dump/; +my $max = 2; + my $page; +my $page_date; find({ wanted => sub { my $path = $File::Find::name; return unless -f $path; + warn "# $path\n"; my $ref = XMLin( $path ) || die "can't open $path: $!"; - $page->{ $ref->{name} } = $ref->{widgets}->{widget}->{data}; - warn dump( $ref->{widgets}->{widget}->{data} ); + + my $name = $ref->{name} || die "no name in $path"; + my $date = $ref->{meta}->{LastModified}; + if ( ! $date ) { + warn "SKIP: no LastModified in $path $name"; + return; + } + my $data = + $ref->{widgets}->{widget}->{data} || + $ref->{widgets}->{widget}->{Body}->{data} || + die "no data in $path ",dump( $ref ); + + $page->{ $name } = [ $data, $date ]; + + #warn dump( $ref ); }, }, shift @ARGV || '.'); +my @pages = ( keys %$page ); -warn "found following pages: ", join(", ", keys %$page),"\n"; +warn "found following pages: ", join(", ", @pages),"\n"; my $Rester = Socialtext::Resting->new( username => 'tamtam', @@ -49,8 +68,13 @@ return $with . $what . $with; } +my $count = 0; + foreach my $name ( keys %$page ) { - my $body = $page->{$name} || die "no content for page $name"; + last if $count++ == $max; + + my ( $body, $date ) = @{ $page->{$name} }; + $date = time2str( $date ); $body =~ s/\Q[[TableOfContents]]\E/{toc}/gs; $body =~ s/\Q[[BR]]\E/\n/gs; @@ -61,9 +85,24 @@ Encode::_utf8_off( $body ); - $Rester->put_page( $name, $body ); - $Rester->put_pagetag( $name, 'TamTam' ); + my @tags = ( 'TamTam' ); + + if ( $name =~ m!/! ) { + my @page_tags = split(m!/!, $name); + pop @page_tags; # remove page name + push @tags, @page_tags; + $name =~ s!/!_!g; + } + $Rester->put_page( $name, { + content => $body, + date => $date, + }); print "+ $name\n"; + foreach ( @tags ) { + $Rester->put_pagetag( $name, $_ ); + print "+ $name [$_]\n"; + } + }