From chris@katipo.co.nz Thu May 5 04:34:32 2005 Return-Path: <chris@katipo.co.nz> Delivered-To: chris@wilbur.katipo.co.nz Received: (qmail 4856 invoked from network); 4 May 2005 16:34:32 -0000 Received: from unknown (HELO shelob.katipo.co.nz) (202.50.109.222) by wilbur.katipo.co.nz with SMTP; 4 May 2005 16:34:32 -0000 Received: by shelob.katipo.co.nz (Postfix, from userid 1001) id 497A3847AF; Thu, 5 May 2005 04:34:32 +1200 (NZST) X-Original-To: chris@katipo.co.nz Delivered-To: chris@katipo.co.nz Received: from localhost (localhost [127.0.0.1]) by shelob.katipo.co.nz (Postfix) with ESMTP id B69E0847BF; Thu, 5 May 2005 04:34:23 +1200 (NZST) Received: from shelob.katipo.co.nz ([127.0.0.1]) by localhost (staff.katipo.co.nz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04203-04; Thu, 5 May 2005 04:34:23 +1200 (NZST) Received: from daddy-mx.katipo.co.nz (daddy.katipo.co.nz [202.50.109.200]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by shelob.katipo.co.nz (Postfix) with ESMTP; Thu, 5 May 2005 04:34:23 +1200 (NZST) Received: from localhost (localhost.katipo.co.nz [127.0.0.1]) by daddy-mx.katipo.co.nz (Postfix) with ESMTP id DB996E6EEC; Thu, 5 May 2005 04:32:03 +1200 (NZST) Received: from daddy-mx.katipo.co.nz ([127.0.0.1]) by localhost (daddy.katipo.co.nz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17371-05; Thu, 5 May 2005 04:32:02 +1200 (NZST) Received: from localhost.katipo.co.nz (localhost.katipo.co.nz [127.0.0.1]) by daddy-mx.katipo.co.nz (Postfix) with ESMTP; Thu, 5 May 2005 04:32:02 +1200 (NZST) Received: from localhost (localhost.katipo.co.nz [127.0.0.1]) by daddy-mx.katipo.co.nz (Postfix) with ESMTP id 763A5E6E87 for <koha@lists.katipo.co.nz>; Thu, 5 May 2005 04:31:57 +1200 (NZST) Received: from daddy-mx.katipo.co.nz ([127.0.0.1]) by localhost (daddy.katipo.co.nz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17371-04 for <koha@lists.katipo.co.nz>; Thu, 5 May 2005 04:31:55 +1200 (NZST) Received: from wlpl.org (mail.wlpl.org [204.95.8.76]) by daddy-mx.katipo.co.nz (Postfix) with ESMTP for <koha@lists.katipo.co.nz>; Thu, 5 May 2005 04:31:55 +1200 (NZST) Received: from [192.168.1.152] (helo=[192.168.1.152]) by wlpl.org with esmtp (Exim 2.12 #1) id 1DTMms-0006dm-00 for koha@lists.katipo.co.nz; Wed, 4 May 2005 11:31:50 -0500 Received: from 127.0.0.1 (AVG SMTP 7.0.308 [266.11.3]); Wed, 04 May 2005 11:34:10 -0500 Message-ID: <4278F982.9050204@wlpl.org> Date: Wed, 04 May 2005 11:34:10 -0500 From: Tim McMahon - West Liberty Public Library <tmcmahon@wlpl.org> User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: koha@lists.katipo.co.nz Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at katipo.co.nz Subject: [Koha] Converting MARC records from Sagebrush Athena X-BeenThere: koha@lists.katipo.co.nz X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion list for the Koha Library system <koha.lists.katipo.co.nz> List-Unsubscribe: <http://lists.katipo.co.nz/mailman/listinfo/koha>, <mailto:koha-request@lists.katipo.co.nz?subject=unsubscribe> List-Archive: <http://lists.katipo.co.nz/pipermail/koha> List-Post: <mailto:koha@lists.katipo.co.nz> List-Help: <mailto:koha-request@lists.katipo.co.nz?subject=help> List-Subscribe: <http://lists.katipo.co.nz/mailman/listinfo/koha>, <mailto:koha-request@lists.katipo.co.nz?subject=subscribe> Sender: koha-bounces@lists.katipo.co.nz Errors-To: koha-bounces@lists.katipo.co.nz X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at katipo.co.nz X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at katipo.co.nz X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on shelob.katipo.co.nz X-Spam-Level: X-Spam-Status: No, hits=-2.6 required=5.0tests=BAYES_00 autolearn=ham version=3.0.2 Status: RO Content-Length: 2855
I'm looking for comments on my work so far. Here is the perl script I wrote to move things to different fields for Koha. Let me know if you see anything that should be changed or could be done a better way. I'm still learning perl, so this could look pretty bad. First I set up a hash for converting Athena formats to Koha item types. After I read a record, I pick the data I want from the 852 fields. 852_6 is format 852_p is barcode 852_9 is cost 852_8 is accession date 852_k is call number prefix 852_k is call number main 852_i is call number cutter 852_m is call number suffix 852_9 is changed to pull any extra characters out of the cost. Athena allows longer strings for their formats. 852_9 is changed to shorter strings using the hash made at the start of the script. Build a whole call number from the pieces in 852 by putting $k, $h, $i and $m together with spaces between and then stripping extra spaces out of it. Put 952 together with our new 852_9, our new call, a code for the home branch and holding branch and the barcode. #!/usr/bin/perl # use strict; # use warnings; ## Crate our MARC::Batch object. use MARC::Batch; my $infile = $ARGV[0]; my $outfile = $ARGV[1]; my $batch = MARC::Batch->new('USMARC',$infile); ## open a file handle to write to. open(OUT,">$outfile") or die $!; my %format = ( 'binder' => BIND, 'book' => BOOK, 'book kit' => KIT, 'books on CD' => BKCD, 'books on tape' => BKTP, 'cbook' => BOOK, 'CD' => CD, 'CD-ROM' => CD, 'DVD' => DVD, 'ebook' => BOOK, 'equipment' => EQU, 'file folder' => FILE, 'frame' => FRAM, 'hbook' => BOOK, 'magazine' => MAG, 'map' => MAP, 'sbook' => BOOK, 'tboot' => BOOK, 'vbook' => BOOK, 'video' => VID ); ## read each record. modify, then print. while ( my $record = $batch->next() ) { ## get info from 852 field. my @fields = $record->field('852'); foreach my $field (@fields) { $field852_6=$field->subfield('6'); $field852_p=$field->subfield('p'); $field852_9=$field->subfield('9'); $field852_8=$field->subfield('8'); $field852_k=$field->subfield('k'); $field852_h=$field->subfield('h'); $field852_i=$field->subfield('i'); $field852_m=$field->subfield('m'); $field852_9 =~ s/[^0-9.]//ig; ## change the format in 852 6 my $new_field=$format{$field852_6}; $field->update( 6 => $new_field ); ## Make a new call number for 952 a $call=$field852_k . ' ' . $field852_h . ' ' . $field852_i . ' ' . $field852_m; while ($call=~s/ / /ig) {} $call=~s/^ //; $call=~s/ $//; ## add 952 field from 852 tags $record->append_fields( MARC::Field->new('952','','',8=>$field852_8, 9=>$field852_9, a=>$call, b=>'WLPL', d=>'WLPL', p=>$field852_p)); print OUT $record->as_usmarc(); }} close(OUT); _______________________________________________ Koha mailing list Koha@lists.katipo.co.nz http://lists.katipo.co.nz/mailman/listinfo/koha
participants (1)
-
None