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?
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]",
]
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.