from pathlib import Path from mastodon import Mastodon from . import Feed from ..utils import CONFIG_PATH, PROGRAM_NAME, prompt class MastodonFeed(Feed): CLIENTCRED_PATH: Path = CONFIG_PATH.joinpath("mastodon_clientcred.secret") USERCRED_PATH: Path = CONFIG_PATH.joinpath("mastodon_usercred.secret") # https://github.com/halcy/Mastodon.py def __init__(self, username: str, password: str, api_base_url: str): if not self.CLIENTCRED_PATH.exists(): self._create_app(api_base_url) self.mastodon = Mastodon(client_id=self.CLIENTCRED_PATH) self.mastodon.log_in( username=username, password=password, ) super().__init__() def _create_app(self, api_base_url: str): client_id, client_secret = Mastodon.create_app( PROGRAM_NAME, api_base_url=api_base_url, to_file=self.CLIENTCRED_PATH ) self._save_clientcred(client_id, client_secret) def prompt_auth(self) -> dict: """ mastodon needs: - the instance used - the email of the user - the password of the user """ return { "api_base_url": prompt.for_string("The instance you use", "https://mastodon.social"), "username": prompt.for_string("E-Mail"), "password": prompt.for_password("Password"), }