1197f2fe93e4da16d40464cf305a07d99f63fa76
[crossbi-get] / get.pl
1 #!/usr/bin/perl
2
3 use LWP::Simple;
4 use JSON;
5 use Text::CSV;
6 use Data::Dump qw(dump);
7
8 my $csv = Text::CSV->new ({ binary => 1, auto_diag => 1 });
9 open(my $csv_fh, '>:encoding(utf8)', 'crossbi-export.csv') or die "crossbi-export.csv: $!";
10
11 my @columns;
12
13 while(<>) {
14         chomp;
15         my $radid = $_;
16
17         my $result = get("https://www.bib.irb.hr/$radid/json");
18         warn "# result = $result\n";
19
20         my $json   = decode_json $result;
21
22         warn "# json = ",dump($json);
23
24         if ( ! @columns ) {
25                 @columns = sort grep { !/urls/ } keys %{$json->{items}->[0]};
26                 warn "## columns = ",dump(@columns);
27                 $csv->say( $csv_fh, \@columns );
28         }
29
30         my $row;
31         foreach my $item ( @{ $json->{items} } ) {
32                 warn "## item = ",dump( $item );
33                 foreach my $col ( @columns ) {
34                         my $d = $item->{$col};
35                         $d =~ s/[\r\n\s]+/ /gs;
36                         push @$row, $d;
37                 }
38         }
39
40         warn "# row = ",dump( $row );
41
42         $csv->say( $csv_fh, $row );
43
44 }
45
46 close($csv_fh) or die "crossbi-export.csv: $!";
47