Skip to content
Snippets Groups Projects
Commit 6886c35b authored by Erwan Rouchet's avatar Erwan Rouchet
Browse files

Add fallback for volume name

parent de54e5eb
No related branches found
No related tags found
1 merge request!22Add score to transcriptions
......@@ -166,18 +166,23 @@ class ManifestsImporter(ABC):
def parse_manifest(self, stream):
"""Parse a IIIF manifest loaded as a stream."""
# Get this file's volume range ID from the top-most structure
range_id = next(struct['ranges'][0]
for struct in ijson.items(stream, "structures.item")
if struct.get('viewingHint') == "top")
stream.seek(0)
# Get our volume's structure and label
vol_struct = next(struct for struct in ijson.items(stream, "structures.item")
if struct.get('@id') == range_id)
vol_name = vol_struct['label']
logger.debug("Creating volume {}".format(vol_name))
try:
range_id = next(struct['ranges'][0]
for struct in ijson.items(stream, "structures.item")
if struct.get('viewingHint') == "top")
stream.seek(0)
# Get our volume's structure and label
vol_struct = next(struct for struct in ijson.items(stream, "structures.item")
if struct.get('@id') == range_id)
vol_name = vol_struct['label']
except StopIteration:
logger.debug("Invalid structures in manifest - using manifest label as volume name")
stream.seek(0)
vol_name = next(ijson.items(stream, 'label'))
# Create a volume and a register
logger.debug("Creating volume {}".format(vol_name))
vol, _ = Element.objects.get_or_create(name=vol_name, type=ElementType.Volume)
doc, _ = Element.objects.get_or_create(name=vol_name, type=ElementType.Register)
ElementLink.objects.get_or_create(parent=vol, child=doc)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment