parse arguments

This commit is contained in:
cynic 2024-07-12 02:30:45 -05:00
parent 89812f4890
commit 6df721951f

View File

@ -1,16 +1,42 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import argparse
import requests import requests
import sys import sys
from pprint import pformat from pprint import pformat
from time import sleep, time from time import sleep, time
# configure your session here # configure anti-throtle
homeserver = "matrix.domain.tld"
access_token = "syt_M4dpAzM_iQdfTcDDoiGhlOTDnz1r_5HfPcV"
room_id = sys.argv[1]
sleep_for_seconds = 3 sleep_for_seconds = 3
pagination_limit = 150
# parse arguments
parser = argparse.ArgumentParser()
parser.add_argument(
"room_ids",
help="room ID's",
nargs='*')
parser.add_argument(
"-n",
"--nuke",
help="try and delete all messages in the room, not only mine",
action='store_true')
req_args = parser.add_argument_group('required')
req_args.add_argument(
"-s",
"--homeserver",
help="homeserver's domain name",
required=True)
req_args.add_argument(
"-t",
"--access-token",
help="Matrix access token",
required=True)
args = parser.parse_args()
homeserver = args.homeserver
access_token = args.access_token
room_ids = args.room_ids
def whoami(acces_token): def whoami(acces_token):
@ -29,13 +55,18 @@ def get_all_encrypted_messages(homeserver, room_id, access_token):
print("Reading messages...") print("Reading messages...")
# don't get throttled # don't get throttled
sleep(sleep_for_seconds) sleep(sleep_for_seconds)
# define request parameters
filter_param = '"types":["m.room.encrypted", "m.room.message"]'
if not args.nuke:
filter_param = '"senders":["' + my_username + '"],' + filter_param
params = { params = {
"dir": "b", "dir": "b",
"limit": 50, "limit": pagination_limit,
"filter": '{"senders":["' + my_username + '"]}' "filter": '{' + filter_param + '}'
} }
if next_batch: if next_batch:
params["from"] = next_batch params["from"] = next_batch
# make request
url = f"https://{homeserver}/_matrix/client/v3/rooms/{room_id}/messages" url = f"https://{homeserver}/_matrix/client/v3/rooms/{room_id}/messages"
headers = { "Authorization": f"Bearer {access_token}" } headers = { "Authorization": f"Bearer {access_token}" }
response = requests.get(url, params=params, headers=headers) response = requests.get(url, params=params, headers=headers)
@ -66,9 +97,10 @@ def redact_message(message):
response.raise_for_status() response.raise_for_status()
all_messages = get_all_encrypted_messages(homeserver, room_id, access_token) for room_id in room_ids:
message_count = 0 all_messages = get_all_encrypted_messages(homeserver, room_id, access_token)
for message in all_messages: message_count = 0
for message in all_messages:
if message['content']: if message['content']:
redact_message(message) redact_message(message)
message_count += 1 message_count += 1