Open wondering639 opened 3 years ago
hier habe ich schon vor Monaten drüber nachgedacht, aber das ist zu kurz gedacht.. wenn man (vermeintlich) doppelte Dateien herunterlädt und immer das Datum+Zeitstempel des downloads anhängt... dann hätte man im obrigen Beispiel die Dateien: xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf.pdf xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf.2021.01.01T12:12:12:12.1234.pdf xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf.2021.01.01T12:12:12:12.1235.pdf
Beim nächsten Abgleich / Download der Dateien würde das Skript erkennen, dass 'xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf.pdf' schon einmal heruntergeladen wurde, es aber nicht überschreiben, sondern erneut herunterladen mit neuem Timestamp. und das für alle drei Dateien. Das heißt, bei einem erneuten Ausführen des Downloads wären sechs Dateien lokal vorhanden: die drei alten: xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf.pdf xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf.2021.01.01T12:12:12:12.1234.pdf xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf.2021.01.01T12:12:12:12.1235.pdf
und die drei alten neu heruntergeladen: xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf.2021.01.14T12:12:12:12.1234.pdf xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf.2021.01.14T12:12:12:12.1235.pdf xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf.2021.01.14T12:12:12:12.1236.pdf
Wenn die drei Geldprämien dann im Folgejahr auch noch am gleichen Tag kommen wächst der heruntergeladene Müllberg ziemlich an, der immer händisch auseinander sortiert werden müsste...
Es wird sich ja nirgends "gemerkt", welche Dateien schon in der Vergangenheit heruntergeladen wurde, es wird ein einfacher Dateinamen-Abgleich durchgeführt.
Lösungsansätze hierfür:
Ansatz: Das Skript um eine Möglichkeit erweitern, das lokal vorhält, welche Dateien schon heruntergeladen wurden (so kann abgeglichen werden, ob es "in der Vergangenheit" zu automatisierten Umbenennungen von Dokumenten kam
Ansatz: Man könnte das "automatisch ein Timestamp an den Dateinamen hängen" umsetzen, wenn man die Nutzung etwas ändert: Man müsste dann z.B. die "Archiviert"-Funktion der Dokumente nutzen und dann nur die "nicht archivierten Dokumente" herunterladen und jedes heruntergeladene Dokument wird automatisch ins Online-Archiv verschoben. Nachteil: Man dürfte manuell nichts ins Archiv verschieben, sonst wird der Archiv-Inhalt nicht heruntergeladen.
Der zweite Ansatz ist ggf. der einfachere, führt jedoch bei der "nicht Online-Archivierung-Nutzung" zu vielen doppelt heruntergeladenen Dokumenten.
Hier müsste sich dann nur noch die Zeit finden, das in eine Richtung tiefer zu folgen und anschließend umzusetzen.
Betrifft halt nur sehr wenige Dokumente, die meisten haben ja unique Names. Ich lass das Issue offen, PRs gern gesehen, aber keine Prio für mich.
Nur zufaellig zu diesem Issue gestolpert. Danke fuer das Tool, sehr hilfreich und spart jede Menge Zeit. Idee zur Loesung des Problems.
Im Prinzip der 3. Ansatz nur anstatt DokumentId, waere es moeglich das Datum des Posteingangs anzuhaengen? In Kombination mit dem Namen und des Datums waere es quasi unique?
@khamui : Das mit dem Datum reicht ja nicht aus, siehe erster Post. Wenn da das Datum schon unterschiedlich wäre, würden die Dokumente schon unterschiedlich ("unique") heißen.. da hilft es nicht nochmals zusätzlich das Datum in den Namen zu schreiben :)
@retiredHero ja das hatte ich gelesen. Allerdings spreche ich nicht vom Downloadzeitstempel, sondern vom Postboxdatum. Wenn das überhaupt so einfach zu bekommen/ermitteln ist (kenne die API nicht).
also xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf_2022-02-23.pdf
wird dasselbe file neu heruntergeladen bleibt es trotzdem xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf_2022-02-23.pdf
im naechsten jahr xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf_2023-02-23.pdf
aber wie gesagt, ich stelle es mir vielleicht auch zu einfach vor mit dem postbox datum.
Vielen Dank für das praktische Tool! Die documentId ist doch ein guter Ansatz, um Dokumente mit gleichem Namen zu unterscheiden. Da ich gerade mal alle Dokumente herunterladen wollte, habe ich das bei mir so eingebaut:
--- a/main.py
+++ b/main.py
@@ -287,7 +287,8 @@ class Main:
# for idx in range(len(self.onlineDocumentsDict)): # documentMeta in enumerate(self.onlineDocumentsDict):
for idx in self.onlineDocumentsDict:
documentMeta = self.onlineDocumentsDict[idx]
- docName = documentMeta["name"]
+ docId = documentMeta["documentId"]
+ docName = documentMeta["name"] + "_" + docId[1:10]
firstFilename = docName.split(" ", 1)[0]
docMimeType = documentMeta["mimeType"]
docCreateDate = documentMeta["dateCreation"]
Mir persönlich gefällt es sogar noch besser, zusätzlich das Erzeugungsdatum des Dokuments vorne an den Dateinamen zu hängen. Das ging dann so (etwas umständlicher, damit Unterverzeichnisse kein Datum bekommen):
--- a/main.py
+++ b/main.py
@@ -287,10 +287,12 @@ class Main:
# for idx in range(len(self.onlineDocumentsDict)): # documentMeta in enumerate(self.onlineDocumentsDict):
for idx in self.onlineDocumentsDict:
documentMeta = self.onlineDocumentsDict[idx]
- docName = documentMeta["name"]
+ docId = documentMeta["documentId"]
+ docCreateDate = documentMeta["dateCreation"]
+ docName = documentMeta["name"] + "_" + docId[1:10]
firstFilename = docName.split(" ", 1)[0]
+ docName = docCreateDate + "_" + docName;
docMimeType = documentMeta["mimeType"]
- docCreateDate = documentMeta["dateCreation"]
isDocAdvertisement = (
True if str(documentMeta["advertisement"]).lower() == "true" else False
)
Vielleicht kann es ja noch jemand brauchen...
Bin eben auf dasselbe Problem gestoßen, da ich zwei Sparpläne mit gleichen Aktien aktiv hatte. Dementsprechend wurde immer eins der beiden Dokumenten beim Download geskippt. Die Änderung mit der Dokument-ID hat das Problem gelöst :)
Erstmal mal danke für dieses tolle Tool, hat prinzipiell super funktioniert. Allerdings werden Dateien mit gleichem Namen nicht automatisch umbenannt, sondern nur die erste Datei heruntergeladen. Beispiel:
Vorschlag: Bei (vermeintlich) doppelten Dateien z.B. das Datum an den Dateinamen anhängen. Damit entsteht reproduzierbar (für Abgleich, ob bereits in Vergangenheit heruntergeladen wurde) ein eindeutiger Dateiname.