Slides available at:
slides.mobiusconsortium.org/blake/bib_magic
Created by Blake Graham-Henderson / [email protected]
Press ESC to browse slides


No actual Google synonyms were harmed during the making of this slide
Designed for compartmentalized MARC records per import project(s)
FTP / Cloud Library / MARCIVE HTTPS
Configure to change incoming MARC automatically
Add fields
Remove fields/subfields
Replace fields/subfields
Also works with control fields
For electronic imports: newly added libraries can be retro-actively added to existing 856's
You'll need access to the server
It's one Perl program
Standard command
./bib_magic_importer.pl --config overdrive.conf
Sync $9's
./bib_magic_importer.pl --config overdrive.conf --syncnines
Force match on 901c only
./bib_magic_importer.pl --config overdrive.conf --match_901c
| Option | Detail |
|---|---|
| logfile | Path to write a log |
| domainname | Evergreen's root domain name, mydomain.org |
| archivefolder | Writable folder path to store processed files |
| tempspace | Path to a temp folder; used for authority processing |
| incomingmarcfolder | Folder path for folder type import |
| dbhost | Postgres server host |
| db | PG Database name |
| dbuser | PG DB Username |
| dbpass | PG DB password |
| port | PG DB port |
| do_not_import_new | Don't allow new records to be imported |
recordsource
##########################################################
# Options are: FTP or folder or cloudlibrary or marcivehttps
# Note: cloudlibrary option enables the API connection to
# the remote server.
##########################################################
Examples:
recordsource = folder
recordsource = cloudlibrary
recordsource = FTP
recordsource = marcivehttps
Remote server stuff
| Option | Detail |
|---|---|
| server | FTP/cloudlibrary API URL |
| login | FTP username / cloudlibrary "Library ID" |
| password | FTP password / cloudlibrary "Library API Key" |
| remotefolder | Remote FTP folder |
| recurse | Optionally recurse FTP folders |
| lastdatefile | cloudlibrary only: path to writable file for cloudlibrary |
| certpath | cloudlibrary only |
| certkeypath | cloudlibrary only |
sourcename
###################################################################
# This is a way to keep track of the set of records in the
# database. This string value will be entered into
# config.bib_source if it doesn't exist. All imported
# records will be tagged with this string value as the source.
# NOTE: Auto record deduplication does not cross sources. Therefore,
# if you have multiple electronic MARC record imports, it could be
# a good idea to use the same source value for each such that the
# records can merge onto eachother. 856's are melted together each
# with the appropriate participant $9's.
##################################################################
Examples:
sourcename = overdrive
sourcename = electronic
sourcename
bibtag
Think of it as a record sub-category
############################################################
# This value is appended to the tcn_source when bibs
# are imported. Later, this is referenced during removals.
# Only bibs with this same tag will be scoped when searching
# for removals. import_as_is will cause this setting to be ignored
############################################################
Examples:
bibtag = overdrive_advantage
bibtag = gov_docs
tcn_source_authority
This needs to (almost) always be "yes"
You might want to disable this if you are importing records that you exported from Evergreen
participants
############################################################
# Comma separated list of shortnames for each of the
# branches/systems that will be included in the 856$9 values
############################################################
Examples:
participants = SYS1,SYS2
participants = BR1,BR2
participants = SYS1,BR2
merge_9s
#######################################################
# If there is a matching record in the database, and
# that matching record has an identical 856 with a matching
# $u, then we will merge all of the $9's together or not.
#######################################################
Examples:
# merge_9s = yes
merge_9s = yes
import_as_is
#######################################################
# Short circuit any code that would change the MARC
#
# You can optionally cause the software to do nothing
# to the marc and import as-is This is usually in
# conjuction with passing --match_901c to the script
#
#######################################################
Examples:
# import_as_is = yes
import_as_is = yes
Filename matching
These options help the script understand which file(s) you would like it to process. And if a file should be treated as a "removal" instead of an "add".
All options are space delimited
| Option | Detail |
|---|---|
| onlyprocess | AKA: magazine mrc |
| ignorefiles | AKA: .xls |
| removalfiles | AKA: weed removal delete |
| authorityfiles | AKA: authority auth |
authority_link_script_cmd
#######################################################
# When importing authority records, we will automatically
# run the linking script but we need to know where
# it is and the cmd switches
#######################################################
Example (line breaks for presentation):
authority_link_script_cmd =
/openils/bin/authority_control_fields.pl
--config /openils/conf/opensrf_core.xml
--record
eg_staged_bib_overlay_dir
#######################################################
# If you use this script to import authority files,
# you will also need to have the "eg_staged_bib_overlay"
# script available. This is where you define the path
# to the root folder.
# git repo
# https://github.com/EquinoxOpenLibraryInitiative/migration-tools
#######################################################
Example:
eg_staged_bib_overlay_dir = /path/to/migration-tools
Email notifications
All options are comma delimited
| Option | Detail |
|---|---|
| erroremaillist | Only alerts errors |
| successemaillist | People who want the success results |
| alwaysemail | Can only be one email address |
erroremaillist = [email protected] successemaillist = [email protected], [email protected] alwaysemail = [email protected]
Adding Fields
marc_edit_standard_1 = 'type' => 'add',
'def' => ['650','0','0','a','Whatever you want to add']
Removing Whole Fields
marc_edit_standard_2 = 'type' => 'remove',
'def' => ['852','853','995']
Conditionally remove fields
marc_edit_standard_3 = 'type' => 'remove',
'howmany' => 'all',
'def' => ['856_4_none_3', '856_1_1_a', '651_all_all_b']
Removing subfields instead of whole fields
marc_edit_standard_4 = 'type' => 'removesubfield',
'howmany' => 'all',
'def' => ['756', 'q']
Replace
marc_edit_standard_5 = 'type' => 'replace',
'howmany' => 'all',
'def' => ['856','same','same','y','Click for online content.']
Control fields
marc_edit_control_1 = 'type' => 'replace', 'def' => ['008','24','o'] marc_edit_control_2 = 'type' => 'remove', 'howmany' => '1', 'def' => ['007'] marc_edit_control_3 = 'type' => 'replace', 'def' => ['007','1','vd cvaizq']
BIB Magic has it's own database schema: bib_magic
Bib Magic Job
Each import creates a "job" which is assigned a sequential ID number
| Table Columns |
|---|
| Start Time |
| Update Time |
| Status |
| Current Action |
| Current Action Number |
Bib Magic Import Status
Each job contains bib with details in this table
| Table Columns |
|---|
| Bib Tag |
| File Name |
| 001 |
| Title |
| SHA1 |
| Status |
| Processed |
| Update Time |
| MARC XML |
| Record ID |
Bib Magic MARC Update
When a bib is overlayed, it's recorded here
Makes the bib update reversable
| Table Columns |
|---|
| Record ID |
| Previous MARC |
| Changed MARC |
| New Bib? |
| Update Time |
Bib Magic Item Reassignement
If items are moved to another bib, it's recorded here
Makes the bib merge reversable
| Table Columns |
|---|
| Copy ID |
| Previous Bib ID |
| Destination Bib ID |
| Move Time |
Bib Magic BIB Merge
When two bibs are merged, it's recorded here
Makes the merge reversable
| Table Columns |
|---|
| Lead Record ID |
| Sub Record ID |
| Update Time |
Bib Magic Nine Sync
| Table Columns |
|---|
| Record ID |
| Nines Synced |
| Affected URL |
| Update Time |
Hi Team,
Thanks for your file(s). It took me some time to work on it:
0 days, 0 hours, 07 minutes and 30 seconds
I've digested the file(s):
--- ME-1075-20230224084143-Audio-1.mrc ---
147 Total record(s)
144 inserted
3 matched and overlayed
--- ME-1075-20230224084143-eBook-1.mrc ---
474 Total record(s)
462 inserted
12 matched and overlayed
--- Grand Total ---
621 Total
606 inserted
15 Record(s) were updated
Import Type: folder
Yours Truly,
The friendly MOBIUS server
Slides available at:
slides.mobiusconsortium.org/blake/bib_magic
Launchpad bug: LP 1947898