slub / mets-mods2tei

Convert bibliographic meta data in MODS format to TEI headers
Apache License 2.0
8 stars 7 forks source link

IndexError: list index out of range #51

Closed tboenig closed 2 years ago

tboenig commented 3 years ago

Hi,

I only want to create teiHeader. The example works: mm2tei "https://digital.slub-dresden.de/oai/?verb=GetRecord&metadataPrefix=mets&identifier=oai:de:slub-dresden:db:id-453779263" But my data always gives the following error-message.

(env) mm2tei bsb00000002_mets.xml
Traceback (most recent call last):
  File "mm2tei", line 8, in <module>
    sys.exit(cli())
  File "github/mets-mods2tei/env/lib/python3.8/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "github/mets-mods2tei/env/lib/python3.8/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "github/mets-mods2tei/env/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "github/mets-mods2tei/env/lib/python3.8/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "github/mets-mods2tei/env/lib/python3.8/site-packages/mets_mods2tei/scripts/mets_mods2tei.py", line 35, in cli
    mets.fromfile(f)
  File "github/mets-mods2tei/env/lib/python3.8/site-packages/mets_mods2tei/api/mets.py", line 117, in fromfile       
    self.__spur()
  File "github/mets-mods2tei/env/lib/python3.8/site-packages/mets_mods2tei/api/mets.py", line 148, in __spur
    roles = name.get_role()[0].get_roleTerm()
IndexError: list index out of range

bsb00000002_mets.zip

kba commented 3 years ago

In line 148 of mets_mods2tei/api/mets.py:

            roles = name.get_role()[0].get_roleTerm()

Replace this with

            roles = name.get_role()[0].get_roleTerm() if name.get_role() else []