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 <
  • Moin, ich wollte gerade einmal das Skript testen, scheitere allerdings schon am Entpacken der .zip. 7zip meldet, dass die Datei kein Archiv ist und dementsprechend nichts entpacken kann. Ist mein Backup korrupt (eigentlich erfolgreich abgeschlossen worden) oder wo liegt hier der Fehler?

  • scheitere allerdings schon am Entpacken der .zip. 7zip meldet, dass die Datei kein Archiv ist und dementsprechend nichts entpacken kann

    Wie groß ist die .zip Datei denn etwa? Ist das eine gerade erst erstellte Datei oder eine, die schon zur Wiederherstellung verwendet wurde?
    Ich vermute, dass die Datei korrupt ist. Am besten testest du die Datei auch einmal direkt auf dem Androidgerät mit der App "rar" und erstellst wohl noch ein neues Backup, da der Test mit rar wahrscheinlich kein anderes Ergebnis bringt...

  • Wie groß ist die .zip Datei denn etwa?

    Knappe 13 GB. Wurde noch nicht zur Wiederherstellung verwendet, sondern direkt nach dem Export getestet (oder sollte es zur Wiederherstellung verwendet worden sein?). Aber dann versuche ich das Backup noch einmal, danke für den Hinweis!

  • Moin, ich wollte gerade einmal das Skript testen, scheitere allerdings schon am Entpacken der .zip. 7zip meldet, dass die Datei kein Archiv ist und dementsprechend nichts entpacken kann. Ist mein Backup korrupt (eigentlich erfolgreich abgeschlossen worden) oder wo liegt hier der Fehler?

    Moin Curve -

    Tja...liest sich wirklich so, daß das Daten-Backup korrupt ist. Entweder bei der Erstellung oder beim Kopieren auf den PC. Am falschen Passwort kann es eigentlich nicht liegen - 7zip kann selbst bei passwort-geschützten *.zip-Archiven die Dateiliste ohne Eingabe des Passworts anzeigen. Als Test könntest du mal ein Daten-Backup ohne Medien-Dateien machen. Gibt auf alle Fälle eine kleinere *.zip-Datei - einfach mal um zu gucken, ob die eigentliche Prozedur korrekt ist...

  • Knappe 13 GB

    Bei der Größe gehe ich von einer Unterbrechung des Prozesses aus, sodass die Sicherung zwar als erfolgreich angezeigt wurde, die Datei jedoch beschädigt ist.

    Wurde noch nicht zur Wiederherstellung verwendet, sondern direkt nach dem Export getestet (oder sollte es zur Wiederherstellung verwendet worden sein?).

    1. Teil: in Ordnung. War nur zur Einordnung, ob die Datei ggf. schon erfolgreich wiederhergestellt werden konnte und es nur jetzt am Entpacken scheitert.
    2. Teil/Frage: ist kein Muss. Die Datei wird dadurch selber nicht bearbeitet und erhält keinen Zähler, wie häufig sie schon wiederhergestellt wurde. Vermutlich wäre eine Wiederherstellung auch fehlgeschlagen.

    Aber dann versuche ich das Backup noch einmal

    Genau das. Schalte alle Energiesparmaßnahmen aus, stecke das Ladekabel an und öffne ggf. die Threema App im Vordergrund*, um den Prozess nicht zu beenden.
    Edit: Wie Bawal eben geschrieben hat, kann es auch beim Kopieren auf den PC einen Bit-Hüpfer gegeben haben, der die Datei beschädigt hat.

    * Wenn man die Threema App während des Backups öffnet, gab es zuvor nur eine Meldung und sie blieb verschlossen. Seit kurzem wird der Prozessfortschritt im Fenster angezeigt :) Eine tolle Änderung, die hoffentlich die App bzw. den Prozess aktiv hält.

  • Vielen Dank für die ganzen Rückmeldungen, es lag wohl letzendlich an einem korrupten Backup. Ich habe meine Chats nochmal etwas ausgedünnt und jetzt hat es prima funktioniert. Übrigens auch problemlos unter MacOS!

    Falls das zur allgemeinen Anleitung hinzugefügt werden soll, hier mein Vorgehen:

    1. PowerShell für Mac installieren z. B. mit Homebrew brew install powershell (Details und Alternativen hier).
    2. Threema Backup entpacken (Doppelklick, Passwort eingeben).
    (ab hier im Grunde der Windows-Anleitung folgen)
    3. Script in den entpackten Backup-Ordner legen
    4. Terminal im Ordner öffnen (z. B. einfach per der entsprechenden Option bei Rechtsklick auf den Ordner)
    5. Powershell initiieren mit pwsh
    6. Gewünschten Befehl ausführen, wobei "PowerShell" durch "pwsh" ersetzt werden muss, z. B. pwsh -ExecutionPolicy Bypass -File .\threema-csv2html.ps1 Help

    Getestet unter Sonoma 14.2.1


    Noch ein paar weitere Fragen, falls das schon irgendwo deutlich steht, entschuldigt bitte die Doppelung, dann freue ich mich auf einen schnellen Verweis.

    • Können alle Chats gleichzeitig mit einem Befehl exportiert werden?
    • Gibt es einen Weg alle Medien automatisch im richtigen Format in einem Ordner abzulegen?
  • Moin!

    Vielen Dank für die ganzen Rückmeldungen, es lag wohl letzendlich an einem korrupten Backup. Ich habe meine Chats nochmal etwas ausgedünnt und jetzt hat es prima funktioniert. Übrigens auch problemlos unter MacOS!

    Falls das zur allgemeinen Anleitung hinzugefügt werden soll, hier mein Vorgehen:

    Oh, spannend 8|! Wusste gar nicht, daß man Powershell auch unter MacOS laufen lassen kann! Danke für die Info und ja, das werde ich in die Anleitung/readme mit aufnehmen!

    Noch ein paar weitere Fragen, falls das schon irgendwo deutlich steht, entschuldigt bitte die Doppelung, dann freue ich mich auf einen schnellen Verweis.

    • Können alle Chats gleichzeitig mit einem Befehl exportiert werden?
    • Gibt es einen Weg alle Medien automatisch im richtigen Format in einem Ordner abzulegen?

    Im Moment können nur einzelne Chats exportiert werden. Aber die Idee hatte ich auch schon ;). Werde ich in der übernächsten Version (die nächste ist soweit schon fertig) mal probieren. Ich denke, ich werde es mit Wildcards umsetzen (anstatt explizit eine Datei anzugeben, sowas wie group_message*.csv).

    Tja...die Geschichte mit Medien, ihren Formaten und Dateinamen...die ist schon etwas länger. Threema hat "früher" alles in einen Topf geschmissen...irgendwann den Typ mit angegeben und aktuell sogar den "originalen" Dateinamen, falls vorhanden (aber z.B. hat ein Screenshot, direkt in Threema geteilt, keinen wirklichen Dateinamen). jnL hat schon mal probiert, die Formate anhand des Inhalts(!) zu erkennen...guter Wille, aber leider nur mit mäßigem Erfolg... Ich werde mal schauen, was mir dazu einfällt...

    Grüße!

    Einmal editiert, zuletzt von Bawal (6. Januar 2024 um 12:13) aus folgendem Grund: typo

  • Werde ich in der übernächsten Version (die nächste ist soweit schon fertig) mal probieren.

    Das hört sich super an!

    Tja...die Geschichte mit Medien, ihren Formaten und Dateinamen...die ist schon etwas länger.

    Das hört sich wirklich nicht so spaßig an... :rolleyes: Woher erkennt denn der Browser, welches Dateiformat was was ist? Soweit ich das sehen konnte, wird ja einfach direkt die mediendatei eingebunden, oder?

    Noch ein anderes Thema: Ich möchte niemandem auf die Füße treten, aber meinem Webentwicklerherz hat das aktuelle Design nicht so ganz zugesagt ;) Ich habe es mir jetzt mal so umgebaut, dass es im Grunde genauso (schick) aussieht wie Threema Web. Falls das gewünscht und vielleicht auch gewollt ist, stelle ich das CSS natürlich zur Verfügung und zeige damit gerne meine Dankbarkeit für die tolle Entwicklung dieses Scripts! (Vorausgesetzt auch Threema fühlt sich da nicht in irgendeiner Form markenrechtlich verletzt, wenn ein inoffizielles Tool den eigenen Stil kopiert.)

    Liebe Grüße!

  • Woher erkennt denn der Browser, welches Dateiformat was was ist?

    Im Backup steht zu jeder Datei ein Dateityp. Zwar nicht die Dateiendung, aber der Typ und dieser wird mit in die HTML Datei geschrieben, sodass der Browser bei der Anzeige der Datei das richtige Verhalten zeigt.

    meinem Webentwicklerherz hat das aktuelle Design nicht so ganz zugesagt ;) Ich habe es mir jetzt mal so umgebaut, dass es im Grunde genauso (schick) aussieht wie Threema Web. Falls das gewünscht und vielleicht auch gewollt ist, stelle ich das CSS natürlich zur Verfügung

    Gerne teilen und zur Verbesserung beitragen! Danke :)

    Vorausgesetzt auch Threema fühlt sich da nicht in irgendeiner Form markenrechtlich verletzt, wenn ein inoffizielles Tool den eigenen Stil kopiert.

    Die Android App beispielsweise soll sich auch an das Material You Design anpassen. Da es sich hier um eine schicke Ansicht eines Threema Backups handeln soll, denke ich nicht, dass da irgendwas gegenspricht. Wie zuvor schon mal erwähnt teilt(e) der Threema Support selbst schon den Link zu diesem Skript.

  • Update 08.01.2024 - Version 2.2

    Wie angedroht hier erstmal meine letzten Änderungen, die ich noch fertig stellen wollte, bevor wir die nächsten spannenden Ideen angehen 8).

    Changelog v2.2
    • neue Optionen "FirstDate" und "LastDate", um den Zeitrahmen des Exports einzuschränken
    • neue Option "DarkMode". Meine (klägliche) Interpretation eines DarkModes ;)
    • bugfix: Dateiname - "CleanUp" regex nochmals angepasst; Emojis und unerlaubte Zeichen ausfiltern
    • HTML: <DOCTYPE> hinzugefügt, css angepasst und einige Elemente hinzugefügt (Thema "DarkMode")

    Thema Webentwicklerherz ;) - das schlägt bei mir (leider?) nicht...bzw. als Autodidakt hat es wohl mein Herz noch nicht erreicht. Aber dafür haben wir ja jetzt Curve. Jeder, der was beitragen kann und möchte ist herzlich eingeladen!

    Ich hatte auch schon mal kurz den Gedanken, ob Threema nicht irgendwann "negativ" auf unser Projekt aufmerksam werden könnte - aber das denken wir weiter, wenn es soweit kommt...

    Curve - ich denke, ich habe das existierende CSS nicht allzu sehr verbogen, als das deine Anpassung nicht mehr dazu passt. Im Grunde habe ich nur den "Absendernamen" eigene styles verpasst, damit man deren Farben getrennt anpassen kann. Also gerne mal her mit deinem CSS (gerne per PM)! ...oder kribbelt es jemand anderem in den Fingern und möchte das Script selber anpassen?


    Grüße

  • So... ich habe mich mal (u.a.) an das unbequeme Thema "echte Dateinamen" rangetraut; zumindest mal eine Lösung implementiert. Und mehrere Chats können nun auf einmal konvertiert werden. Weitere Infos unten.

    Changelog v2.3
    • neue Option "RealFilenames". Damit werden die Medien-Dateien mit ihren "echten" Dateinamen bzw. -suffixe abgespeichert
    • Möglichkeit hinzugefügt, mehrere Chats auf einmal zu konvertieren (mithilfe von Platzhaltern '*' und '?')
    • Textausgaben angepasst, Code angepasst (keine Rekursion mehr nötig)

    Thema "echte Dateinamen"...

    Seitdem Threema Medien-Dateien als "FILE" im Backup angibt, gibt es auch echte Dateinamen. Soweit, so gut. Das Problem dabei ist aber, dass diese Dateinamen mitnichten einmalig sind. Sprachnachrichten zum Beispiel heissen alle recordAudio.m4a. Wenn also nur die angegebenen Dateinamen benutzt werden, werden vorhandene Dateien überschrieben! Nicht gut. Als aktuelle Lösung, damit die Dateinamen eindeutig bleiben, bleibt mir nix anderes übrig, als weiterhin auch die eindeutige ID zu benutzen. Ergebnis? Medien-Dateien fangen weiterhin mit ihrer ID an, bekommen aber dann ein Trennzeichen (z.Zt. "__") und den echten Dateinamen hinten dran. Um beim Beispiel der Sprachnachricht zu bleiben, wird aus message_media_<36-stellige-ID> dann message_media_<36-stellige-ID>__recordAudio.m4a. Analog alle anderen Dateien. Sieht nicht schick aus, funktioniert aber ;). Und die Dateien lassen sich z.B. im Explorer per Doppelklick öffnen. Für Dateien älterer Nachrichten und Thumbnails, wo der Dateiname nicht vorhanden ist, wird versucht, automatisch den richtigen Suffix anzuhängen. Ich habe alle meine Backups durchprobiert und keine nicht-erkannten Dateien gefunden. Falls ihr welche findet, her damit =O! Auch, wenn euch andere/bessere Ideen einfallen!

    Thema "mehrere Chats konvertieren"...

    Es darf weiterhin nur ein Argument als Chat-Datei übergeben werden; dieses darf aber nun auch Platzhalter enthalten. Möglich sind z.B. message*.csv um alle 1:1-Chats, group*.csv um alle Gruppenchats, oder *.csv um alle Chats zu konvertieren. Keine Sorge um die "System"-Dateien wie groups.csv, contacts.csv, usw. - diese werden automatisch ignoriert 8).


    Grüße

  • Trommelwirbel.... Version 3.0 ist da! :)

    Dank der Mithilfe von Curve und seiner erstellten Format-Vorlage können nun Chats in einem modernen, an Threema Web angelehnten Stil exportiert und angezeigt werden. Das Script bietet nun die Möglichkeiten, neben dem bekannten Stil den neuen Stil auszuwählen oder auch auf eine externe *.css Datei zu verlinken (z.B. für eigene Anpassungen, ohne das Script anpassen zu müssen). Dazu noch ein paar kleine Änderungen und Optimierungen. Ich hoffe, es ist genehm so ;).

    Changelog v3.0
    • neue Option -WebStyle erstellt die HTML-Datei mit dem an Threema Web angelehnten Stil
    • neue Option -CSS "<File>" bietet die Möglichkeit, auf externe CSS zu verweisen (zwei Beispiel-CSS inkl. Threema Bildern auf Projektseite hinzugefügt)
    • Laufzeitoptimierung: besonders größere Chats werden nun deutlich schneller verarbeitet
    • Option "RealFilenames" wird nun auch bei Gruppen-/Kontakt-/Kanal-Fotos berücksichtigt
    • bugfix: Links in "alten Zitaten" nicht mehr zerschießen, wenn nach dem Link ein Leerzeichen folgt ("> ")
    • das "Change Log" aus dem Script entfernt und in eine externe Text-Datei verschoben
    • Credits in die Hilfe-Ausgabe hinzugefügt

    Zum "echten" Threema Web Format gehören auch ein Hintergrundbild und ein Wallpaper für den Chat. Um die Exporte weiterhin "portabel" zu halten, ohne zusätzliche Dateien/Hintergrundbilder mitschieben zu müssen, habe ich bei dem im Script eingebauten Web-Stil auf die Implementierung und Verweise auf Hintergrundbilder verzichtet. Wer es gerne komplett hätte und/oder gerne selbst an dem Format Hand anlegen möchte, der hat mit der Option -CSS "<File>" die Möglichkeit, das Format ausserhalb des Scripts und der HTML-Datei anzupassen. Zwei Beispiel-Formate sind auf der Projektseite verfügbar, die die ebenfalls dort verfügbaren Threema Bilder schon einbinden.

    Ich hoffe, das passt alles so! 8)


    Grüße