From 6df721951f5705128775415a5282c6405d223144 Mon Sep 17 00:00:00 2001 From: cynic Date: Fri, 12 Jul 2024 02:30:45 -0500 Subject: [PATCH] parse arguments --- redact_all_messages.py | 60 ++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/redact_all_messages.py b/redact_all_messages.py index c98f969..e377101 100644 --- a/redact_all_messages.py +++ b/redact_all_messages.py @@ -1,16 +1,42 @@ #!/usr/bin/env python3 +import argparse import requests import sys from pprint import pformat from time import sleep, time -# configure your session here -homeserver = "matrix.domain.tld" -access_token = "syt_M4dpAzM_iQdfTcDDoiGhlOTDnz1r_5HfPcV" - -room_id = sys.argv[1] +# configure anti-throtle 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): @@ -29,13 +55,18 @@ def get_all_encrypted_messages(homeserver, room_id, access_token): print("Reading messages...") # don't get throttled 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 = { "dir": "b", - "limit": 50, - "filter": '{"senders":["' + my_username + '"]}' + "limit": pagination_limit, + "filter": '{' + filter_param + '}' } if next_batch: params["from"] = next_batch + # make request url = f"https://{homeserver}/_matrix/client/v3/rooms/{room_id}/messages" headers = { "Authorization": f"Bearer {access_token}" } response = requests.get(url, params=params, headers=headers) @@ -66,10 +97,11 @@ def redact_message(message): response.raise_for_status() -all_messages = get_all_encrypted_messages(homeserver, room_id, access_token) -message_count = 0 -for message in all_messages: - if message['content']: - redact_message(message) - message_count += 1 - print("Redacted messages:", message_count) +for room_id in room_ids: + all_messages = get_all_encrypted_messages(homeserver, room_id, access_token) + message_count = 0 + for message in all_messages: + if message['content']: + redact_message(message) + message_count += 1 + print("Redacted messages:", message_count)