packpath: A command line utility to upload Signal stickers from a simple config file
I have been using Signal a lot and, besides the privacy features, I have
come to really enjoy custom sticker packs. Naturally, this led me to
upload and maintain a lot of them. To keep things under control I
wrote packpath
, a small command line utility to easily upload and
update Signal sticker packs from a simple config file.
Although the Signal stickers API is only kinda public, some developers have written libraries to interact with it. Concretely, signalstickers.com maintainer Romain Ricard, has written signalstickers-client, a Python library to interact with the sticker API.
Thanks to signalstickers-client
doing all of the heavy lifting, I was
able to write packpath
, a simple command line utility to create and
publish sticker packs based on a simple YAML configuration file. It's
already available as packpath in
PyPI:
$ pip3 install packpath
To use packpath
, you need to create a directory with your sticker
images and a config.yaml
file. The YAML format is available in
packpath --help
, but it's actually very simple:
pack:
title: Ketnipz
author: Harry Hambley
cover: ketnipz_001.webp
stickers:
ketnipz_001.webp: 💓️
ketnipz_002.webp: 💃️
ketnipz_003.webp: 💕️
ketnipz_004.webp: 😐️
ketnipz_005.webp: 🙃️
You'll need your Signal "user and password", which are available on
the desktop app through the web developer tools
(window.reduxStore.getState().items.uuid_id
and
window.reduxStore.getState().items.password
). See details on
signalstickers-client
README.
You can then call packpath
on the directory:
$ packpath --user UUID --password PASS path/to/sticker/pack
You will get a progress report, and the "secret" URL to share your sticker pack:
$ packpath --user UUID --password PASS path/to/sticker/pack
[packpath] Configuring sticker pack Ketnipz by Harry Hambley
[packpath] Adding: 💓️ for ketnipz_001.webp
[packpath] Adding: 💃️ for ketnipz_002.webp
[packpath] Adding: 💕️ for ketnipz_003.webp
[packpath] Adding: 😐️ for ketnipz_004.webp
[packpath] Adding: 🙃️ for ketnipz_005.webp
Pack uploaded!
Pack uploaded. You can install it by visiting:
https://signal.art/addstickers/#pack_id=NNNNN&pack_key=MMMMM
You can also preview your pack at signalstickers.com:
https://signalstickers.com/pack/NNNNN?key=MMMMM
Note that visiting the above URL will (technically) make the pack ID and key visible to signalstickers.com server logs.
This will NOT add your pack to signalstickers.com, see https://signalstickers.com/contribute for that.
The code is licensed as AGPL-3.0-only, and you can check it out in the packpath repo in GitHub.
Many thanks to Romain for writing
signalstickers-client
,
which actually made this tool possible.