Export von Dokumenten

Hi Zusammen,

ich versuche gerade mit Ecmind_blue_client zur Trefferliste (lol_query) die Dokumente zu exportieren. Aber irgendwie finde ich keine Möglichkeit. Es kann ja nicht so funktionieren, dass ich mit der foreign_id beim Archivmedium suchen gehe.

Kann mich da mal bitte jemand in die richtige Richtung drängen?

Danke und Gruss

Sascha

1 „Gefällt mir“

Hallo @SMU,

hier ein relativ vollständiges Beispiel, wenn ich die Frage richtig verstehe:

Wenn ich dieses starte, gibt es aus:

/home/rk/Repos/query_and_export_example/example.py

INFO:root:Connecting.
INFO:root:Exporting object id #155 with doc type 'StE Personalien'.
INFO:root:Store object id 155 with 119992 bytes to 'export/155_0.pdf'
INFO:root:Exporting object id #441 with doc type 'StE Personalien'.
INFO:root:Store object id 441 with 1103926 bytes to 'export/441_0.pdf'
INFO:root:Exporting object id #2430 with doc type 'Steuerrechnung'.
INFO:root:Store object id 2430 with 61044 bytes to 'export/2430_0.pdf'
INFO:root:Done.

Hier die Kurzfassung des Codes ohne Ausgaben etc. zur maximalen Übersichtlichkeit hier in der Community:

import os
from ecmind_blue_client.tcp_pool_client import TcpPoolClient

os.makedirs("export", exist_ok=True)
client = TcpPoolClient("demo:4000:1", __file__, "root", "optimal")

for doc in client.lol_query("Dokument"):
    doc_id = doc["OBJECT_ID"]
    files = client.store_in_cache_by_id(doc_id)

    for no, file in enumerate(files):
        filename = f"export/{doc_id}_{no}{file.extension}"
        file.store(filename)
Hier der Code in voller Länge
import logging
import os

from ecmind_blue_client.tcp_pool_client import TcpPoolClient as Client
from ecmind_blue_client import QueryConditionGroup, QueryConditionField

def main():
    os.makedirs("export", exist_ok=True)    # Prepare target path
    
    for doc in client.lol_query(
        object_name="Dokument",             # Internal name of a test document type
        conditions=[QueryConditionGroup(  # Example condition
            object_name="Dokument",
            field_conditions=QueryConditionField(
                field="Dokumenttyp", 
                values=["Steuer*", "Rechnung", "*Personalien"]
            )
        )]
    ):
        doc_id = doc["OBJECT_ID"]
        logging.info(
            "Exporting object id #%s with doc type '%s'.", 
            doc_id, 
            doc["Dokumenttyp"]
        )
        files = client.store_in_cache_by_id(doc_id)
        if not len(files):
            logging.warning("Object id #%s has no files.", doc_id)
            continue
        
        for no, file in enumerate(files):
            filename = f"export/{doc_id}_{no}{file.extension}"
            logging.info(
                "Store object id %s with %s bytes to '%s'", 
                doc_id,
                file.size(),
                filename,
            )
            file.store(filename)
    
if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    logging.info("Connecting.")
    client = Client(
        connection_string="demo:4000:1",
        appname=__file__,
        username="root",
        password="optimal",
    )
    main()
    logging.info("Done.")

Und die pyproject.toml:

[project]
name = "query_and_export_example"
version = "0.1.0"
requires-python = ">=3.12"
dependencies = [
    "ecmind_blue_client[tcp]",
]
1 „Gefällt mir“

Hi @rk ,

wahnsinn. Danke.

Da dein Skript aber auch so überhaupt nicht wollte, bin ich dann darüber gestolpert, dass da noch eine Version 0.2.6 von der Lib auf dem Server war. Was mir aber total gefehlt hat war das store_in_cache_by_id. Das war genau der benötigte gedankliche Schubser.

Danke und schöne Wochenende.

Sascha

O, dass ist wirklich nicht mehr taufrisch. Freut mich, wenn es jetzt läuft. Weiterhin viel Erfolg und schönes Wochenende!