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:nqv1.0
textgrid:nqv0.0 - Bedenken - text/tg.work+xml
textgrid:nqv1.0 - Bedenken - text/xml
textgrid:nqv2.0 - Grillparzer, Franz : Bedenken - text/tg.edition+tg.aggregation+xml

---path:
textgrid:nnv4.0: Grillparzer, Franz - text/tg.collection+tg.aggregation+xml
textgrid:ns3b.0: Gedichte - text/tg.aggregation+xml
textgrid:nq8j.0: Epigramme - text/tg.aggregation+xml
textgrid:nvg1.0: 1855 - text/tg.aggregation+xml
textgrid:nqv2.0: Bedenken - 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
Heyse, Paul - Nach der Natur
Nach der Natur
Pinsel, Griffel und Meißel und was irgend
Macht hat, schwankende Formen festzubannen,
---
Heyse, Paul - 8. [Wisset, ich war in Meta; ich trug zur Tante die Bänder]
8.
Wisset, ich war in Meta; ich trug zur Tante die Bänder,
Die ich gewebt; sie hält dort sie im Lade
---
Heyse, Paul - 12. Hermann Lingg
12.
Hermann Lingg
Von langer Seelenwandrung heimgekehrt
Drängt's eine Dichterseele, zu berichten,
Wa
---
Heyse, Paul - 7. Emanuel Geibel
7.
Emanuel Geibel
Zur Zeit, da laute Zwietracht der Parteien
Die Luft durchhallte Deutschland auf un
---
Heyse, Paul - 2. Joseph Freiherr v. Eichendorff
2.
Joseph Freiherr v. Eichendorff
Der scheidenden Romantik jüngster Sohn,
Ihr Benjamin, statt aller 
---
Heyse, Paul - 11. Hermann Kurz
11.
Hermann Kurz
Wohl hast du müssen so von hinnen eilen,
O Freund, mit tiefgeschlossenem Visier;
Do
---
Heyse, Paul - 6. Eduard Mörike
6.
Eduard Mörike
Ein Schwabenkind, in traut umschränkter Enge
Am Quell der Heimatsagen aufgesprossen
---
Heyse, Paul - 3. Friedrich Rückert
3.
Friedrich Rückert
Kein einzler Baum, ein Wald mit tausend Zweigen,
Und Vögel aller Zungen, aller 
---
Heyse, Paul - 9. Gottfried Keller
9.
Gottfried Keller
Wie an der Regenwand, der nüchtern grauen,
Der Bogen funkelnd steht in freud'ger
---
Heyse, Paul - 10. Theodor Storm
10.
Theodor Storm
So zartgefärbt wie junge Pfirsichblüten,
So duftig wie der Staub auf Falterschwing
---
Heyse, Paul - 4. Nicolaus Lenau
4.
Nicolaus Lenau
Ein Edelhirsch im Forst auf grünem Rasen,
Auf einmal hört er Treiberruf erschallen
---
Heyse, Paul - 8. Annette von Droste-Hülshoff
8.
Annette von Droste-Hülshoff
Ein Herz, so stark, das Schwerste zu verwinden,
So warm, um leicht in
---
Heyse, Paul - 5. Adalbert von Chamisso
5.
Adalbert von Chamisso
Franzos' an Blut und ritterlichem Feuer,
Ein Deutscher an Gemüt und zartem 
---
Heyse, Paul - 1. Friedrich Hölderlin
Zwölf Dichterprofile
1.
Friedrich Hölderlin
Mein Liebling du! Mit hellem Griechenblick
Hattst du erm
---
Heyse, Paul - Cives Romani
Cives Romani
Neu überhäuft mit Macht und Glanz und Ehren,
Könnt ihr euch nicht erneun an Herz und Si
---
Heyse, Paul - [Warum schweigst du, liebe Seele]
[Warum schweigst du, liebe Seele]
Warum schweigst du, liebe Seele?
Ach, verhehle
Nichts dem Liebsten
---

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
Heyse, Paul - Nach der Natur
Nach der Natur
Pinsel, Griffel und Meißel und was irgend
Macht hat, schwankende Formen festzubannen,
---
Heyse, Paul - 8. [Wisset, ich war in Meta; ich trug zur Tante die Bänder]
8.
Wisset, ich war in Meta; ich trug zur Tante die Bänder,
Die ich gewebt; sie hält dort sie im Lade
---
Heyse, Paul - Zwölf Dichterprofile
Zwölf Dichterprofile
1.
Friedrich Hölderlin
Mein Liebling du! Mit hellem Griechenblick
Hattst du erm
---
Heyse, Paul - Cives Romani
Cives Romani
Neu überhäuft mit Macht und Glanz und Ehren,
Könnt ihr euch nicht erneun an Herz und Si
---
Heyse, Paul - [Warum schweigst du, liebe Seele]
[Warum schweigst du, liebe Seele]
Warum schweigst du, liebe Seele?
Ach, verhehle
Nichts dem Liebsten
---