diff --git a/docs/06_accounts.rst b/docs/06_accounts.rst index b188684..53ec717 100644 --- a/docs/06_accounts.rst +++ b/docs/06_accounts.rst @@ -15,6 +15,7 @@ Reading .. automethod:: Mastodon.account .. automethod:: Mastodon.account_search .. automethod:: Mastodon.account_lookup +.. automethod:: Mastodon.accounts .. automethod:: Mastodon.featured_tags .. automethod:: Mastodon.featured_tag_suggestions diff --git a/docs/15_everything.rst b/docs/15_everything.rst index 84ddbbe..b6711cf 100644 --- a/docs/15_everything.rst +++ b/docs/15_everything.rst @@ -1,8 +1,8 @@ -Every function on a huge CTRL-F-able page -========================================= -.. py:module:: mastodon -.. py:class: Mastodon - +Every function on a huge CTRL-F-able page +========================================= +.. py:module:: mastodon +.. py:class: Mastodon + .. automethod:: Mastodon.retrieve_mastodon_version .. automethod:: Mastodon.verify_minimum_version .. automethod:: Mastodon.create_app @@ -51,6 +51,7 @@ Every function on a huge CTRL-F-able page .. automethod:: Mastodon.account .. automethod:: Mastodon.account_search .. automethod:: Mastodon.account_lookup +.. automethod:: Mastodon.accounts .. automethod:: Mastodon.featured_tags .. automethod:: Mastodon.featured_tag_suggestions .. automethod:: Mastodon.account_featured_tags @@ -184,5 +185,5 @@ Every function on a huge CTRL-F-able page .. automethod:: Mastodon.admin_delete_domain_block .. automethod:: Mastodon.admin_measures .. automethod:: Mastodon.admin_dimensions -.. automethod:: Mastodon.admin_retention - +.. automethod:: Mastodon.admin_retention + diff --git a/mastodon/accounts.py b/mastodon/accounts.py index 30c9c63..439ee75 100644 --- a/mastodon/accounts.py +++ b/mastodon/accounts.py @@ -84,7 +84,7 @@ class Mastodon(Internals): self.access_token = response['access_token'] self.__set_refresh_token(response.get('refresh_token')) self.__set_token_expired(int(response.get('expires_in', 0))) - except Exception as e: + except Exception: raise MastodonIllegalArgumentError('Invalid request') # Step 3: Check scopes, persist, et cetera @@ -133,6 +133,16 @@ class Mastodon(Internals): id = self.__unpack_id(id) return self.__api_request('GET', f'/api/v1/accounts/{id}') + @api_version("4.3.0", "4.3.0", _DICT_VERSION_ACCOUNT) + def accounts(self, ids: List[Union[Account, IdType]]) -> List[Account]: + """ + Fetch information from multiple accounts by a list of user `id`. + + Does not require authentication for publicly visible accounts. + """ + ids = [self.__unpack_id(id) for id in ids] + return self.__api_request('GET', '/api/v1/accounts', {"id": ids}) + @api_version("1.0.0", "2.1.0", _DICT_VERSION_ACCOUNT) def account_verify_credentials(self) -> Account: """ @@ -255,7 +265,7 @@ class Mastodon(Internals): """ params = self.__generate_params(locals()) - if params["following"] == False: + if params["following"] is False: del params["following"] return self.__api_request('GET', '/api/v1/accounts/search', params) diff --git a/tests/test_account.py b/tests/test_account.py index aebfaa2..8f395cc 100644 --- a/tests/test_account.py +++ b/tests/test_account.py @@ -8,6 +8,15 @@ def test_account(api): account = api.account(api.account_verify_credentials()) assert account +@pytest.mark.vcr() +def test_accounts(api): + account_ids = [ + api.account_lookup("mastodonpy_test").id, + api.account_lookup("mastodonpy_test_2").id + ] + accounts = api.accounts(account_ids) + assert len(accounts) == 2 + @pytest.mark.vcr() def test_verify_credentials(api): account_a = api.account_verify_credentials()