/[socialtext-import]/tamtam/tamtam2socialtext.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /tamtam/tamtam2socialtext.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 5 by dpavlin, Wed Dec 12 12:12:21 2007 UTC revision 6 by dpavlin, Wed Dec 12 12:48:42 2007 UTC
# Line 8  use File::Find; Line 8  use File::Find;
8  use Regexp::Common qw/balanced/;  use Regexp::Common qw/balanced/;
9  use Socialtext::Resting;  use Socialtext::Resting;
10  use Encode;  use Encode;
11    use HTTP::Date;
12  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
13    
14    my $max = 2;
15    
16  my $page;  my $page;
17    my $page_date;
18    
19  find({  find({
20          wanted => sub {          wanted => sub {
21                  my $path = $File::Find::name;                  my $path = $File::Find::name;
22                  return unless -f $path;                  return unless -f $path;
23    
24                  warn "# $path\n";                  warn "# $path\n";
25                  my $ref = XMLin( $path ) || die "can't open $path: $!";                  my $ref = XMLin( $path ) || die "can't open $path: $!";
26                  $page->{ $ref->{name} } = $ref->{widgets}->{widget}->{data};  
27                  warn dump( $ref->{widgets}->{widget}->{data} );                  my $name = $ref->{name} || die "no name in $path";
28                    my $date =  $ref->{meta}->{LastModified};
29                    if ( ! $date ) {
30                            warn "SKIP: no LastModified in $path $name";
31                            return;
32                    }
33                    my $data =
34                            $ref->{widgets}->{widget}->{data} ||
35                            $ref->{widgets}->{widget}->{Body}->{data} ||
36                            die "no data in $path ",dump( $ref );
37    
38                    $page->{ $name } = [ $data, $date ];
39    
40                    #warn dump( $ref );
41          },          },
42  }, shift @ARGV || '.');  }, shift @ARGV || '.');
43    
44    my @pages = ( keys %$page );
45    
46  warn "found following pages: ", join(", ", keys %$page),"\n";  warn "found following pages: ", join(", ", @pages),"\n";
47    
48  my $Rester = Socialtext::Resting->new(  my $Rester = Socialtext::Resting->new(
49          username => 'tamtam',          username => 'tamtam',
# Line 49  sub surround { Line 68  sub surround {
68          return $with . $what . $with;          return $with . $what . $with;
69  }  }
70    
71    my $count = 0;
72    
73  foreach my $name ( keys %$page ) {  foreach my $name ( keys %$page ) {
74          my $body = $page->{$name} || die "no content for page $name";          last if $count++ == $max;
75    
76            my ( $body, $date ) = @{ $page->{$name} };
77            $date = time2str( $date );
78    
79          $body =~ s/\Q[[TableOfContents]]\E/{toc}/gs;          $body =~ s/\Q[[TableOfContents]]\E/{toc}/gs;
80          $body =~ s/\Q[[BR]]\E/\n/gs;          $body =~ s/\Q[[BR]]\E/\n/gs;
# Line 61  foreach my $name ( keys %$page ) { Line 85  foreach my $name ( keys %$page ) {
85    
86          Encode::_utf8_off( $body );          Encode::_utf8_off( $body );
87    
88          $Rester->put_page( $name, $body );          my @tags = ( 'TamTam' );
89          $Rester->put_pagetag( $name, 'TamTam' );  
90            if ( $name =~ m!/! ) {
91                    my @page_tags = split(m!/!, $name);
92                    pop @page_tags; # remove page name
93                    push @tags, @page_tags;
94                    $name =~ s!/!_!g;
95            }
96    
97            $Rester->put_page( $name, {
98                    content => $body,
99                    date => $date,
100            });
101          print "+ $name\n";          print "+ $name\n";
102            foreach ( @tags ) {
103                    $Rester->put_pagetag( $name, $_ );
104                    print "+ $name [$_]\n";
105            }
106    
107  }  }
108    

Legend:
Removed from v.5  
changed lines
  Added in v.6

  ViewVC Help
Powered by ViewVC 1.1.26