You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.7 KiB

Signal Group User Activity

"How active is each user in the signal groups I'm in?"

This project generates a spreadsheet that looks like this:

Alice Bob ...
Neighborhod Chat 1 5 ...
Roomate Chat 12 0 ...
... ... ... ...

Each cell is the total message count for a user in a chat.

The goal is to afford distributed collection of group participation metadata from a community that uses disparate signal groups. No one member of the community is a member of every signal group, so we need to make use of multiple users' signal data.

I personally would not at all feel comfortable sending someone my decrypted signal database, so I implemented this as a dockerized python command line tool that runs locally. It generates a simple csv file that's easily inspectable before sharing.

Usage

First build the docker container for the tool

$ ./build.sh
Sending build context to Docker daemon  716.3kB
Step 1/12 : FROM archlinux:base-20241110.0.278197
---> 8f94599caa7b
[...]
Successfully built 1c3e3a1b45f5
Successfully tagged sigint:latest

The following command will run the analysis against the signal config directory you point it to, and dump the output to ./output/table.csv:

$ ./run.sh -c ~/.config/Signal

INFO:main:writing message count table to /output/table.csv

Adding -f will filter the groups under consideration to only those listed in config/chat_list.txt

$ ./run.sh -c ~/.config/Signal -f

You might want to run the command once without filtering, then paste the chat name column from the spreadsheet into config/chat_list.txt and narrow down to only the ones you care about and run it again with -f.