initial commit

This commit is contained in:
Hirad 2024-07-07 08:17:04 +03:30
parent 5bc3d84b89
commit 604850a16b
10 changed files with 260 additions and 0 deletions

0
src/__init__.py Normal file
View file

0
src/api/__init__.py Normal file
View file

16
src/api/media_info.py Normal file
View file

@ -0,0 +1,16 @@
from datetime import datetime
def get_media_info(media):
media_id = media['media_id']
media_type = media['media_type']
media_length = media['media_length']
media_name = media['upload_name']
created_ts = media['created_ts']
media_mb_size = media_length / (1024 * 1024)
media_size = round(media_mb_size, 2)
unix_ts = datetime.fromtimestamp(created_ts / 1000.0).strftime('%Y-%m-%d %H:%M:%S')
print(f"ID: {media_id}, Name: {media_name}, Type: {media_type}, Size: {media_size}MB, Created: {unix_ts}")

51
src/api/synapse.py Normal file
View file

@ -0,0 +1,51 @@
import requests
from src.config.config_parser import Config
class Synapse:
def __init__(self):
self.homeserver = None
self.access_token = None
self.header = None
self.base_url = None
self.initialize()
def initialize(self):
config = Config()
self.homeserver, self.access_token = config.get_config()
self.base_url = f"https://{self.homeserver}/_synapse/admin"
self.header = {"Authorization": f"Bearer {self.access_token}"}
def request(self, url, method):
try:
return requests.request(url=url, headers=self.header, method=method)
except Exception as e:
print(f"Error making request: {e}")
return None
def delete_media_by_id(self, media_id):
url = f"{self.base_url}/v1/media/{self.homeserver}/{media_id}"
return self.request(url, "DELETE")
def get_users_media_usage(self, limit=100, order="media_length", direction="b"):
url = f"{self.base_url}/v1/statistics/users/media?limit={limit}&order_by={order}&dir={direction}"
return self.request(url, "GET")
def search_for_user(self, search_term, limit=10, order="media_length", direction="b"):
url = f"{self.base_url}/v1/statistics/users/media?search_term={search_term}&order_by={order}&dir={direction}"
return self.request(url, "GET")
def get_rooms_list(self, room_name=None, batch=0):
if room_name:
url = f"{self.base_url}/v1/rooms?search_term={room_name}&from={batch}"
else:
url = f"{self.base_url}/v1/rooms?from={batch}"
return self.request(url, "GET")
def get_user_info(self, user_id):
url = f"{self.base_url}/v2/users/{user_id}"
return self.request(url, "GET")
def get_user_media(self, user_id, limit=100, order="media_length", direction="b"):
url = f"{self.base_url}/v1/users/{user_id}/media?limit={limit}&order_by={order}&dir={direction}"
return self.request(url, "GET")

14
src/api/user_info.py Normal file
View file

@ -0,0 +1,14 @@
def get_user_info(user):
user_id = user['user_id']
display_name = user['displayname']
media_count = user['media_count']
media_length = user['media_length']
media_mb_size = media_length / (1024 * 1024)
media_size = round(media_mb_size, 2)
output = f"Username: {display_name}, ID: {user_id}, Media Count: {media_count}, Media Size: {media_size}MB"
print(output)
print(len(output) * "-")

0
src/config/__init__.py Normal file
View file

View file

@ -0,0 +1,48 @@
import os
from configparser import ConfigParser
CONFIG_FILE_PATH = 'config.ini'
class Config:
def __init__(self):
self.config = ConfigParser()
self.config_file = 'config.ini'
self.get_config()
def check_config_exists(self):
if os.path.exists(self.config_file):
return True
else:
return False
def get_config(self):
if self.check_config_exists():
try:
self.config.read(self.config_file)
homeserver = self.config.get('synapse', 'homeserver')
access_token = self.config.get('synapse', 'access_token')
return homeserver, access_token
except Exception as e:
print(f"Error reading config file: {e}")
return None, None
else:
homeserver = input("Enter homeserver url: ")
access_token = input("Enter access token: ")
if homeserver and access_token:
self.config['synapse'] = {
'homeserver': homeserver,
'access_token': access_token
}
with open(self.config_file, 'w') as configfile:
self.config.write(configfile)
def get_excluded_users(self):
try:
self.config.read(self.config_file)
excluded_users = self.config.get('options', 'excluded_users').split(',')
return excluded_users
except Exception as e:
print(f"Error reading config file: {e}")
return []

0
src/data/__init__.py Normal file
View file

0
src/data/database.py Normal file
View file