All Projects → IdealChain → signal-media-exporter

IdealChain / signal-media-exporter

Licence: GPL-3.0 license
A script to export media files from Signal Desktop.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to signal-media-exporter

focuspoint
Erweitert den Medienpool um die Fähigkeit, den Fokuspunkt eines Bildes zu bestimmen.
Stars: ✭ 57 (+200%)
Mutual labels:  media
great-migration
Copy objects from Rackspace to S3
Stars: ✭ 15 (-21.05%)
Mutual labels:  export
arctee
Atomic tee
Stars: ✭ 22 (+15.79%)
Mutual labels:  export
lk
Simple Web Image Viewer
Stars: ✭ 22 (+15.79%)
Mutual labels:  media
klatexformula
Generate images from LaTeX equations that you can drag and drop, copy and paste or save to disk.
Stars: ✭ 70 (+268.42%)
Mutual labels:  export
elastic-query-export
🚚 Export Data from ElasticSearch to CSV/JSON using a Lucene Query (e.g. from Kibana) or a raw JSON Query string
Stars: ✭ 56 (+194.74%)
Mutual labels:  export
Rise-Media-Player
One media player for everything you own or stream; whether it's music or videos, online or offline Rise Media Player does it all. And it's beautiful and native with the latest version of WinUI.
Stars: ✭ 600 (+3057.89%)
Mutual labels:  media
kcl-timetable
Utilities in Python3 to fetch the KCL Timetable for a user, or export it as iCalendar (*.ics for Google or Apple)!
Stars: ✭ 14 (-26.32%)
Mutual labels:  export
wechat-export
📃 Export WeChat chat histories to HTML files.
Stars: ✭ 585 (+2978.95%)
Mutual labels:  export
ckan-php-manager
A tool for managing a CKAN data catalog
Stars: ✭ 14 (-26.32%)
Mutual labels:  export
speke-reference-server
Secure Packager and Encoder Key Exchange (SPEKE) is part of the AWS Elemental content encryption protection strategy for media services customers. SPEKE defines the standard for communication between our media services and digital rights management (DRM) system key servers. This project provides the basic framework that partners can specialize a…
Stars: ✭ 91 (+378.95%)
Mutual labels:  media
thunder-distribution
A Drupal-based platform for professional publishers
Stars: ✭ 31 (+63.16%)
Mutual labels:  media
evernote-backup
Backup & export all Evernote notes and notebooks
Stars: ✭ 104 (+447.37%)
Mutual labels:  export
skinner
Skin export / import tools for Autodesk Maya
Stars: ✭ 68 (+257.89%)
Mutual labels:  export
node-datachannel
Easy to use WebRTC data channels and media transport. libdatachannel node bindings.
Stars: ✭ 135 (+610.53%)
Mutual labels:  media
icingaweb2-module-pdfexport
PDF export functionality for Icinga Web 2
Stars: ✭ 27 (+42.11%)
Mutual labels:  export
spreadsheet
Yii2 extension for export to Excel
Stars: ✭ 79 (+315.79%)
Mutual labels:  export
triton
Media Processing Pipeline
Stars: ✭ 63 (+231.58%)
Mutual labels:  media
porter
Export legacy forums into a format Vanilla Forums can import.
Stars: ✭ 39 (+105.26%)
Mutual labels:  export
browserexport
backup and parse browser history databases (chrome, firefox, safari, and other chrome/firefox derivatives)
Stars: ✭ 54 (+184.21%)
Mutual labels:  export

signal-media-exporter

Python script to export media files from Signal Desktop.

The Signal Desktop client stores attachment files in the $HOME/.config/Signal/attachments.noindex folder. This script opens the encrypted SQLite database to gather the associated metadata (sender number, message timestamp and expiration date, media content type) and copies the media files to the configured export directory, grouped by the sender number/name. It can be run without needing to exit the Signal Desktop client and will only process newly received media files when run in regular intervals.

Features

  • export media files to a specified output directory
  • either export files from all senders (by number) or from selected senders only (by assigning names)
  • file name and modification time will be set to the timestamp of the original message
  • only newly received media files will be processed on repeated runs - but if you decide to add or rename a selected sender at a later time, all missing media files will be exported on the next run
  • if the same media file appears in multiple conversations, only the earliest instance will be exported (deduplication)
  • media files from expiring messages are not exported by default

Requirements

libsqlcipher

If you're using Linux, you can use the sqlcipher3-binary pip package with a completely self-contained sqlcipher3, statically-linked against the most recent release of libsqlcipher.

Otherwise, you need to use the sqlcipher3 pip package. Then, libsqlcipher>=3.30 must be installed on your system before installing the pip package, so that the binary extension module can be compiled. (In case you get a No module named 'sqlcipher3' error afterwards, the compilation most likely failed due to the library not being found.)

Consult your operating system documentation for how to install SQL Cipher. For Arch Linux, you can install the sqlcipher package. For Debian, there is a (currently outdated) libsqlcipher-dev package.

You can also manually build libsqlcipher by cloning the sqlcipher repository and following the build instructions, followed by sudo make install && sudo ldconfig.

Python (>=3.6)

If you have poetry installed, you can run:

$ poetry install
$ poetry run signal-media-exporter -h

Otherwise, using only pip, you can create a virtalenv:

$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install -r requirements.txt
(venv) $ python -m signal_media_exporter -h

And to install for use from outside the project's directory:

$ poetry build
$ python3 -m pip install dist/*.tar.gz
$ signal-media-exporter -h

Usage / Configuration

You can either just use the similar command line parameters (see signal-media-exporter -h) or create a config.json file by modifying the supplied config.json.example:

{
    "outputDir": "./media",
    "includeExpiringMessages": false,
    "includeAttachments": "visual",
    "map": {
        "+430000000000": "Me",
        "+430000000001": "My buddy"
    }
}
  • outputDir: Output directory for media files, as a relative or absolute path. Inside this directory, subdirectories for the sender numbers or names will be created.
  • includeExpiringMessages: Whether to include media files from messages that are set to expire in the future.
  • includeAttachments: Which types of attachments to include. Options are:
    • "all": All attachments, including audio.
    • "visual": Visual attachments, like JPG, PNG and GIF.
    • "file": Any file attachment that isn't a visual attachment.
  • map: If you include this dict, only the media files sent by the listed numbers will be exported, and the supplied name will be used for the outputDir subdirectories (including your own number). If omitted, all media files will be exported using the senders' numbers as subdirectories. Phone numbers must be complete including the country code.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].