generate tree of items
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 25 Jul 2012 22:54:41 +0000 (00:54 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 25 Jul 2012 22:54:41 +0000 (00:54 +0200)
zotero.pl

index f3a0507..6194153 100755 (executable)
--- a/zotero.pl
+++ b/zotero.pl
@@ -10,17 +10,48 @@ use Data::Dump qw(dump);
 my $UserID = $ENV{UserID} || die "usage: UserID=1234 key=abcd $0";
 my $key    = $ENV{key}    || die "key required";
 
+my $FETCH  = $ENV{FETCH}  || 0;
+
 my $url = "https://api.zotero.org/users/$UserID/items?key=$key&format=atom&content=json&order=dateModified&sort=desc";
 
 my $file = "$UserID.atom";
 
 warn "# $url\n";
-if ( mirror( $url => $file ) == RC_NOT_MODIFIED ) {
+if ( $FETCH && mirror( $url => $file ) == RC_NOT_MODIFIED ) {
        warn "not modified";
 #      exit 0;
 }
 
 my $feed = XMLin( $file );
+#warn "# feed ",dump($feed);
+
+my $tree;
+
+foreach my $entry ( keys %{ $feed->{entry} } ) {
+       warn "ENTRY $entry\n";
+       my $id = $entry;
+       $id =~ s{.+/items/}{}; # leave just ID
+
+       my $e = $feed->{entry}->{$entry};
 
-warn "# feed ",dump($feed);
+       foreach my $link ( @{ $e->{link} } ) {
+               warn "# link ",dump($link);
+               if ( $link->{rel} eq 'up' ) {
+                       my $up = $link->{href};
+                       $up =~ s{.+/items/}{};
+                       $up =~ s{\?.+}{};
+                       push @{ $tree->{$up} }, $id;
+               }
+       }
+
+       if ( $e->{content}->{'zapi:type'} eq 'json' ) {
+               my $json = $e->{content}->{content};
+               warn "# $json\n";
+               $e->{json} = decode_json $json;
+               warn ">> $id ", dump $e->{json};
+       }       
+
+
+}
 
+warn "# tree ",dump( $tree );