mods_file_path = os.path.join(source_directory, 'mods', mods_file) mods_file_handle = open(mods_file_path) mods_contents = mods_file_handle.read() #get map_label from mods title mods_tree = etree.parse(mods_file_path) map_label = mods_tree.xpath("*[local-name() = 'titleInfo']/*[local-name() = 'title']/text()") map_label = map_label[0] if len(map_label) > 255: map_label = map_label[0:250] + '...' #print(map_label) map_label = unicode(map_label) map_name = mods_tree.xpath("*[local-name() = 'identifier']/text()")[0].strip("\t\n\r") #create a map object map_pid = fedora.getNextPID(name_space) map_object = fedora.createObject(map_pid, label = map_label) print(map_pid) #add mods datastream mods_file_handle.close() try: map_object.addDataStream(u'MODS', unicode(mods_contents), label = u'MODS', mimeType = u'text/xml', controlGroup = u'X', logMessage = u'Added basic mods meta data.') logging.info('Added MODS datastream to:' + map_pid) except FedoraConnectionException: logging.error('Error in adding MODS datastream to:' + map_pid + '\n') #add fits datastream
mods_file_handle = open(mods_file_path) mods_contents = mods_file_handle.read() #get book_label from mods title mods_tree = etree.parse(mods_file_path) book_label = mods_tree.xpath( "*[local-name() = 'titleInfo']/*[local-name() = 'title']/text()" ) book_label = book_label[0] if len(book_label) > 255: book_label = book_label[0:250] + '...' print(book_label) book_label = unicode(book_label) #create a book object book_pid = fedora.getNextPID(name_space) book_object = fedora.createObject(book_pid, label=book_label) #add mods datastream mods_file_handle.close() try: book_object.addDataStream( u'MODS', unicode(mods_contents), label=u'MODS', mimeType=u'text/xml', controlGroup=u'X', logMessage=u'Added basic mods meta data.') logging.info('Added MODS datastream to:' + book_pid) except FedoraConnectionException: logging.error('Error in adding MODS datastream to:' +
mods_contents = mods_file_handle.read() #get letter_label from mods title parser = etree.XMLParser(encoding='utf-8') mods_tree = etree.parse(mods_file_path, parser) letter_label = mods_tree.xpath("*[local-name() = 'titleInfo']/*[local-name() = 'title']/text()") letter_label = letter_label[0].strip("\t\n\r") if type(letter_label) is str: letter_label = letter_label.decode('utf-8') letter_label = letter_label.encode('ascii', 'xmlcharrefreplace').decode('utf-8') if len(letter_label) > 255: letter_label = letter_label[0:250] + '...' letter_label = unicode(letter_label) #create a letter object letter_pid = fedora.getNextPID(name_space) letter_object = fedora.createObject(letter_pid, label = letter_label) print(letter_pid) #add mods datastream mods_file_handle.close() try: letter_object.addDataStream(u'MODS', mods_contents.decode('utf-8'), label = u'MODS', mimeType = u'text/xml', controlGroup = u'X', logMessage = u'Added basic mods meta data.') logging.info('Added MODS datastream to:' + letter_pid) except FedoraConnectionException: logging.error('Error in adding MODS datastream to:' + letter_pid + '\n') #letter name letter_name = mods_tree.xpath("*[local-name() = 'identifier']/text()")[0].strip("\t\n\r")
except FedoraConnectionException, object_fetch_exception: if object_fetch_exception.httpcode in [404]: logging.info('islandora:BenshiMovie missing, creating object.\n') model_object = fedora.createObject(model_pid, label=u'BenshiMovieCModel') #add relationships model_object_RELS_EXT = fedora_relationships.rels_ext( model_object, fedora_model_namespace) model_object_RELS_EXT.addRelationship( fedora_relationships.rels_predicate('fedora-model', 'hasModel'), 'fedora-system:ContentModel-3.0') model_object_RELS_EXT.update() movie_name = mods_file_name[:mods_file_name.find('-')] movie_pid = fedora.getNextPID(name_space) benshi_pid = fedora.getNextPID(name_space) movie_label = unicode(movie_name) movie_object = fedora.createObject(movie_pid, label=movie_label) #add relationships movie_object_RELS_EXT = fedora_relationships.rels_ext( movie_object, fedora_model_namespace) movie_object_RELS_EXT.addRelationship('isMemberOf', collection_pid) movie_object_RELS_EXT.addRelationship( fedora_relationships.rels_predicate('fedora-model', 'hasModel'), model_pid) movie_object_RELS_EXT.update() benshi_label = unicode(movie_name + ' Benshi') benshi_object = fedora.createObject(benshi_pid, label=benshi_label)
#put in the benshi Islandora:BenshiMovie content model try: model_pid = u'islandora:benshiMovie' fedora.getObject(model_pid) except FedoraConnectionException, object_fetch_exception: if object_fetch_exception.httpcode in [404]: logging.info('islandora:BenshiMovie missing, creating object.\n') model_object = fedora.createObject(model_pid, label = u'BenshiMovieCModel') #add relationships model_object_RELS_EXT=fedora_relationships.rels_ext(model_object,fedora_model_namespace) model_object_RELS_EXT.addRelationship(fedora_relationships.rels_predicate('fedora-model','hasModel'),'fedora-system:ContentModel-3.0') model_object_RELS_EXT.update() movie_name = mods_file_name[:mods_file_name.find('-')] movie_pid = fedora.getNextPID(name_space) benshi_pid = fedora.getNextPID(name_space) movie_label=unicode(movie_name) movie_object = fedora.createObject(movie_pid, label = movie_label) #add relationships movie_object_RELS_EXT=fedora_relationships.rels_ext(movie_object,fedora_model_namespace) movie_object_RELS_EXT.addRelationship('isMemberOf', collection_pid) movie_object_RELS_EXT.addRelationship(fedora_relationships.rels_predicate('fedora-model','hasModel'), model_pid) movie_object_RELS_EXT.update() benshi_label=unicode(movie_name + ' Benshi') benshi_object = fedora.createObject(benshi_pid, label = benshi_label) #add relationships benshi_object_RELS_EXT=fedora_relationships.rels_ext(benshi_object,[hamilton_rdf_name_space, fedora_model_namespace]) benshi_object_RELS_EXT.addRelationship(fedora_relationships.rels_predicate('hamilton', 'isBenshiOf'), movie_pid)