====== VuFind® / Koha Automation======
// Thanks to Mariyapillai Jayakananthan and Mohan Pradhan for developing this documentation. //
=====Auto-incremental harvesting and indexing =====
Instead of using manual harvesting, it is possible to implement incremental auto-harvesting and indexing. The details below outline the process.
Some notes:
* In examples, it is assumed that your oai.ini configuration includes a [Koha] section for harvesting records from Koha. You should change the OAI_KOHA_SOURCE variable if you use a different name.
* The example script assumes that VuFind®'s environment variables are defined in /etc/profile.d/vufind.sh (the default location set up by the .deb package installation). If your setup is different, adjustments may be needed.
==== Script for incremental OAI-PMH harvesting and indexing with VuFind® ====
Create a script with the filename **harvest.sh**. You can put this script anywhere you like; $VUFIND_LOCAL_DIR/cron might be a good choice. We will use that for example purposes on this page.
#!/bin/bash
# Set up necessary environment variables
export PATH=/bin:/usr/bin:/usr/local/bin
source /etc/profile.d/vufind.sh
# Koha source defined in oai.ini; change as needed
OAI_KOHA_SOURCE=Koha
# Harvest new records:
php $VUFIND_HOME/harvest/harvest_oai.php $OAI_KOHA_SOURCE
# Process harvested Koha records:
$VUFIND_HOME/harvest/batch-import-marc.sh $OAI_KOHA_SOURCE
$VUFIND_HOME/harvest/batch-delete.sh $OAI_KOHA_SOURCE
# Rebuild index
$VUFIND_HOME/index-alphabetic-browse.sh
Make sure the file is owned by an appropriate user (generally, it is best to have a specific account reserved for VuFind®-related processes -- see [[administration:security#creating_a_system_account_for_vufind|creating a systema ccount for VuFind®]] for details). If necessary, change file ownership, e.g.: ''chown vufind:vufind harvest.sh''.
Make the file executable by running this command: ''chmod u+x harvest.sh''.
When ready, you can run the script with this command, if you are in the directory where it resides and logged in to an account with appropriate permissions: ''./harvest.sh''.
==== Auto-harvesting via cronjob ====
You may wish to set up a cronjob for auto-harvesting and adding records in VuFind®.
To do so, place the auto-harvesting script file described above into the $VUFIND_LOCAL_DIR/cron directory, switch to the account that runs VuFind®-related processing and run ''crontab -e'' to edit the appropriate crontab file.
You should then add a line similar to:
15 20 * * * /usr/local/vufind/local/cron/harvest.sh
(This example runs the script every day at 8:15pm; see [[administration:automation#using_cron|Using Cron]] for more details on how this works).
==== Incorporating additional sources ====
It is possible that your VuFind® instance harvests records from multiple sources. In that case, you can feel free to add additional harvesting and indexing steps to the script.
=== Koha + DSpace example ===
For example, if you ingest DSpace records along with Koha records, you could modify the script to something like this:
#!/bin/bash
# Set up necessary environment variables
export PATH=/bin:/usr/bin:/usr/local/bin
source /etc/profile.d/vufind.sh
# The names of the harvest sections in oai.ini; change as needed:
OAI_DSPACE_SOURCE=DSpace
OAI_KOHA_SOURCE=Koha
# Harvest new records (do not specify a harvest source in order to harvest all sources):
php $VUFIND_HOME/harvest/harvest_oai.php
# Process harvested DSpace records:
$VUFIND_HOME/harvest/batch-import-xsl.sh $OAI_DSPACE_SOURCE dspace.properties
$VUFIND_HOME/harvest/batch-delete.sh $OAI_DSPACE_SOURCE
# Process harvested Koha records:
$VUFIND_HOME/harvest/batch-import-marc.sh $OAI_KOHA_SOURCE
$VUFIND_HOME/harvest/batch-delete.sh $OAI_KOHA_SOURCE
# Rebuild index
$VUFIND_HOME/index-alphabetic-browse.sh
=== Multiple Koha instances example ===
As another example, if you harvest from multiple Koha instances using [[indexing:marc:multiple_configs|different configuration files for each instance]], your script might look like this:
#!/bin/bash
# Set up necessary environment variables
export PATH=/bin:/usr/bin:/usr/local/bin
source /etc/profile.d/vufind.sh
# Harvest new records (do not specify a harvest source in order to harvest all sources):
php $VUFIND_HOME/harvest/harvest_oai.php
# Process harvested Koha records from two sources -- this example uses the names "Pasantha"
# and "Kohulan" but of course these should be changed to your local instance names in practice.
# You could repeat the import/delete lines for any number of sources, as long as each pair uses
# an appropriate configuration file and directory name. Note that if you applying a different
# ID prefix to each source, additional work may be needed to pre-process deleted record IDs so
# that batch-delete.sh works as expected.
$VUFIND_HOME/harvest/batch-import-marc.sh -p /usr/local/vufind/local/import/import-Pasantha.properties Koha_Pasantha
$VUFIND_HOME/harvest/batch-delete.sh Koha_Pasantha
$VUFIND_HOME/harvest/batch-import-marc.sh -p /usr/local/vufind/local/import/import-Kohulan.properties Koha_Kohulan
$VUFIND_HOME/harvest/batch-delete.sh Koha_Kohulan
# Rebuild index
$VUFIND_HOME/index-alphabetic-browse.sh