Chat aus Daten-Backup in HTML konvertieren

Stelle deine Frage öffentlich an die Threema-Forum-Community - über 4.600 Mitglieder helfen dir weiter. > Frage stellen <
  • Hallo interessierte Threema-Nutzer,

    in Anlehnung an @Miaz Vorschlag "Export von Chats im Original-Layout mit Vorschaugrafiken der Medien als PDF oder HTML" habe ich mich mal daran versucht, ein PowerShell-Skript zu erstellen, welches aus einem Chat (Einzel-, Gruppenchat, Kanal) aus dem Android-Daten-Backup eine HTML erzeugt, die euch ermöglicht, den Chat fast so lesen zu können, wie er in der App dargestellt wird.


    Update 13.11.2022:
    Bawal hat sich die Mühe gemacht das Skript extern bei Codeberg zu hinterlegen und es zu erweitern. Ihr findet das angepasste Skript in diesem Projekt (Link zu Codeberg).
    Nachfolgend weiterhin der bisherige Beitragstext.
    Update-Ende.


    Dazu ganz einfach das .zip Daten-Backup auf dem Windows-Rechner in einem Ordner entpacken, in den ihr die .ps1 Skriptdatei kopiert.

    Anschließend ruft ihr in diesem Verzeichnis eine Kommandozeilen-Fenster auf (Shift + Rechtsklick auf eine freie Stelle im Ordner -> PowerShell-Fenster/cmd hier öffnen) und gebt folgenden Befehl ein:

    Code
    PowerShell -ExecutionPolicy Bypass -File .\<skript.ps1> .\<chat.csv>

    Als Beispiel:

    Code
    PowerShell -ExecutionPolicy Bypass -File .\_threema-csv2html.ps1 .\message_ECHOECHO.csv

    Das Skript liest alle benötigten Informationen aus den hoffentlich vorhandenen Dateien des Backups und erstellt einen Medienordner (für Bilder, Videos, ... und die angegebene .csv Datei), sowie eine .html Datei, die mit jedem beliebigen Browser angesehen werden kann. Diese .html Datei könnt ihr umbenennen, den Ordner nicht, da die Verweise sonst nicht mehr stimmen.

    Derzeit unterstützt das Skript nur Android-Threema-Nutzer (Daten-Backup) mit einem Windows System (PowerShell).

    Probiert es aus, lest euch das Skript durch, wenn ihr mögt (oder mir nicht vertraut :)) und bringt gerne Feedback oder eigene Verbesserungen ein.

    Portierungen auf Linux/MacOS sind gerne gesehen und wenn ihr das Skript teilt, verweist bitte wenigstens auf diesen Beitrag hier im Forum ;)

    Viel Spaß damit!

    PS: Nach dem Herunterladen der Skriptdatei aus dem Anhang müsst ihr die Dateiendung ".txt" entfernen, sodass die Datei auf ".ps1" endet, da es sonst nicht von PowerShell ausgeführt wird. Lasst ihr die Dateiendung auf ".txt" stehen, könnt ihr per Doppelklick den Inhalt des Skripts einsehen, es wird auch nicht ausgeführt.


    Fehler bei manchen Zitaten

    Die Zeile 178 endet aktuell auf $tmp_content_from_user
    muss aber korrekterweise mit $msg_content_split[$i]+"<br/>" enden.
    Also einfach anpassen, dann sollte auch die erste Textzeile nach dem 1-Zeiler-Zitat korrekt in die HTML übernommen werden.

    Hinweis:
    Ich stelle das Skript hier nur einmal als "as is" hin, biete also keinen aktiven Support oder eine gesicherte Weiterentwicklung dafür an.

    Downloadzahlen (alte Versionen; nicht mehr angehängt):
    Version 2020-05-19: 418
    Version 2022-01-21: 442 (Stand 13.11.2022)

  • Ich konnte ja schon vorab mehrere Versionen des Scripts testen - und freue mich, dass jnL das jetzt veröffentlicht hat. Hatte das natürlich bisher wie gewünscht nicht weitergegeben...

    Ich möchte hier ausdrücklich jnL für seine Arbeit danken.

    ?

    Für mich ging damit ein lang ersehnter Wunsch in Erfüllung, konnte ich doch für bestimmte wichtige Familienchats jetzt eine Kopie (bzw. einen Export) erstellen und die Chat-Übersicht in Threema etwas aufräumen. Das turnusmäßige Threema-Backup ist jetzt hunderte MB kleiner. ?

    Auch der Export von Gruppenchats ist jetzt möglich. Anders als beim offiziellen Threema-Export erhält man hier eine Übersicht im Original-Layout mit allen Vorschau-Grafiken und Links zu den Medien. Alles sieht so aus, wie am Handy.

    Es klappt jedenfalls sehr gut.

    Danke! ?

    Ich bin gespannt, was andere User davon halten. Es ist am Anfang etwas knifflig als Laie - aber es funktioniert ??

    4 Mal editiert, zuletzt von Miaz (21. April 2020 um 12:22)

  • 19x heruntergeladen - und noch keine weitere Info dazu?

    Das können ja auch doppelte Downloads sein, weil ggf. gelöscht, verlegt, geändert, ...

    Und ich glaube auch Nicht-Forenmitglieder können den Anhang ohne Registrierung downloaden. Eine Rückmeldung dazu gibt es dann nicht ohne vorherige Registrierung, die dann doch vielleicht so manch einer scheut.

    Ich sehe es positiv: keine Rückmeldungen sind keine Fehlermeldungen und es interessiert wohl auch ein paar :)

  • Hallo,

    ich habe das ausprobiert, aber irgendwie finde ich keine konvertierten Daten. Habe den Link in die Datei kopiert und dann den Power Shell Befehl eingegeben. Aber wie geht es dann weiter?

    Etwas ratlos, beste Grüße

  • und nun das nächste Problem: ich habe es nochmal probiert und jetzt kann ich den Befehl nicht mehr ausführen. Fehlermeldung:

    Fehler beim Verarbeiten von -File ".\<skript.ps1>": Illegales Zeichen im Pfad. Geben Sie einen gültigen Pfad für den

  • Hallo ottagamba

    Habe den Link in die Datei kopiert

    Das verstehe ich leider nicht. Du musst lediglich auf die Datei im ersten Beitrag klicken, um diese herunterladen zu können. Anschließend muss die Dateiendung ".txt" vom Dateinamen entfernt werden.

    Fehler beim Verarbeiten von -File ".\<skript.ps1>": Illegales Zeichen im Pfad

    Das "<skript.ps1>" ist nicht der Pfad zur heruntergeladenen Datei, sondern in diesem Falle der Platzhalter dafür. Du musst den Pfad also ersetzen, so wie es als Beispiel im ersten Beitrag steht. Bei mir war es wie folgt aufgebaut.

    Unter "C:\temp\threema-backup\" habe ich mein Threema-Datenbackup extrahiert, sodass dort alle Dateien lagen (Beispieldatei: C:\temp\threema-backup\messages_ECHOECHO.csv). In diesem Ordner liegt bei mir auch die Skriptdatei. Also habe ich ein Kommandozeilen-Fenster in diesem Ordner geöffnet und diesen Befehl eingegeben

    PowerShell -ExecutionPolicy Bypass -File .\_threema-csv2html.ps1 .\message_ECHOECHO.csv

    Die beiden angegebenen Dateien ("*.ps1" und "*.csv") liegen in diesem Verzeichnis (".").

    Nach der Ausführung fand ich den Ordner "id_ECHOECHO" und die Datei "Chat mit ECHOECHO.html" vor.


    Du kannst sonst ggf. mal einen Screenshot mit unkenntlich gemachten Stellen von sensiblen Informationen (Threema ID, ...) machen und posten. Vielleicht kann ich dir dann weiter helfen.

    Viel Erfolg!

  • Hallo JnL,

    ich hab das mal getestet. Im Screenshot siehst du die Fehlermeldungen, die bei mir ausgegeben wurden.

    Trotz der Fehlermeldungen scheint das Skript aber eine "Chat mit 0 ().html-Datei" zu erzeugen. Was leider nicht so richtig funktioniert hat, sind Bilder. Die fehlen manchmal, aber auch nicht immer. Da erscheint dann "Bild nicht gefunden."

    Das Skript muss schon in das Verzeichnis, wo die entsprechende Threema-ID.csv-Datei liegt, oder? (So hab ich das zumindest gemacht)

    Bei Gruppenchats, sieht man leider nicht, wer was geschrieben hat, da fehlt der Nick.

    Kann man das vielleicht so einrichten, dass, wenn man das Skript erneut startet, die akutelle "Chat mit 0 ().html" nicht überschrieben wird, sondern eine neue erstellt wird? :)

    Ansonsten muss ich sagen: Super Arbeit!!! :thumbup:8):)

    Schöne Grüße

    Mogli

  • Fehlermeldungen, die bei mir ausgegeben wurden

    Liegt an einer anderen PowerShell-Version. Hab die betroffene Zeile umgeschrieben. Update im ersten Post.

    Trotz der Fehlermeldungen scheint das Skript aber eine "Chat mit 0 ().html-Datei" zu erzeugen. Was leider nicht so richtig funktioniert hat, sind Bilder. Die fehlen manchmal, aber auch nicht immer. Da erscheint dann "Bild nicht gefunden."

    Die erzeugte Datei ist aber auch nicht vollkommen korrekt. Wenn auch der Name nicht passt, der Inhalt ist ebenso ohne Name und die Statussymbole (gesendet, gelesen, ...) für die jeweiligen Nachrichten fehlen.

    Das Skript muss schon in das Verzeichnis, wo die entsprechende Threema-ID.csv-Datei liegt, oder?

    Ganz genau!

    Bei Gruppenchats, sieht man leider nicht, wer was geschrieben hat, da fehlt der Nick.

    Das liegt am Fehler und sollte mit der Anpassung für eine andere PS-Version behoben sein.

    Kann man das vielleicht so einrichten, dass, wenn man das Skript erneut startet, die akutelle "Chat mit 0 ().html" nicht überschrieben wird, sondern eine neue erstellt wird? :)

    Ganz einfach umgangen: aktueller Zeitstempel im Format "[yyyy-mm-dd.HHMM]" wird nun in den Dateinamen aufgenommen :)


    Wie gesagt, die überarbeitete Version gibt es wieder im ersten Post: 2020-05-05_threema-csv2html.ps1.txt (.txt entfernen!)

  • Update 06.05.2020

    - Im Zeitstempel hatte ich einen Dreher zwischen mm (Minuten) und MM (Monat)

    - Zeitstempel ohne eckige Klammern [ ], da dies Fehler verursachen konnte

    - Entferne / und \ aus dem Namen des Kontakts/der Gruppe zum Speichern der HTML-Datei

    Das überarbeitete Skript gibt es wieder im ersten Beitrag :)

  • Update 06.05.2020

    - Im Zeitstempel hatte ich einen Dreher zwischen mm (Minuten) und MM (Monat)

    - Zeitstempel ohne eckige Klammern [ ], da dies Fehler verursachen konnte

    - Entferne / und \ aus dem Namen des Kontakts/der Gruppe zum Speichern der HTML-Datei

    Das überarbeitete Skript gibt es wieder im ersten Beitrag :)

    Wow....Ich bin sehr positiv überrascht. Es funktioniert jetzt auch bei mir einwandfrei und ohne Fehlermeldung(en)! :thumbup::)

    Sogar Videos und Sprachnachrichten werden abgespielt! :)

    Vielen Vielen Dank für deine supertolle Arbeit 8)8)8):thumbup::)

  • 19x heruntergeladen - und noch keine weitere Info dazu?

    Wundert mich etwas...

    Ich habs heruntergeladen und durchgelesen. Mangels Windows und Android-Handy kann ich es aber nicht ausführen.

    Jeder Tag könnte Threema Web für iOS Tag sein.

    Jeder Tag ist Threema Web für iOS Tag.

    Jeder Tag könnte Threema Multidevice Tag sein.

    Jeder Tag ist Threema Multidevice Tag.

    Nur mit Threema Safe schläft man ruhig.

  • Ich habs heruntergeladen und durchgelesen. Mangels Windows und Android-Handy kann ich es aber nicht ausführen.

    Einen Mac Port kannst du gerne erstellen :P

    Vielleicht lässt es sich auch mit dem Skript im Forum verbinden, der das iOS Backup zu einem Android Backup macht. Wenn das denn noch aktuell funktioniert...

  • Hi, habe mich extra hier angemeldet um auch schreiben zu können. ;)

    Ich habe den Link zu diesem Beitrag von Threema Support bekommen, bin echt froh darüber!

    Leider ist es ja nicht möglich Threema komplett mit allen Inhalten von Android zu iOS zu bekommen. Wobei ich nicht ganz verstehe, warum man das nicht von vornherein vorsieht. Denke so ungewöhnlich ist das ja nicht...

    Aber immerhin kann man das ganze sichern und nun mit dem Skript auch noch wieder ansehbar machen!

    Ich bin echt begeistert und möchte mich extra nochmal für diese Möglichkeit bedanken!

    Wenn ich das richtig sehe, dann sind in dem neu erstellten Ordner alle Bilder und Videos.

    Wie kann man die direkt ansehbar machen? Das Problem von der ursprünglichen Datensicherung bleibt ja, das die Endungen fehlen, und somit Windows die Dateien keinem Programm zuordnen kann.

    Ich selber kann so ja auch nicht erkennen welche Datei was ist.

    Wie könnte man das lösen?


    Benutze übrigens zum Bilder Betrachten üblicher Weise FastStone. Für Videos normaler Weise MPC-HC Player.

    Vielen Dank!

  • Mecki : Du könntest ja die Dateien ohne Endung rauskopieren und prophylaktisch jpg (oder mp4) hinzufügen. Videos können ja nur die größeren Dateien sein...

    Wenn's Dein Bildberachter anzeigt, war es tatsächlich ein Bild. ✌️?

    Im Prinzip ist das aber nicht nötig. In der HTML siehst Du alle Medien - und kannst bei Bedarf daraus "speichern unter" ausführen.

    EDIT:

    Rechtsklick auf die Vorschau -> "Ziel speichern unter" --> dann wird sogar automatisch ".jpg" angehängt.

    5 Mal editiert, zuletzt von Miaz (19. Mai 2020 um 08:31)

  • Hallo Mecki,

    Ich habe den Link zu diesem Beitrag von Threema Support bekommen

    direkt vom Support? Da kann ich mich ja glücklich schätzen 8)

    Wenn ich das richtig sehe, dann sind in dem neu erstellten Ordner alle Bilder und Videos.

    Wie kann man die direkt ansehbar machen?

    Das ist richtig. Die Dateien habe ich in den letzten Versionen immer nur im Originalnamen (laut Backup) gelassen, damit man die Dateien ggf. wieder zurückkopieren und das Skript nochmal ausführen kann. Aus welchen Gründen auch immer.

    Mit der heutigen Version habe ich das Skript angepasst und um ein paar bekannte Dateitypen erweitert. Das Skript fragt dann je vorhandener Mediendatei die ersten Bytes ab und vergleicht, ob diese einer bekannten Dateiendung gleichen. Dann ändert das Skript den Dateinamen auf z. B. ".jpg", verschiebt es dann und verweist auch darauf in der HTML-Datei.

    Man kann nun also auch ohne die HTML-Datei recht einfach durch die Medien schauen - nur nicht chronologisch, da eigentlich nur nach UUID-Namen und nicht nach Aufnahme-/Empfangsdatum sortiert werden kann.


    Wer sich nun fragt, warum gerade Dateien mit der Dateiendung ".zip" nicht umbenannt werden.... Tja, da gibt es viele mögliche Fehlerquoten, wenn man auch die Microsoft Office Dokumente DOCX, XLSX, PPTX, ... verschickt. Die beginnen alle mit den selben Bytes für ein ZIP-Archiv und sind untereinander auch nicht auseinander zu halten.

    Die meisten verschicken und empfangen jedoch Bilder und/oder Videos und diese sollten nun hauptsächlich die zum Dateityp passende Dateiendung erhalten :)

  • jnL

    Vielen Dank!!!

    Habe leider erst heute Deine Nachricht entdeckt. Aber ich werde es ausprobieren! Wird dann klasse werden, wenn man direkt sämtliche Bilder und Videos sich anschauen kann!

    Ja habe direkt von einem Support Mitarbeiter den Link per Mail als Idee erhalten!

    Hat mich auch sehr gefreut!!!

    Einzig ich verstehe nicht so recht warum es von Threema selber nicht entsprechende Möglichkeiten gibt.

    Sei es das man Chats sichern, eventuell später auch wieder anfügen kann, oder aber zumindest so oder ähnlich wie hier abspeichern kann, sodaß man da wieder reinschauen kann.

    Noch weniger verstehe ich, das es nicht von vornherein eine Möglichkeit gibt, wie man Threema komplett von einem Betriebsystem auf das andere umziehen kann. Also mit allen Chats und Daten von Android zu IOS oder auch umgekehrt. Egal wie , von mir aus auch mit Hilfsprogramm. Bei Whatsapp gibts ja zumindest Möglichkeiten von Drittanbieter.

    Aber bei Threema gibts eben rein garnichts! Vorallem noch nichtmal vom Anbieter. Das ist für mich völlig unverständlich! (Im Grunde aber auch bei Whatsapp das selbe. Vom Hersteller gibts ja auch nichts.)

    Vielen Dank nochmal!!! ???

  • Hallo Miaz,

    danke schon mal für dieses hilfreiche tool! Ich bin sehr hoffnungsvoll und gespannt :)

    Trotz guter Kenntnisse bin ich bisher noch gescheitert. Möglicherweise sind einige Voraussetzungen nicht ganz klar. :)

    :S Unklar für mich:

    • Welche Vorbereitung an Daten ist notwendig ? In meiner "messages-<myChat>.zip" Datei existiert keine *.csv Datei. Nur *.jpg und eine "messages-<myChat>.txt". Damit konnte das ps1 Skript nichts anfangen.
    • Hinweis: ich habe die zip erstellt als "Export" eines Chats.
    • es ist die Rede von "das Verzeichnis, wo die entsprechende Threema-ID.csv-Datei liegt". Worum geht's da genau? Ich kann nirgends eine "ID.csv" finden.

    Danke :thumbup:

    chris