Open all XML objects of one project

tasks:

  • list all xml objects of the digitale bibliothek.

  • try to also read its edition/work metadata.

  • open xml (text/plain via aggregator

1. get all text/xml and find the edition

note, this may not always be there / see goethes briefe -> the first 3100 objects

from tgclients import TextgridSearch

tgsearch = TextgridSearch()

i = 3200
l = 1

# first the filter
results = tgsearch.search(filters=['project.id:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c', 'format:text/xml'], start=i, limit=l, path=True)
print(results.hits)

for result in results.result:
    tguri = result.object_value.generic.generated.textgrid_uri.value
    #print( tguri + ' - ' + result.object_value.generic.provided.title[0])

    # get edition work metadata for this xml
    ewmd = tgsearch.edition_work_metadata_for(tguri)
    print( '\n---' + str(i) + '---' + tguri)
    i += 1
    if len(ewmd.result) >= 3:
        for md in ewmd.result:
            mduri = md.object_value.generic.generated.textgrid_uri.value
            title = md.object_value.generic.provided.title[0]
            mime = md.object_value.generic.provided.format
            if md.object_value.edition != None:
                print( mduri + ' - ' + md.object_value.edition.agent[0].value + ' : ' + title + ' - ' + mime )        
            else:
                print( mduri + ' - ' + title + ' - ' + mime )        
    print("\n---path:")
    for pg in result.path_response.path_group:
        for p in pg.path:
            for entry in p.entry:
                print(entry.textgrid_uri + ": " + entry.title + " - " + entry.format)
    
106832

---3200---textgrid:mb11.0
textgrid:mb0z.0 - Natur und Sehnsucht - text/tg.work+xml
textgrid:mb10.0 - Dehmel, Richard Fedor Leopold : Natur und Sehnsucht - text/tg.edition+tg.aggregation+xml
textgrid:mb11.0 - Natur und Sehnsucht - text/xml
textgrid:mbvr.0 - Dehmel, Richard Fedor Leopold : Erlösungen - text/tg.edition+tg.aggregation+xml
textgrid:mbvs.0 - Erlösungen - text/tg.work+xml

---path:
textgrid:m9w0.0: Dehmel, Richard Fedor Leopold - text/tg.collection+tg.aggregation+xml
textgrid:mbwv.0: Gedichte - text/tg.aggregation+xml
textgrid:mbvr.0: Erlösungen - text/tg.edition+tg.aggregation+xml
textgrid:mbnp.0: Zweite Stufe: Liebe - text/tg.aggregation+xml
textgrid:mb10.0: Natur und Sehnsucht - text/tg.edition+tg.aggregation+xml

2. get all editions and find text/xml child objects

get plain text for text/xml objects with aggregator

from tgclients import TextgridSearch, Aggregator

tgsearch = TextgridSearch()
aggregator = Aggregator()

# TODO: we need constants for mimetypes
l = 5

# first find all editions
results = tgsearch.search(
            filters=[
                'project.id:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c', 
                'format:text/tg.edition+tg.aggregation+xml'],
            limit=l)
print(results.hits)

# loop through the results
for result in results.result:
    edition_uri = result.object_value.generic.generated.textgrid_uri.value
    edition_agent = result.object_value.edition.agent[0].value
    
    # get children of each edition
    for child in tgsearch.children(edition_uri).textgrid_uri:
        cg = tgsearch.info(textgrid_uri=child).result[0].object_value.generic
        child_uri = cg.generated.textgrid_uri.value
        # only list text/xml
        if cg.provided.format == 'text/xml':
            print(edition_agent + ' - ' +  cg.provided.title[0])
            print(aggregator.text(child_uri).text[0:100])
            print("---")
93462
Hunold, Christian Friedrich - Oratorium aus dem 37. Psalm
Oratorium aus dem 37. Psalm
Erzürne dich nicht über die Bösen/ sey nicht neidisch über die Ubelthäte
---
Hunold, Christian Friedrich - Uber Sr. Königl. Majestät von Preußen Wahlspruch
Uber Sr. Königl. Majestät von Preußen Wahlspruch: Suum cuique
Der Himmel gab uns Dich/ die Tugend di
---
Hunold, Christian Friedrich - Auf Se. Durchl. den Printzen Eugenium
Auf Se. Durchl. den Printzen Eugenium
Schweigt/ die ihr lebet still/ bemercket nur die Leichen/
Die 
---
Hunold, Christian Friedrich - Auf Se. Durchl. den Printzen Eugenium Gespräch
Auf Se. Durchl. den Printzen Eugenium Gespräch
Warum that
Cæsar
doch so viel in kurtzen Zeiten?
Kein
---
Hunold, Christian Friedrich - Uber eine alte Courtisanin, die Schach-matt
Uber eine alte Courtisanin, die Schach-matt
Dein Ruhm ist nicht darnach/ daß ich davon was melde/
Al
---

3. get all editions and plain text for all contained xml with aggregator

from tgclients import TextgridSearch, Aggregator

tgsearch = TextgridSearch()
aggregator = Aggregator()

l = 5
results = tgsearch.search(
            filters=[
                'project.id:TGPR-372fe6dc-57f2-6cd4-01b5-2c4bbefcfd3c', 
                'format:text/tg.edition+tg.aggregation+xml'],
            limit=l)
print(results.hits)

for result in results.result:
    edition_uri = result.object_value.generic.generated.textgrid_uri.value
    edition_agent = result.object_value.edition.agent[0].value
    edition_title = result.object_value.generic.provided.title[0]

    print(edition_agent + ' - ' + edition_title)
    print(aggregator.text(edition_uri).text[0:100])
    print("---")
    
93462
Hunold, Christian Friedrich - Oratorium aus dem 37. Psalm
Oratorium aus dem 37. Psalm
Erzürne dich nicht über die Bösen/ sey nicht neidisch über die Ubelthäte
---
Hunold, Christian Friedrich - Uber Sr. Königl. Majestät von Preußen Wahlspruch
Uber Sr. Königl. Majestät von Preußen Wahlspruch: Suum cuique
Der Himmel gab uns Dich/ die Tugend di
---
Hunold, Christian Friedrich - Auf Se. Durchl. den Printzen Eugenium
Auf Se. Durchl. den Printzen Eugenium
Schweigt/ die ihr lebet still/ bemercket nur die Leichen/
Die 
---
Hunold, Christian Friedrich - Auf Se. Durchl. den Printzen Eugenium Gespräch
Auf Se. Durchl. den Printzen Eugenium Gespräch
Warum that
Cæsar
doch so viel in kurtzen Zeiten?
Kein
---
Hunold, Christian Friedrich - Uber eine alte Courtisanin, die Schach-matt
Uber eine alte Courtisanin, die Schach-matt
Dein Ruhm ist nicht darnach/ daß ich davon was melde/
Al
---