Automator Programm

B

benzrecordings

Mitglied
Thread Starter
Dabei seit
30.11.2005
Beiträge
39
Reaktionspunkte
0
Hallo liebe Community,
ich habe eine Frage zu Automator. Und zwar möchte ich ein kleines Programm "bauen" welches mit aus einer "txt" Datei bestimmte Absätze löscht und diese dann als PDF exportiert.

Im Detail gehts um einen Chatverlauf aus Whatsapp. Das ist eine einfache Textdatei. Da die Fotos und Videos aus dem Chat nicht enthalten sind gibt es immer wieder Zeilen mit dem Ende "<Mediendatei entfernt>". Genau diese Zeilen möchte ich komplett löschen. Und anschließend das Textdokument im Format DIN A5 exportieren.

Ich habe in Automator bereits ein neues Programm erstellt. Die erste Aktion ist "Nach Finder-Objekten fragen". Damit kann ich dann ja das Textdokument öffen. Danach folgt "Absätze filtern". Dort habe ich eingestellt: "Absätze ausgeben: Enden mit <Mediendatei entfernt>".

Jetzt komm ich nicht weiter. Ich weiß jetzt nicht, wie ich diese Absätze entfernen kann.

Hat jemand von Euch Erfahrung damit?
 
Oh ich sehe gerade, dass es auch ein extra Automator Forum gibt. Sorry. Kann ich das irgendwie dahin verschieben?
 
Threads verschieben kann nur ein Moderator. Aber das ist vielleicht nicht nötig, denn ich denke ich habe eine Lösung für dich:

Als erstes solltest du nach der Aktion "Nach Finder-Objekten fragen" noch die Aktion "Inhalt des TextEdit-Dokuments abfragen" einfügen.

Dann die Absätze filtern, aber nicht mit der Option "Enden mit", sondern mit "Enden nicht mit". Dadurch erfasst Automator den Text, der schlussendlich übrigbleiben soll. Und diesen verfrachtest du dann mit der nächsten Aktion: "Neue Textdatei" in ein neues Dokument und speicherst es.

So sieht das ganze in Automator aus:
Automator.jpg
 
Hi JackTirol,
vielen Dank für deine Antwort. Ich habe das so ausprobiert. Ich bekomme dann die Fehlermeldung "Bei der Aktion Inhlat des TextEdit-Dokuments abfragen ist ein Fehler aufgetreten." Wenn Ich die AKtion in Automator teste sagt er mir, "Es ist kein TextEdit Dokument geöffnet". Die Datei ist doch eine "txt".

Weißt du vielleicht Rat?
 
Mit welchem Programm wird die Datei geöffnet, wenn du sie nur per Doppelklick öffnest? Falls das nicht TextEdit ist, könntest du über die Datei-Informationen (Cmd-i) definieren, dass .txt-Dateien standardmäßig mit TextEdit geöffnet werden sollen (auf "Alle ändern…" klicken). Dann sollte das eigentlich funktionieren.
 
Hi,
ja es wird Standartmässig mit Textedit geöffnet. Habe das nochmal überprüft und eingestellt. Bekomme immer noch die gleiche Fehlermeldung...
 
Ok. Dann mal weiter mit dem Automatorablauf: Füge nach der ersten Aktion "Nach Finder-Objekten fragen" noch die Aktion "Finder-Objekte öffnen" mit der Option "Öffnen mit: TextEdit" ein und teste das ganze nochmal. Die erste Aktion ist nur eine Abfrage, die ein Ergebnis für die nächste Aktion bereitstellt. Kein Befehl, die angegebene Datei zu öffnen. Hätte mir auch gleich auffallen können. Sorry! :)
 
Ah OK. Ich habs soweit geändert. Jetzt wird das Textdokument auch geöffnet und unter einem anderen Namen gespeichert. Die Zeilen mit dem Ende <Mediendatei entfernt> sind aber immer noch vorhanden. Ich glaube das Problem liegt daran, dass es keine Absätze sondern Zeilen sind. Wenn ich testweise mal zwischen einzelnen Zeilen mit diesem Ende einen Absatz davor und dahinter einfüge, wird dieser auch entfernt. Wie bekomme ich denn die Zeilen raus?
 
Ein einfaches Kommando wie das nachfolgende...
sed -e /<Mediendatei entfernt>/c\ ausgangsdatei.txt >bereinigtedatei.txt
...würde den Job allerdings auch tun.
Also wenn es wirklich nur darum geht, diesen Text zu entfernen, wäre es vermutlich der schnellere Weg.


(Ohne Gewähr, bitte sed Dokumentation checken)
 
Zuletzt bearbeitet:
Vielleicht bittest du nun doch einen Moderator, diesen Thread in das betreffende Unterforum zu verschieben. Mit Automator alleine kommst du hier nicht weiter, da müssen die AppleSkript-Profis ran (zu denen ich mich nicht zähle!). :)
 
Ich habe mal ein Script geschrieben, dass einen WhatsApp-Chatverlauf in eine Website umwandelt und die Bilder einbindet. Eventuell ist das was für dich, das lässt sich ja in Safari einfach als PDF speichern.

Das Skript fragt nach der Textdatei und erstellt dann eine HTML- und eine CSS-Datei. Über die CSS-Datei kann die Website beliebig angepasst werden. Damit die Bilder eingefügt werden, müssen sie im selben Verzeichnis liegen wie die HTML-Datei. So sieht das Ergebnis aus:

Bildschirmfoto 2014-05-02 um 13.55.08.jpg

Hier bekommst du das Skript: http://cl.ly/092h3Q2d0q2E

Und das hier ist der Quellcode:

Code:
#!/bin/bash

file="$1"
cd "$(dirname "$file")";
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <link rel="stylesheet" media="screen" href="style.css">
    </head>
    <body>
        <div>
        <h1>WhatsApp Chatverlauf</h1>' >WhatsApp-Chat.htm
echo 'body {
    font-family:Lucida Grande, Verdana, Arial;
    align: center;
    padding: 50px; 
    background-color: #EEEEEE; 
}
h1 {
    font-size: 40px;
    color: #60b82d;
    margin: 0px; 
    text-align: center;
}
h2 {
    font-size: 10px; 
    color: grey; 
    margin: 0px; 
    text-align: center;
}
h3 {
    font-size: 14px; 
    font-weight: bold; 
    color: black; 
    margin: 0px; 
}
p {
    font-size: 14px; 
    color: black; 
    margin: 2px; 
}
img {
    max-width: 600px;
}
div {
    width: 600px; 
    margin: 3px auto; 
    padding: 5px; 
    background-color: white; 
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
}' >style.css
cat "$file" |iconv -t UTF-8|tr -d '"'|grep -v "^$" |\
while read Line
do
  date=$(echo $Line | grep -Eo '^[0-9.]{8} [0-9:]{8}');
  sender=$(echo $Line | sed -E 's/^.{19}//g;' | grep -Eo '^[^ ][^:]*:');
  message=$(echo $Line | sed "s/$date: //g;s/$sender//g");
  if [[ "$message" = *"<angehängt>"* ]]; then
    image=$(echo $message | grep -Eo '[0-9A-Za-z]*.jpg')
    message=$(echo "<img src=\"$image\">")
  fi
  if [[ "$sender" = '' && "$date" = '' ]]; then
    echo "        <p>$message</p>" >>WhatsApp-Chat.htm;
  else
    echo "        </div><div><h2>$date</h2><h3>$sender</h3><p>$message</p>" >>WhatsApp-Chat.htm;
  fi
done
echo '        </div>
    </body>
</html>' >>WhatsApp-Chat.htm
 
  • Gefällt mir
Reaktionen: Phrasenbieger
Hey Pill, cooles Script! Vielleicht kann ich das irgendwann nochmal verwenden. Momentan möchte ich aber ne reine Textdatei ohne Bilder haben. Ich habe leider von Apple Script gar keine Ahnung :( Hat da jemnd ne Idee, wie ich einzig die Zeilen, die mit <Mediendatei entfernt> enden, löschen kann?
 
Öffne die Datei mit TextEdit, cmd+F für Suchen drücken, Häkchen bei "Ersetzen" setzen, Suchbegriff eingeben und auf Alle klicken.

Das ist wahrscheinlich das einfachste ;)
 
Das löscht mir aber nur den Text "<Mediendatei entfernt>". Ich möchte aber die ganze Zeile löschen also auch Davor den Autor / Datum / und Doppelpunkt.... Der Chatverlauf hat über 400 Seiten :(
 
Das löscht mir aber nur den Text "<Mediendatei entfernt>". Ich möchte aber die ganze Zeile löschen also auch Davor den Autor / Datum / und Doppelpunkt.... Der Chatverlauf hat über 400 Seiten :(

Ja dann nutze doch meinen einzeiligen Befehl von oben. Bei mir hat es funktioniert.
 
hi phrasenbieger, wie kann ich den in automator integrieren?
 
Das weiß ich nicht.
Du machst eine Unix shell auf (Terminal)

Gehst in das Verzeichnis wo die Datei steht
(mit dem cd Befehl)

Und dann setzt Du den Befehl ab.

Fertig.
 
Der Befehl als AppleScript:

set theFile to POSIX path of (choose file)
do shell script "sed -i '' -e '/<Mediendatei entfernt>/c\\' " & quoted form of theFile

Aber Achtung: Das -i bewirkt, dass die Originaldatei bearbeitet wird, soll ein Kopie des Originals erhalten bleiben, kannst du statt ... -i '' ... einfach -i 'old' schreiben, dann wird das Original mit dem Zusatz "-old" gespeichert.

Automator ist mir zu kompliziert ;) kann ich dir aber auch zeigen, wenn das gewünscht ist.
 
  • Gefällt mir
Reaktionen: Phrasenbieger
Vielen Dank Pill, so klappt es!

Ich habe aber auch nochmal ne Frage zu deinem anderen Script. Ich habe das mal mit den Bildern ausprobiert. soweit klappt das ja auch wunderbar. Leider werden die Emoticons bzw. kleinen Icons nicht richtig angezeigt. Hast du dafür auch eine Lösung?
 
Wenn die Formatierung auf UTF-8 steht, dann werden auch die Icons angezeigt.
 
Zurück
Oben Unten