Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unterschiedliche Dateien mit gleichem Namen #10

Open
wondering639 opened this issue Mar 28, 2021 · 7 comments
Open

Unterschiedliche Dateien mit gleichem Namen #10

wondering639 opened this issue Mar 28, 2021 · 7 comments

Comments

@wondering639
Copy link

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:

xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf........................................................................................................................................DOWNLOADED
xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf............................................................................................................................SKIPPED - no overwrite
xxxxx - jjjj-mm-dd - Ihre Geldprämie - application/pdf............................................................................................................................SKIPPED - no overwrite
 

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.

@retiredHero
Copy link
Collaborator

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:

  1. 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

  2. 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.

  1. Ansatz: Man schreibt die eindeutige DokumentenId von Comdirekt mit in den Dateinamen (als Prefix oder Suffix vor der Dateiendung) und prüft dann nicht auf Dokumentname, sondern auf DokumentId.
    Nachteil: Die DokumentenId ist nicht besonders hübsch.

Hier müsste sich dann nur noch die Zeit finden, das in eine Richtung tiefer zu folgen und anschließend umzusetzen.

@senshi-x
Copy link
Owner

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.

@khamui
Copy link

khamui commented Feb 23, 2022

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?

@retiredHero
Copy link
Collaborator

@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 :)

@khamui
Copy link

khamui commented Feb 23, 2022

@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.

@dedotkay
Copy link

dedotkay commented Jul 31, 2022

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...

@KiwiiKev
Copy link

KiwiiKev commented Jun 5, 2023

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 :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants