Automatisierungsproblem mit PDFs

Guten Tag.

Ich möchte folgende Aufgabenkette automatisieren:

  1. PDF-Downloads werden mit Hazel in einen Ordner verschoben.
  2. DT importiert diese.
  3. DT prüft, ob die Dateien OCR haben. Falls nicht, erledigt es das.
  4. DT verschiebt die Dateien dann in die dafür vorgesehene Datenbank und:
  5. löscht die Originaldatei im Ordner (1)

Bislang bekomme ich das insofern nicht hin, als das Original im Ordner bleibt und DT somit immer wieder importiert etc.

Für Tipps und Hilfe wäre ich dankbar.

Ich vermute, DT bietet keine Funktionen an, um Dateien im Dateisystem zu löschen. Zum Glück.

Du könntest das scripten. Oder aber

  • deine PDF-Downloads gleich in DT werfen, ohne den Umweg über Hazel (dessen Sinn sich mir hier ohnehin nicht erschließt).
  • und sie dann mit einem Skript weiterverarbeiten. Ich habe sowas mal hier gepostet:

Das läuft aber nicht ohne weitere Anpassungen.

Danke für die Antwort.

Hazel ist vorgeschaltet, um sicherzustellen, dass DT nur jene PDF vorgesetzt bekommt, die ich auch dort einpflegen möchte.

Es würde mir durchaus auch genügen, wenn DT diese Dateien beim Import verschieben statt kopieren würde. Das würde ja ebenfalls Duplikate vermeiden. Oder “notfalls” wenn es automatisiert möglich wäre, dass das Original nach dem Import durch DT getagged würde, so dass sich dann Hazel um das Löschen kümmern könnte. Aber Importloops und Dateidoppelungen (Original im Ordner & importiertes PDF in der DT-Database) würde ich gerne vermeiden.

Was es nicht tun wird. Zum Glück. Du kannst den Ordner, in den Hazel den Kram schiebt, in DT indizieren. Wie es hier schon sehr oft für Deinen Anwendungsfall empfohlen wurde.

Geht zum Glück auch nicht für importierte Dateien. Dann gibt es nämlich gar kein Original mehr. Du solltest Dich wirklich mit dem Unterschied zwischen “Import” und “Indizierung” beschäftigen. Import ist für das, was Dir vorschwebt, nicht der richtige Weg.

Alternativ: Bring Hazel einfach bei, die jeweiligen Dateien in DT zu importieren und dann zu löschen (natürlich das “Original”). Das geht mit einem relativ knappen “embedded” Script, in JavaScript etwa so (ungetestet):

const app = Application('DEVONthink 3');
const database = app.databases['MEINE DATENBANK];
app.import(theFile, {to: database.incomingGroup()});

Und dann in Hazel als nächste Aktion das Löschen der Datei.
Das Script importiert die Datei in den Eingang der Datenbank MEINE DATENBANK, da musst du Das Richtige™ für einsetzen.

Am Rande: Es ist nicht sinnvoll (weshalb ich immer “zum Glück” schrieb), dass eine App hinter Deinem Rücken Dateien modifiziert, für die sie nicht zuständig ist. Weshalb eben DT normalerweise eine Datei im Dateisystem weder löschen noch ihre Attribute (Tags usw) ändern kann. Ausnahme sind eben indizierte Dateien. Die aber gerne beliebig viele interessante Hürden aufbauen, weshalb man sie nur benutzen sollte, wenn man muss und wirklich verstanden hat, wie das Zusammenspiel zwischen Betriebssystem und DT dabei funktioniert.

Das sollte mit folgenden intelligenten Regeln möglich sein. Die erste Regel bearbeitet PDF-Dokumente, die bereits durchsuchbar sind, die zweite solche, die noch OCR benötigen. Idealerweise sollte der Suchbereich der Regeln auf die indizierte Gruppe eingeschränkt werden, in die Hazel die Dokumente verschiebt.


Also ich möchte mich herzlich bedanken, für die Hilfe. Bin ja neu dabei und so unerfahren wie enthusiastisch in Sachen DT.

Ich habe jetzt, insbesondere durch die Tipps von @cgrunenberg, den Workflow so hinbekommen, dass alles schnell und zuverlässig wie in meinem Eingangsposting beschrieben funktioniert. Besten Dank auch an dich @chrillek!

1 Like