|
Lines 9-14
use Modern::Perl;
Link Here
|
| 9 |
use MARC::File::USMARC; |
9 |
use MARC::File::USMARC; |
| 10 |
use MARC::File::XML; |
10 |
use MARC::File::XML; |
| 11 |
use MARC::Batch; |
11 |
use MARC::Batch; |
|
|
12 |
use MARC::Lint; |
| 12 |
use Encode; |
13 |
use Encode; |
| 13 |
|
14 |
|
| 14 |
use Koha::Script; |
15 |
use Koha::Script; |
|
Lines 76-81
my $localcust;
Link Here
|
| 76 |
my $marc_mod_template = ''; |
77 |
my $marc_mod_template = ''; |
| 77 |
my $marc_mod_template_id = -1; |
78 |
my $marc_mod_template_id = -1; |
| 78 |
my $skip_indexing = 0; |
79 |
my $skip_indexing = 0; |
|
|
80 |
my $strict_mode; |
| 79 |
$| = 1; |
81 |
$| = 1; |
| 80 |
|
82 |
|
| 81 |
GetOptions( |
83 |
GetOptions( |
|
Lines 113-118
GetOptions(
Link Here
|
| 113 |
'custom:s' => \$localcust, |
115 |
'custom:s' => \$localcust, |
| 114 |
'marcmodtemplate:s' => \$marc_mod_template, |
116 |
'marcmodtemplate:s' => \$marc_mod_template, |
| 115 |
'si|skip_indexing' => \$skip_indexing, |
117 |
'si|skip_indexing' => \$skip_indexing, |
|
|
118 |
'st|strict' => \$strict_mode, |
| 116 |
); |
119 |
); |
| 117 |
|
120 |
|
| 118 |
$biblios ||= !$authorities; |
121 |
$biblios ||= !$authorities; |
|
Lines 320-325
my $record_number = 0;
Link Here
|
| 320 |
my $logger = Koha::Logger->get; |
323 |
my $logger = Koha::Logger->get; |
| 321 |
my $schema = Koha::Database->schema; |
324 |
my $schema = Koha::Database->schema; |
| 322 |
my $marc_records = []; |
325 |
my $marc_records = []; |
|
|
326 |
my $lint = MARC::Lint->new; |
| 323 |
RECORD: while () { |
327 |
RECORD: while () { |
| 324 |
my $record; |
328 |
my $record; |
| 325 |
$record_number++; |
329 |
$record_number++; |
|
Lines 339-344
RECORD: while () {
Link Here
|
| 339 |
} |
343 |
} |
| 340 |
if ($record) { |
344 |
if ($record) { |
| 341 |
|
345 |
|
|
|
346 |
if ($strict_mode) { |
| 347 |
my $xml = $record->as_xml_record(); |
| 348 |
eval { MARC::Record::new_from_xml( $xml, 'UTF-8', "MARC21" ); }; |
| 349 |
if ($@) { |
| 350 |
print "Record $record_number generated invalid xml:\n"; |
| 351 |
$lint->check_record($record); |
| 352 |
foreach my $warning ( $lint->warnings ) { |
| 353 |
print " " . $warning . "\n"; |
| 354 |
} |
| 355 |
print " Record skipped!"; |
| 356 |
next; |
| 357 |
} |
| 358 |
} |
| 342 |
# transcode the record to UTF8 if needed & applicable. |
359 |
# transcode the record to UTF8 if needed & applicable. |
| 343 |
if ( $record->encoding() eq 'MARC-8' and not $skip_marc8_conversion ) { |
360 |
if ( $record->encoding() eq 'MARC-8' and not $skip_marc8_conversion ) { |
| 344 |
my ( $guessed_charset, $charset_errors ); |
361 |
my ( $guessed_charset, $charset_errors ); |
| 345 |
- |
|
|