#!/usr/bin/perl # quotes2mylibrary.pl - import data into database # Eric Lease Morgan # March 22, 2008 - first investigations # require use strict; use MyLibrary::Core; # sanity check if ( ! $ARGV[0] ) { print "Usage: $0 \n"; exit; } # configure MyLibrary::Config->instance( 'c4l_quotes' ); # initialize my $peopleID = &make_or_get_facet_id( 'People', 'Individuals who generate quotes' ); # read each line while ( <> ) { # initialize my $fkey = ''; my $quote = ''; my $person = 'anonymous'; # parse $_ =~ /(\d+):(\d+)\.(\d+),(\d+),['+|"+](.*)['+|"+]/; # key my $fkey = $1; # quote my $quote = $5; while ( $quote =~ /^['|"]/ ) { $quote =~ s/^['|"]// } while ( $quote =~ /['|"]$/ ) { $quote =~ s/['|"]$// } # person if ( $quote =~ /<.*>/ ) { $quote =~ s/<(.*)> //; # wrong! $person = $1; while ( $person =~ /^ / ) { $person =~ s/^ // } if ( ! $person ) { $person = 'anonymous' }; # wrong! } else { $person = 'anonymous' } # echo print " fkey: $fkey\n"; print " person: $person\n"; print " quote: $quote\n"; if ( ! MyLibrary::Resource->new( fkey => $fkey )) { # create it my $resource = MyLibrary::Resource->new; $resource->fkey( $fkey ); $resource->creator( $person ); $resource->name( $quote ); $resource->related_terms( new => [ &make_or_get_term_id( $person, 'An individual Code4Liber', $peopleID )]); $resource->commit; print " action: added (", $resource->id, ")\n"; } else { my $resource = MyLibrary::Resource->new( fkey => $fkey ); print " action: already exists (", $resource->id, ")\n"; } print "\n"; } sub make_or_get_facet_id { # get the input my $name = shift; my $note = shift; # initialize my $facet = MyLibrary::Facet->new; # check for the name if (! MyLibrary::Facet->new( name => $name )) { # create it $facet->facet_name( $name ); $facet->facet_note( $note ); $facet->commit; #print "The facet $name ($note) has been created.\n"; } else { # already exists $facet = MyLibrary::Facet->new( name => $name ); #print "The facet $name already exists.\n"; } # done return $facet->facet_id; } sub make_or_get_term_id { # get the input my $name = shift; my $note = shift; my $facet_id = shift; # initialize my $term = MyLibrary::Term->new; # check for the name if (! MyLibrary::Term->new( name => $name )) { # create it $term->term_name( $name ); $term->term_note( $note ); $term->facet_id( $facet_id ); $term->commit; #print "The term $name ($note) has been created.\n"; } else { # already exists $term = MyLibrary::Term->new( name => $name ); #print "The term $name already exists.\n"; } # done return $term->term_id; }