From f0427d89b1c0c6bd7c0c69e3bfc2c276c14dc656 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Thu, 2 Aug 2012 14:02:13 +0200 Subject: [PATCH] save collection_items in x_meta --- zotero.pl | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/zotero.pl b/zotero.pl index e3b9051..a0a424b 100755 --- a/zotero.pl +++ b/zotero.pl @@ -49,12 +49,13 @@ if ( $FETCH && mirror( $url => $file ) == RC_NOT_MODIFIED ) { warn "not modified"; } -my $feed = eval { XMLin( $file ) }; +my $xml = XML::Simple->new(ForceArray => [ qw( entry ) ]); +my $feed = eval { $xml->XMLin( $file ) }; if ( $! ) { warn "ERROR $file $!\n"; goto skip_url; } -#warn "# feed ",dump($feed); +warn "# feed ",dump($feed); sub link_to_id { my $link = shift; @@ -63,12 +64,16 @@ sub link_to_id { return $link; } +my @collection_items; + foreach my $entry ( keys %{ $feed->{entry} } ) { warn "# entry $entry ",dump($entry); my $id = link_to_id $entry; + push @collection_items, $id if $url =~ m{/collections/(\w+)/items}; + my $item = $feed->{entry}->{$entry}; - warn "# entry $entry ",dump($item); + warn "# item $id $entry ",dump($item),$/; foreach my $i ( 0 .. $#{ $item->{link} } ) { my $link = $item->{link}->[$i]; @@ -80,7 +85,7 @@ foreach my $entry ( keys %{ $feed->{entry} } ) { push @{ $tree->{$key} }, $id; } elsif ( $link->{rel} eq 'self' && $link->{href} =~ m{/collections/} ) { warn "# get items in this collection"; - push @urls, "$link->{href}/items"; + push @urls, "$link->{href}/items?content=json"; } } @@ -123,6 +128,15 @@ foreach my $entry ( keys %{ $feed->{entry} } ) { } +if ( @collection_items ) { + my $id = $1 if $url =~ m{/collections/(\w+)/items}; + $db->modify( "zotero_$UserID/$id" => sub { + my $doc = shift; + $doc->{x_meta}->{collection_items} = [ @collection_items ]; + return $doc; + }); +} + delete $feed->{entry}; warn "# feed without entry ",dump( $feed ); -- 2.20.1