Last active
October 10, 2022 19:32
-
-
Save saverkamp/9197945 to your computer and use it in GitHub Desktop.
Python class to overlay metadata in CONTENTdm via Catcher (edit only). Catcher docs at: http://contentdm.org/help6/addons/catcher.asp Sample script using this class at: https://gist.github.com/saverkamp/9198310
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from suds.client import Client | |
class Catcher(object): | |
"""A CONTENTdm Catcher session.""" | |
def __init__(self, url=url, user=user, password=password, license=license): | |
self.transactions = [] | |
self.client = Client('https://worldcat.org/webservices/contentdm/catcher/6.0/CatcherService.wsdl') | |
self.url = url | |
self.user = user | |
self.password = password | |
self.license = license | |
def processCONTENTdm(self, action, user, password, license, alias, metadata): | |
# function to connect to CatcherServices and process metadata updates | |
transaction = self.client.service.processCONTENTdm(action, url, user, password, license, alias, metadata) | |
self.transactions.append(transaction) | |
def edit(self, alias, recordid, field, value): | |
#function to edit metadata--call packageMetadata and processCONTENTdm | |
metadata = self.packageMetadata('edit', recordid, field, value) | |
self.processCONTENTdm('edit', self.user, self.password, self.license, alias, metadata) | |
def packageMetadata(self, action, recordid, field, value): | |
#function to package metadata in metadata wrapper | |
action = action | |
if action == 'edit': | |
metadata = self.client.factory.create('metadataWrapper') | |
metadata.metadataList = self.client.factory.create('metadataWrapper.metadataList') | |
metadata1 = self.client.factory.create('metadata') | |
metadata1.field = 'dmrecord' | |
metadata1.value = recordid | |
metadata2 = self.client.factory.create('metadata') | |
metadata2.field = field | |
metadata2.value = value | |
metadata.metadataList.metadata = [metadata1, metadata2] | |
return metadata |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment