Exports XMPP logs and uploads from the Dino client.
Go to file
Jaidyn Ann f065a1951d Update source URL 2024-01-30 00:04:44 -06:00
res Add combined screenshot 2022-10-02 12:33:04 -05:00
COPYING.txt Add license file 2022-10-02 12:15:25 -05:00
README.md Update source URL 2024-01-30 00:04:44 -06:00
dino-chat-export.sh Add link text to printf 2023-10-05 16:43:22 +00:00

dino-chat-export

Export chats and files from the XMPP client Dino into a plain-text format.

A screenshot of the same conversation two windows: Once in Dino, and once in HTML format displayed in Firefox.

Usage

$ ./dino-chat-export /tmp/xmpp-archive/

This script's only non-base requirement is sqlite3. It takes one argument, the output directory. The output tree ends up looking something like this:

$ tree /tmp/xmpp-archive/
/tmp/xmpp-archive/
└── youraccount@domain.tld
    ├── yourfriend@otherdomain.tld
    │   ├── files
    │   │   ├── sldfj_some_attached_file.pdf
    │   │   ├── their_avatar.png
    │   │   └── your_avatar.png
    │   └── messages.txt
    ├── evilperson@evilcompany.com
    │   ├── files
    │   │   ├── their_avatar.png
    │   │   └── your_avatar.png
    │   └── messages.txt

By default, each message is output in YYYY-MM-DD <$user> $message format, but you can customize the output of this script with environment variables.

Environment variables

Variable Description Example
$DINO_HOME Dino data directory ~/.local/share/Dino
$MESSAGE_HEADER Text preceding each message file, with basic substitutions. <html><title>THEIR_JID</title><body>
Substitutions: THEIR_JID, YOUR_JID, THEIR_NICK, YOUR_NICK
$MESSAGE_FOOTER Likewise, but is output to the end of each message file. </body></html>
$MESSAGE_FORMAT Template for message output, in a printf style. [%s] <%s>: %s
$MESSAGE_SLOTS Comma-delimited arguments for $MESSAGE_FORMAT DATE,JID,BODY
Valid slots: AVATAR, BODY, DATE, JID
$IMAGE_FORMAT Format for message-bodies containing an image. <img src="%s" />
$FILE_FORMAT Same as $IMAGE_FORMAT, but for non-image files. <a href src="%s">Uploaded file</a>

Examples

HTML output

Here are some environment variables you can use to get rudimentary, unstyled HTML output:

$ export MESSAGE_FORMAT='<div class='message'><datetime>%s</datetime> <img class='avatar' src="%s" /> <b>%s</b> — <p>%s</p></div>'
MESSAGE_SLOTS='DATE,AVATAR,JID,BODY'
MESSAGE_HEADER='<!DOCTYPE html>
<html>
<head>
	<title>Conversation with THEIR_JID - YOUR_JID</title><
	<link rel="stylesheet" type="text/css" href="../style.css" />
</head>
<body>'
MESSAGE_FOOTER='</body>
</html>'
IMAGE_FORMAT='<img src="%s" />'
FILE_FORMAT='<a href="%s" />%s</a>'
$ ./dino-chat-export ~/Archive/Chats/XMPP/

Feel free to spice it up with some real CSS!

Meta

License is the GNU GPLv3+, COPYING.txt.