A tool for working with archival description for public access.
Project description
description_harvester
A tool for working with archival description for public access. description_harvester reads archival description into a minimalist data model for public-facing archival description and then converts it to the ArcLight data model and POSTs it into an ArcLight Solr index using PySolr.
description_harvester is designed to be extensible and harvest archival description from a number of sources. Currently the only available source harvests data from the ArchivesSpace API using ArchivesSnake. It is possible in the future to add modules for EAD2002 and other sources. Its also possible to add additional output modules to serialize description to EAD or other formats in addition to or in replace of sending description to an ArcLight Solr instance. This potential opens up new possibilities of managing description using low-barrier formats and tools.
description_harvester is designed to be a drop-in replacement for the ArcLight Traject indexer. It also includes a plugin that attempts to recognized IIIF manifests included as file versions and uses manifests to fully index digital objects from digital repositories and other sources, including item-level metadata fields, embedded text, OCR text, and transcriptions.
This is still a bit drafty, as its only tested on ASpace v2.8.0 and needs tests and better error handling. Validation is also very minimal, but there is potential to add detailed validation with jsonschema .
Installation
pip install description_harvester
First, you need to configure ArchivesSnake by creating a ~/.archivessnake.ymlfile with your API credentials as detailed by the ArchivesSnake configuration docs.
Next, you also need a ~/.description_harvester/config.yml file that lists your Solr URL and the core you want to index to. These can also be overridden with args. description_harvester reads your config.yml as utf-8, so if you're creating this file in a Windows environment you should convert it to utf-8.
solr_url: http://127.0.0.1:8983/solr
solr_core: blacklight-core
last_query: 0
cache_expiration: 3600
Repositories
By default, when reading from ArchivesSpace, description harvester will use the repository name stored there.
To enable the --repo argument, place a copy of your ArcLight repositories.yml file as ~/.description_harvester/repositories.yml. You can then use harvest --id mss001 --repo slug to index using the slug from repositories.yml. This will overrite the ArchivesSpace repository name.
There is also the option do customize this with a plugin.
Encoding note: While ArcLight does not explicitly read repositories.yml as utf-8, its Rails stack means that you're likely reading it in a utf-8 (non-Windows) environment. Since description_harvester enables you to index from a Windows machine, it expects your ~/.description_harvester/repositories.yml file to be utf-8.
Indexing from ArchivesSpace API to ArcLight
Once description_harvester is set up, you can index from the ASpace API to ArcLight using the to-ArcLight command.
Index by id_0
You can provide one or more IDs to index using a resource's id_0` field
harvest --id ua807
harvest --id mss123 apap106
Index by URI
You can also use integers from ASpace URIs for resource, such as 263 for https://my.aspace.edu/resources/263
harvest --uri 435
harvest --uri 1 755
Indexing by modified time
Index collections modified in the past hour: harvest --hour
Index collections modified in the past day: harvest --today
Index collections modified since las run: harvest --updated
Index collections not already in the index: harvest --new
Deleting collections
You can delete one or more collections using the --delete argument. This uses the Solr document ID, such as apap106 for https://my.ArcLight.edu/catalog/apap106.
harvest --delete apap101 apap301
Caching
description_harvester will cache collections from the ArchivesSpace API, storing them to ~/.description_harvester/cache after they are converted to the description model. Cache time is set in seconds as cache_expiration in ~/.description_harvester/config.yml. Thus, cache_expiration: 3600 will use the cached data instead of the ArchivesSpace API for data less than 1 hour old.
Plugins
Local implementations may have to override some description_harvester logic. Indexing digital objects from local systems may be a common use case.
To create a plugin, create a plugin directory, either at ~/.description_harvester or a path you pass with a DESCRIPTION_HARVESTER_PLUGIN_DIR environment variable.
Use the example default.py and make a copy in your plugin directory.
Use custom_repository() to customize how repository names are set. This has access to an ArchivesSpace resource API object.
Use read_data() to customize DigitalObject objects.
The plugin importer will first import plugins from within the package, second it will look in ~/.description_harvester, and finally it will look in the DESCRIPTION_HARVESTER_PLUGIN_DIR path.
Use as a library
You can also use description harvester in a script
from description_harvester import harvest
harvest(["--id", "myid001"])
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file description_harvester-0.5.1.tar.gz.
File metadata
- Download URL: description_harvester-0.5.1.tar.gz
- Upload date:
- Size: 29.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee958abca7a058dd02549889739b9aad8e65ee503340a0effafda8a8a26acd04
|
|
| MD5 |
df79d0866f5f1dc0d011f25bc0f376e6
|
|
| BLAKE2b-256 |
e0690608f8168b05c2d235fc6f00368a227e489dcb28e7b5e50a3929d7be673e
|
File details
Details for the file description_harvester-0.5.1-py3-none-any.whl.
File metadata
- Download URL: description_harvester-0.5.1-py3-none-any.whl
- Upload date:
- Size: 31.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edc0ac9ac41c72e1ebcfb4676fc67075c4d007f3cab7ee170b9d17f435b77a1a
|
|
| MD5 |
18c84f318d54fe199c51546e77a6d60b
|
|
| BLAKE2b-256 |
5d8ec9daa7ee639704e270b6649dfc32572d01b0f24d9fb2b4e24c7cfef07c4a
|