Chat aus Daten-Backup in HTML konvertieren

Stelle deine Frage öffentlich an die Threema-Forum-Community - über 4.800 Mitglieder helfen dir weiter. > Frage stellen <
  • okay...Gedanken"fehler" von dir ;). Das, was du da als Script runtergeladen hast, ist die Web-Seite selbst!

    Öffne mal die Webseite im Browser - dort findest du das Script als *.ps1-Datei (siehe Bild, rot eingekreist). DAS ist das Script, das du brauchst! :)

  • Oh ja! Ich hatte mit Rechtsklick und "Ziel speichern unter" natürlich ganz etwas Falsches heruntergeladen. Und weil ich mit PowerShell bisher keine Berührungspunkte hatte, ist mir auch nicht aufgefallen, dass der Content für ein ps1-Script kompletter Unsinn ist.

    Jetzt klappt es. Ich danke dir vielmals!!

    Gruß

    Andreas

  • Würde das auch in macOS funktionieren? Immerhin handelt es sich ja um eine Unix-Version.

    Theoretisch. Leider hat der grep Befehl im macOS nicht alle Funktionen, wenn du aber mit brew GnuGrep installierst und das Scripts anpasst, sollte das gehen.

    Ich hänge das Script mal hier an, ich musst die Endung auf txt ändern, also bitte nach Download nach threema2html.sh umbenennen. Es steht auch auf Github zur Verfügung: https://github.com/1000dinge/threema2html

    Vorgehen:

    • Im Chat: "Chat exportieren", "Mit Medien"
    • ZIP auf den Rechner herunterladen (z.B. über iCloud Drive) und entpacken
    • Script aufrufen und Ausgabe umleiten: threema2html.sh messages.txt > messages.html

    Zur Info:

    • Ich habe das mit ChatGPT erstellt (es ist irre was das Ding kann) und dann von Hand verfeinert.
    • Der Threema Export ist aktuell nicht 100% stimmig, vor allem wenn der Chat einen sehr langen Zeitraum umfasst. Der Script kommt mit den meisten Problemchen klar.
    • Bilder werden mit Voransichtgröße angezeigt, Videos sollten auch eine Voransicht haben, alles Andere wird als schlichter Link dargestellt.
    • Optisch lehnt sich der Output an WhatsApp an, fand ich schöner. Ansonsten kann das im CSS-Teil des Scripts angepasst werden.
    • Getestet mit Threema für iOS in Version 6.3.1 (6342). Script getestet auf Ubuntu 24.04.1 LTS. Chrome kann die generierte Seite problemlos darstellen.
    • Ihr könnt das Script gerne anpassen und korrigieren. Gerne auch weiter verteilen, dann vielleicht mit dem Verweis auf den Thread hier.

    Bekannte Probleme:

    • Es kommt vor, das Bilder als Datei-Link angezeigt werden, dann hat Threema das Bild mit dem Tag "Datei" exportiert. Ich habe das Script so angepasst, dass es das teilweise korrigiert.
    • Es könnte Probleme geben, wenn ein Chat-Text Zeilenumbrüche enthält.
    • Trat bei mir auf: wenn man das HTML mit Safari öffnet hört Safari irgendwann auf Bilder zu laden (bei sehr langen Chats mit vielen Bildern).

    Ich hoffe es hilft dem einen oder anderen. Üblicher Disclaimer: ich gebe keine Garantie auf die fehlerfreie Funktion!

  • Hallo,

    vielen Dank für die Arbeit!

    Mein Backup für Android konnte ich ohne Probleme umwandeln. Leider ist es mir bei der iOS variante nicht gegückt. Ich bin wie beschrieben vorgegangen und erhalte die Ausschrift:

    threema2tml.sh: Befehl nicht gefunden

    Danach habe ich zwar in meinem Verzeichniss eine Datei namens:messages.html allerdings ist die leer.

    (Haben mir unter Hyper-V eine vm erstellt Ubuntu 24.04.1 LTS Vollinstallation und alles aktualisiert)

    fehlt mir da noch etwas?

    vielen Dank im Voraus, für die Bemühungen!

  • Hallo jnL

    Danke für die schnelle Antwort!

    Ich hatte mich beim abschreiben vertippt. Das "h" steht natürlich in der Fehlermeldung.

    Mein Aufruf war, "threema2html.sh messages.txt > messages.html" wie in der Anleitung oben beschrieben.

    Also ich habe eine komplett neue VM erstellt. Mit dem aktuellen Ubuntu ISO, alles aktualisiert, das zip-file des iPhones in unter den Ordner Dokumente kopiert und entpackt unter threema, da hinein die Dateien threema2html.sh kopiert, eine Konsole geöffnet, bin in das Verzeichnis Dokumente/threema gegangen und habe den Befehl (siehe oben) eingegeben.

    Es wäre wirklich genial, wenn du eine Idee hast, warum es bei mir nicht funktioniert.

  • Hallo Bernd.klick

    Kannst du vielleicht ein Bild des Aufrufs und der Fehlermeldung bereitstellen? Ich bin mir nicht sicher, ob hier nicht vielleicht ein fehlerhafter Aufruf geschieht. Dabei darfst du natürlich gerne persönliche Informationen ausschneiden/unkenntlich machen, wenn denn welche vorhanden sein sollten.

    Beispiel: du führst "threema2html.sh messages.txt > messages.html" aus, wodurch auf jeden Fall eine messages.html angelegt wird. Wenn jedoch keine messages.txt existiert, dann kann das Skript auch keine Ausgabe geben, außer, dass die Datei nicht vorhanden ist. Jedoch sollte dies kein "Befehl nicht gefunden" sein, da die nicht vorhandene Datei sicherlich nicht als Befehl im Skript aufgerufen wird.

  • hier das Foto

    Hallo Bernd.klick

    In deinem Foto ist zwar das "h" enthalten, aber nun auch ein "s" statt einem "l" (kleines L). Bitte auf die genaue Beschriftung achten. Du kannst übrigens die Autovervollständigung mit der Tab-Taste verwenden.

    Ich kann mir jedoch jetzt vorstellen, woher der "Fehler" kommt, selbst wenn der Dateiname passt. Setze deinem Befehl ein "bash" voran. So sähe der vollständige Befehl aus:

    Code
    bash threema2html.sh messages.txt > messages.html

    Zum Hintergrund: die Datei "threema2html.sh" ist zwar inhaltlich ein Skript, aber kein dem System bekannter Befehl, der jederzeit von jedem Ort aus allein durch den Namen aufgerufen werden kann. Da es ein Skript ist, muss es interpretiert werden - und das übernimmt die Konsole/Shell "bash" (die in der ersten Zeile des Skripts auch noch angegeben ist, aber nicht gelesen wird, wenn das Skript nicht ausführbar [x] ist und auch nicht mit absolutem Pfad aufgerufen wird).

  • Hallo Bernd.klick

    In deinem Foto ist zwar das "h" enthalten, aber nun auch ein "s" statt einem "l" (kleines L). Bitte auf die genaue Beschriftung achten. Du kannst übrigens die Autovervollständigung mit der Tab-Taste verwenden.

    Ich kann mir jedoch jetzt vorstellen, woher der "Fehler" kommt, selbst wenn der Dateiname passt. Setze deinem Befehl ein "bash" voran. So sähe der vollständige Befehl aus:

    Code
    bash threema2html.sh messages.txt > messages.html

    Zum Hintergrund: die Datei "threema2html.sh" ist zwar inhaltlich ein Skript, aber kein dem System bekannter Befehl, der jederzeit von jedem Ort aus allein durch den Namen aufgerufen werden kann. Da es ein Skript ist, muss es interpretiert werden - und das übernimmt die Konsole/Shell "bash" (die in der ersten Zeile des Skripts auch noch angegeben ist, aber nicht gelesen wird, wenn das Skript nicht ausführbar [x] ist und auch nicht mit absolutem Pfad aufgerufen wird).

    Hey, auch von mir vielen Dank für den tollen Support. Ich bin gerade im Ausland im Urlaub und hätte erst nächste Woche antworten können.