Skip to main content

A client for the Signal stickers API

Project description

Python client for Signal stickers

A client to interact with the Signal stickers API.

  • Fetch sticker packs
  • Get images files
  • Upload sticker packs
  • etc.

Note: despite its name, this client does not interacts with signalstickers.com, so information defined there (tags, etc.) will not be fetched.

This client connects to the Signal sticker API. Please do not flood it (you'll be blocked anyway).

Installation

pip3 install --user signalstickers-client

This module requires cryptography, protobuf, anyio, and httpx (but they should be installed with the previous command).

Usage

If you are not familiar with Signal stickers, read STICKERS_INTERNALS.md first.

Downloading a pack

The StickerPack object returned by await StickersClient().get_pack(<pack_id>, <pack_key>) exposes the following attributes:

  • id: str the pack id. Equals to pack_id;
  • key: str the pack key. Equals to pack_key;
  • title: str the title of the pack;
  • author: str the author of the pack;
  • nb_stickers: int the number of stickers in the pack;
  • cover: Sticker the cover sticker;
  • stickers: list[Sticker] the list of stickers in the pack

A Sticker object exposes the following attributes:

  • id: int the id of the sticker in the pack;
  • emoji: str the emoji mapped to this sticker;
  • image_data: bytes the webp image of the sticker.

Uploading a pack

Same thing, but use LocalStickerPack (that does not contains id and key) instead of StickerPack.

You will need your Signal credentials!

To obtain them, run the Signal Desktop app with the flag --enable-dev-tools, open the Developer Tools, change the JavaScript context from top to Electron Isolated Context (cf. video below), and type window.reduxStore.getState().items.uuid_id to get your USER, and window.reduxStore.getState().items.password to get your PASSWORD.

Video: how to set JavaScript context

https://github.com/signalstickers/signalstickers-client/assets/7778898/ca3f1fec-e908-49d9-88a8-e33d0ee9a453

Example usage

See examples/

Development

  • Create a pipenv with pipenv install --dev;
  • Edit the code you want;
  • Don't forget to launch tests with pipenv run py.test.

License

See LICENSE

Legal

This is not an official Signal project. This is an independant project.
Signal is a registered trademark in the United States and other countries.

Author

Romain Ricard contact+stickerclient@romainricard.fr

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

signalstickers-client-3.3.0.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

signalstickers_client-3.3.0-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file signalstickers-client-3.3.0.tar.gz.

File metadata

  • Download URL: signalstickers-client-3.3.0.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for signalstickers-client-3.3.0.tar.gz
Algorithm Hash digest
SHA256 e5b7bf49d561087f2517656adac269b7d47d86d18efb08fe43b0a9f12f0d657a
MD5 b2f48567e57a0f6cbcc317a759e8678f
BLAKE2b-256 44d26a06ff2e43dadc846922619c8898db08b00f26d8da171cfb3cc2357dc35d

See more details on using hashes here.

File details

Details for the file signalstickers_client-3.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for signalstickers_client-3.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dafab869f954b0f2f16fecf8be610d363f4a6e047e411a6b3ee253f30ea52263
MD5 8f4827b8b4a5a79f72f260bc3a319ce1
BLAKE2b-256 0d0f7c8b908a5143e8d0b2c3c0e583894537a007f7d56d796ef5deddb9efd2ca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page