#!/usr/bin/perl -w # # mkmeta -- make ThML.head, store in $bookID.meta file # # 2000-05-30 v. 0.3 -- try to get data from path, database. # 2000-02-21 v. 0.2, Harry Plantinga # use strict; #use DBI; # # this array contains tag names and prompts to use, if tag not found # my @tags = ( "authorID" => "Author ID", "name" => "Author name (short form)", "fileas" => "Author name [Last, First] (born-died)", "DC.Title" => "Book title", "ISBN" => "ISBN", "series" => "Series ID []", "version" => "Version [1.0]", "published" => "Publisher, date of print edition", "DC.Subject scheme=\"LCCN\"" => "LC call no.", "publisherID" => "Etext publisher [ccel]", "DC.Rights" => "Rights [public domain]", "DC.Source" => "Source of etext", "surl" => "Source URL", "DC.Identifier" => "URL [std ccel]", "description" => "Description", "digitizer" => "Digitizer", "status" => "Editorial status", "comments" => "Comments"); my (%info, $i, $input, @data); my $authorID = shift; $info{"authorID"} = $authorID; my $bookID = shift; $info{"bookID"} = $bookID; my $url = shift; $info{"DC.Identifier"} = $url; my $path = `pwd`; chomp $path; $authorID = getValue("authorID") unless $authorID; $bookID = getValue("bookID") unless $bookID; #print "authorID: $info{'authorID'} -- bookID: $info{'bookID'}\n"; die "\nMetadata file $bookID.meta already exists -- \n" . " edit it or delete it to change the data.\n" if -f "$bookID.meta"; print "Making metadata for $info{'authorID'}/$info{'bookID'}\n"; # # try to get data from database # # my $dsn = "DBI:mysql:database=ccel;host=pascal.calvin.edu;port=3306"; # my $dbh = DBI->connect($dsn, "user","password") #deleted... # or die "Couldn't connect to database!" . DBI->errstr; # my $query="select fullname, shortname from person where personID='$authorID'"; # my $sth=$dbh->prepare($query) or die "Couldn't prep -- $dbh->errstr\n"; # $sth->execute() or die "Couldn't execute statement -- $dbh->errstr\n"; # if (@data = $sth->fetchrow_array()) { # $info{'fileas'} = $data[0]; # $info{'name'} = $data[1]; # print "Name: $info{'name'}\n"; # print "Fileas: $info{'fileas'}\n"; # } # # get path to current working directory to use as default # $path =~ s|^.*htdocs||; $url = "http://www.ccel.org" . $path . "/htm/i.htm" unless $url; # # prompt for data we still don't have # for ($i=0; $i<$#tags; $i+=2) { get($tags[$i], $tags[$i+1]); } # # prompt for other authors # print "Other authors? [n] "; my $resp=<>; my $moreauthors = ""; while ($resp =~ m/\s*y/i) { print " authorID: "; my $addAuthID = <>; chomp($addAuthID); print "ID: $addAuthID\n"; # # prompt for other authors; add to database if necessary # # $query="select fullname, shortname from person where personID='$addAuthID'"; # $sth=$dbh->prepare($query) or die "Couldn't prep -- $dbh->errstr\n"; # $sth->execute() or die "Couldn't execute statement -- $dbh->errstr\n"; # my ($fileas, $name); # if (@data = $sth->fetchrow_array()) { # ($fileas, $name) = @data; # print "$name -- $fileas\n"; # } else { # print "That author isn't in the database. Let's add.\n"; # print "Shortname: "; # $name = <>; chomp($name); # print "Last, First (years): "; # $fileas = <>; chomp($fileas); # $query="insert into person(personID, fullname, shortname) # values('$addAuthID','$fileas','$name')"; # print "$query\n"; # $sth=$dbh->prepare($query) or die "Couldn't prep -- $dbh->errstr\n"; # $sth->execute() or die "Couldn't execute statement -- $dbh->errstr\n"; # print "$name has been inserted.\n"; # } print "Role: "; my $role=<>; chomp $role; $moreauthors .= "$addAuthID\n"; print "Other authors? [n] "; $resp=<>; } #print "moreauthors: $moreauthors\n"; # # Now process defaults. # $info{"DC.Rights"} ||= "Public Domain"; $info{"version"} ||= "1.0"; $info{"publisherID"} ||= "ccel" unless $info{"DC.Publisher"}; $info{"DC.Publisher"} = ""; $info{"DC.Publisher"} = "Grand Rapids, MI: Christian Classics Ethereal Library" if $info{"publisherID"} eq "ccel"; $path =~ s|^.*htdocs||; if (!$url) { my $url = "http://www.ccel.org" . $path . "/htm/i.htm"; } $info{"DC.Identifier"} ||= $url; print "URL: $info{'DC.Identifier'}\n"; print "CCEL Subjects: All; Bibles; Proofed; Classic; Early Church; Fiction; History; Hymns; Mysticism; Reference; Sermons; Symbols CCEL subjects - "; my $ccsubjects = <>; chomp($ccsubjects); my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime; $mon = "0$mon" if $mon < 10; $mday = "0$mday" if $mday < 10; my $date = "" . $year + 1900 . "-$mon-$mday"; # # output metadata file # open OUT, ">$bookID.meta"; print OUT <<"!!!"; $info{"description"} $info{"comments"} $info{"published"} $info{"publisherID"} $info{"authorID"} $bookID $info{"version"} $info{"series"} $info{"status"} $info{"DC.Title"} $info{"name"} $info{"fileas"} $moreauthors $info{"DC.Publisher"} $info{"DC.Subject scheme=\"LCCN\""} $ccsubjects $info{"digitizer"} $date Text.Monograph text/html $info{"DC.Identifier"} $info{"ISBN"} $info{"DC.Source"} $info{"surl"} en $info{"DC.Rights"} !!! # $sth->finish; # dbh->disconnect; exit(0); # # get a value using prompt; store in $info{$prompt} # sub getValue { my $prompt = shift; print "$prompt: "; my $val = <>; chomp $val; $info{"$prompt"} = $val; return $val; } sub get { my $tag = shift; my $prompt = shift; my $x; if (!$info{$tag}) { print "$prompt" . " " x (24-length($prompt)) . " - "; $x = <>; chop $x; $info{$tag} = $x; } }