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

37 lines
970 B
Python

import os
from urllib.parse import urlparse
from matrix_client.client import MatrixClient
MATRIX_USER = os.environ['MATRIX_USER']
MATRIX_PASSWORD = os.environ['MATRIX_PASSWORD']
MATRIX_HOST = os.environ.get('MATRIX_HOST', "https://matrix.org")
_client = None
_download_url_resolvers = dict()
def matrix_client():
global _client
if _client:
return _client
print(f"Signing into {MATRIX_HOST}...")
client = MatrixClient(MATRIX_HOST)
client.login_with_password(username=MATRIX_USER,
password=MATRIX_PASSWORD)
_client = client
return client
def get_download_url(url):
u = urlparse(url)
assert u.scheme == 'mxc'
host = u.netloc
resolvers = _download_url_resolvers
resolver = resolvers.get(host) or MatrixClient(host).api.get_download_url
resolvers[host] = resolver
return 'https://' + resolver(url)
get_matrix_download_url = MatrixClient(MATRIX_HOST).api.get_download_url