signal-export


Namesignal-export JSON
Version 3.2.2 PyPI version JSON
download
home_pageNone
SummaryExport Signal conversations to Markdown and HTML
upload_time2024-11-07 21:21:31
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT License
keywords backup chat export
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # signal-export
[![PyPI version](https://badge.fury.io/py/signal-export.svg)](https://pypi.org/project/signal-export/)

**⚠️ WARNING: Because the latest versions of Signal Desktop protect the database encryption key, this tool currently only works on macOS and Linux.
Solutions for Windows will hopefully come soon from the community.
Discussion happening in [this thread](https://github.com/carderne/signal-export/issues/133).**

Export chats from the [Signal](https://www.signal.org/) [Desktop app](https://www.signal.org/download/) to Markdown and HTML files with attachments. Each chat is exported as an individual .md/.html file and the attachments for each are stored in a separate folder. Attachments are linked from the Markdown files and displayed in the HTML (pictures, videos, voice notes).

Currently this seems to be the only way to get chat history out of Signal!

Adapted from [mattsta/signal-backup](https://github.com/mattsta/signal-backup), which I suspect will be hard to get working now.

## Example
An export for a group conversation looks as follows:
```markdown
[2019-05-29, 15:04] Me: How is everyone?
[2019-05-29, 15:10] Aya: We're great!
[2019-05-29, 15:20] Jim: I'm not.
```

Images are attached inline with `![name](path)` while other attachments (voice notes, videos, documents) are included as links like `[name](path)` so a click will take you to the file.

This is converted to HTML at the end so it can be opened with any web browser. The stylesheet `.css` is still very basic but I'll get to it sooner or later.

## 🐧 Installation
1. Make sure you have Python installed.

2. Install this package:
```bash
pip install signal-export
```

3. Then run the script!
```bash
sigexport ~/signal-chats

# or for Windows:
python -m sigexport C:\Temp\SignalExport
```

## 🪟 Installation: Windows
If you need step-by-step instructions on things like enabling WSL2, please see the dedicated [Windows Installation](./INSTALLATION.md) instructions.

## 🚀 Usage
Please fully exit your Signal app before proceeding, otherwise you will likely encounter an `I/O disk` error, due to the message database being made read-only, as it was being accessed by the app.

See the full help info:
```bash
sigexport --help
```

Disable pagination on HTML:
```bash
sigexport --paginate=0 ~/signal-chats
```

List available chats and exit:
```bash
sigexport --list-chats
```

Export only the selected chats:
```bash
sigexport --chats=Jim,Aya ~/signal-chats
```

You can add `--source /path/to/source/dir/` if the script doesn't manage to find the Signal config location.
Default locations per OS are below.
The directory should contain a folder called `sql` with `db.sqlite` inside it.
- Linux: `~/.config/Signal/`
- macOS: `~/Library/Application Support/Signal/`
- Windows: `~/AppData/Roaming/Signal/`

You can also use `--old /previously/exported/dir/` to merge the new export with a previous one.
_Nothing will be overwritten!_
It will put the combined results in whatever output directory you specified and leave your previos export untouched.
Exercise is left to the reader to verify that all went well before deleting the previous one.

## Development
```bash
git clone https://github.com/carderne/signal-export.git
cd signal-export
rye sync --no-lock
```

Various dev commands:
```bash
rye fmt         # format
rye lint        # lint
rye run check   # typecheck
rye run test    # test
rye run sig     # run signal-export
```

## Similar things
- [signal-backup-decode](https://github.com/pajowu/signal-backup-decode) might be easier if you use Android!
- [signal2html](https://github.com/GjjvdBurg/signal2html) also Android only
- [sigtop](https://github.com/tbvdm/sigtop)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "signal-export",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "backup, chat, export",
    "author": null,
    "author_email": "Chris Arderne <chris@rdrn.me>",
    "download_url": "https://files.pythonhosted.org/packages/2d/97/628badfed8ba6ab4bc2195ea9ddf0a04df928500b06a7128745f6c90f78e/signal_export-3.2.2.tar.gz",
    "platform": null,
    "description": "# signal-export\n[![PyPI version](https://badge.fury.io/py/signal-export.svg)](https://pypi.org/project/signal-export/)\n\n**\u26a0\ufe0f WARNING: Because the latest versions of Signal Desktop protect the database encryption key, this tool currently only works on macOS and Linux.\nSolutions for Windows will hopefully come soon from the community.\nDiscussion happening in [this thread](https://github.com/carderne/signal-export/issues/133).**\n\nExport chats from the [Signal](https://www.signal.org/) [Desktop app](https://www.signal.org/download/) to Markdown and HTML files with attachments. Each chat is exported as an individual .md/.html file and the attachments for each are stored in a separate folder. Attachments are linked from the Markdown files and displayed in the HTML (pictures, videos, voice notes).\n\nCurrently this seems to be the only way to get chat history out of Signal!\n\nAdapted from [mattsta/signal-backup](https://github.com/mattsta/signal-backup), which I suspect will be hard to get working now.\n\n## Example\nAn export for a group conversation looks as follows:\n```markdown\n[2019-05-29, 15:04] Me: How is everyone?\n[2019-05-29, 15:10] Aya: We're great!\n[2019-05-29, 15:20] Jim: I'm not.\n```\n\nImages are attached inline with `![name](path)` while other attachments (voice notes, videos, documents) are included as links like `[name](path)` so a click will take you to the file.\n\nThis is converted to HTML at the end so it can be opened with any web browser. The stylesheet `.css` is still very basic but I'll get to it sooner or later.\n\n## \ud83d\udc27 Installation\n1. Make sure you have Python installed.\n\n2. Install this package:\n```bash\npip install signal-export\n```\n\n3. Then run the script!\n```bash\nsigexport ~/signal-chats\n\n# or for Windows:\npython -m sigexport C:\\Temp\\SignalExport\n```\n\n## \ud83e\ude9f Installation: Windows\nIf you need step-by-step instructions on things like enabling WSL2, please see the dedicated [Windows Installation](./INSTALLATION.md) instructions.\n\n## \ud83d\ude80 Usage\nPlease fully exit your Signal app before proceeding, otherwise you will likely encounter an `I/O disk` error, due to the message database being made read-only, as it was being accessed by the app.\n\nSee the full help info:\n```bash\nsigexport --help\n```\n\nDisable pagination on HTML:\n```bash\nsigexport --paginate=0 ~/signal-chats\n```\n\nList available chats and exit:\n```bash\nsigexport --list-chats\n```\n\nExport only the selected chats:\n```bash\nsigexport --chats=Jim,Aya ~/signal-chats\n```\n\nYou can add `--source /path/to/source/dir/` if the script doesn't manage to find the Signal config location.\nDefault locations per OS are below.\nThe directory should contain a folder called `sql` with `db.sqlite` inside it.\n- Linux: `~/.config/Signal/`\n- macOS: `~/Library/Application Support/Signal/`\n- Windows: `~/AppData/Roaming/Signal/`\n\nYou can also use `--old /previously/exported/dir/` to merge the new export with a previous one.\n_Nothing will be overwritten!_\nIt will put the combined results in whatever output directory you specified and leave your previos export untouched.\nExercise is left to the reader to verify that all went well before deleting the previous one.\n\n## Development\n```bash\ngit clone https://github.com/carderne/signal-export.git\ncd signal-export\nrye sync --no-lock\n```\n\nVarious dev commands:\n```bash\nrye fmt         # format\nrye lint        # lint\nrye run check   # typecheck\nrye run test    # test\nrye run sig     # run signal-export\n```\n\n## Similar things\n- [signal-backup-decode](https://github.com/pajowu/signal-backup-decode) might be easier if you use Android!\n- [signal2html](https://github.com/GjjvdBurg/signal2html) also Android only\n- [sigtop](https://github.com/tbvdm/sigtop)\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Export Signal conversations to Markdown and HTML",
    "version": "3.2.2",
    "project_urls": {
        "homepage": "https://github.com/carderne/signal-export",
        "repository": "https://github.com/carderne/signal-export"
    },
    "split_keywords": [
        "backup",
        " chat",
        " export"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2d97628badfed8ba6ab4bc2195ea9ddf0a04df928500b06a7128745f6c90f78e",
                "md5": "0d81291c6766a7fa6f64700edfa82219",
                "sha256": "4074e2c79ea176e8f15abfa98c283aceed79b4207b6280d2ce63695b058e1cdd"
            },
            "downloads": -1,
            "filename": "signal_export-3.2.2.tar.gz",
            "has_sig": false,
            "md5_digest": "0d81291c6766a7fa6f64700edfa82219",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 55133,
            "upload_time": "2024-11-07T21:21:31",
            "upload_time_iso_8601": "2024-11-07T21:21:31.828423Z",
            "url": "https://files.pythonhosted.org/packages/2d/97/628badfed8ba6ab4bc2195ea9ddf0a04df928500b06a7128745f6c90f78e/signal_export-3.2.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-07 21:21:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "carderne",
    "github_project": "signal-export",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "signal-export"
}
        
Elapsed time: 0.34297s