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.
Installation
pip install --user signalstickers-client
This module requires cryptography
, protobuf
and requests
(but they should
be installed with the previous command).
Usage
Downloading a pack
The StickerPack
object returned by StickersClient().get_pack(<pack_id>, <pack_key>)
exposes the following attributes:
id
(string): the pack id. Equals topack_id
;key
(string): the pack key. Equals topack_key
;title
(string): the title of the pack;author
(string): the author of the pack;nb_stickers
(int): the number of stickers in the pack;cover
(Sticker
): the cover sticker;stickers
(list): the list of stickers in the pack (which areSticker
objects).
A Sticker
object exposes the following attributes:
id
(int): the id of the sticker in the pack;emoji
(string): the emoji mapped to this sticker;image_data
(bytes): the webp image of the sticker.
Uploading a pack
Same think, but use LocakStickerPack
(that does not contains id
and key
)
instead of StickerPack
.
Example usage
Downloading a pack
import os
from signalstickers_client import StickersClient
# "Friends of the Internet" by Bits of Freedom
pack_id = "4830e258138fca961ab2151d9596755c"
pack_key = "87078ee421bad8bf44092ca72166b67ae5397e943452e4300ced9367b7f6a1a1"
client = StickersClient()
pack = client.get_pack(pack_id, pack_key)
print(pack.title) # "Friends of the Internet"
print(pack.author) # "Bits of Freedom"
print(pack.nb_stickers) # 7
# Saves all stickers in webp format in /tmp/stickersclient
# if the directory exists
for sticker in pack.stickers:
with open(
os.path.join("/tmp", "stickersclient", "{}.webp".format(sticker.id)), "wb"
) as sticker_f:
sticker_f.write(sticker.image_data)
Uploading a pack
from signalstickers_client import StickersClient
from signalstickers_client.models import LocalStickerPack, Sticker
pack = LocalStickerPack()
pack.title = 'Hello world!'
pack.author = "Romain Ricard"
# Add stickers
stick1 = Sticker()
stick1.id = 0
stick1.emoji = "🤪"
with open("/tmp/webp/1.webp", "rb") as f1:
# You can also set image_data directly from bytes
stick1.image_data = f1.read()
pack._addsticker(stick1)
stick2 = Sticker()
stick2.id = 1
stick2.emoji = "🐻"
with open("/tmp/webp/2.webp", "rb") as f2:
stick2.image_data = f2.read()
pack._addsticker(stick2)
# Instanciate the client with your Signal crendentials
client = StickersClient("YOUR_SIGNAL_USER", "YOUR_SIGNAL_PASS")
# Upload the pack
pack_id, pack_key = client.upload_pack(pack)
print("Pack uploaded!\n\nhttps://signal.art/addstickers/#pack_id={}&pack_key={}".format(pack_id, pack_key))
How to obtain Signal credentials? Well, that's the hard part. Read this blog post by x0rz to find out.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for signalstickers-client-2.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | dae2e7675463199d66c58d7fd70d3425b05931264ef3eff1e72fe70ced974787 |
|
MD5 | 242225b2cbc08c25c7d677ce823314e2 |
|
BLAKE2b-256 | 9ae805e299b3303b5584a7a5b006db2f2fc5a83a1acc764470ae7ca9c176f01c |
Hashes for signalstickers_client-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 738205c098753cd049cccdacd7065169834053a658df3d06de386cf2b56884e5 |
|
MD5 | c8f382a5482d995bbc497fd7577a3cd4 |
|
BLAKE2b-256 | efcff586b841ea39deeba377a920fc0833bcf2f76e92cd8edc4740a0ee7b177d |