Skip to content

Instantly share code, notes, and snippets.

@anonfloppa
Created November 3, 2021 02:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonfloppa/5c7a2eb643cc046e65b18d782534ce0e to your computer and use it in GitHub Desktop.
Save anonfloppa/5c7a2eb643cc046e65b18d782534ce0e to your computer and use it in GitHub Desktop.
a python script to select users who has the most devices
import requests
import pprint
token = 'PUT YOUR TOKEN HERE'
room = '!ROOM_ID:SERVER.DOM'
server_api = 'PUT YOUR SERVER HERE' # example: matrix.anontier.nl
query_members = f'https://{server_api}/_synapse/admin/v1/rooms/{room}/members?dir=b&from=0&limit=99999&order_by=id&access_token={token}'
query_devices = f'https://{server_api}/_matrix/client/r0/keys/query?access_token={token}'
data = {'device_keys': {},}
all_members = requests.get(query_members).json()
for member in all_members['members']:
data['device_keys'][member] = []
counter = []
all_devices = requests.post(query_devices, json=data).json()
for user, devices in all_devices['device_keys'].items():
counter.append((len(devices), user))
pprint.pprint(sorted(counter, reverse=True))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment