diff --git a/docs/index.rst b/docs/index.rst index 3871972..6279d48 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -99,6 +99,7 @@ User dicts 'header': URL for their header image 'id': Same as 'username': The username (what you @ them with) + 'locked': Denotes whether the account can be followed without a follow request } Toot dicts @@ -108,7 +109,7 @@ Toot dicts mastodon.toot("Hello from Python") # Returns the following dictionary: { - 'sensitive': Denotes whether the toot is marked sensitive + 'sensitive': Denotes whether media attachments to the toot are marked sensitive 'created_at': Creation time 'mentions': A list of account dicts mentioned in the toot 'uri': Descriptor for the toot @@ -123,6 +124,7 @@ Toot dicts 'reblog': Denotes whether the toot is a reblog 'url': URL of the toot 'content': Content of the toot, as HTML: '

Hello from Python

' + 'spoiler_text': Warning text that should be displayed before the toot content 'favourited': Denotes whether the logged in user has favourited this toot 'account': Account dict for the logged in account } @@ -138,6 +140,8 @@ Relationship dicts 'following': Boolean denoting whether you follow them 'id': Numerical id (same one as ) 'blocking': Boolean denoting whether you are blocking them + 'muting': Boolean denoting whether you are muting them + 'requested': Boolean denoting whether you have sent them a follow request } Notification dicts @@ -205,6 +209,7 @@ user could see, as well as hashtag timelines and the public timeline. .. automethod:: Mastodon.timeline .. automethod:: Mastodon.timeline_home .. automethod:: Mastodon.timeline_mentions +.. automethod:: Mastodon.timeline_local .. automethod:: Mastodon.timeline_public .. automethod:: Mastodon.timeline_hashtag @@ -236,6 +241,28 @@ their relationships. .. automethod:: Mastodon.account_relationships .. automethod:: Mastodon.account_search +Reading data: Mutes and blocks +------------------------------ +These functions allow you to get information about accounts that are +muted or blocked by the logged in user. + +.. automethod:: Mastodon.mutes +.. automethod:: Mastodon.blocks + +Reading data: Favourites +------------------------ +This function allows you to get information about statuses favourited +by the authenticated user. + +.. authomethod:: Mastodon.favourites + +Reading data: Follow requests +----------------------------- +This function allows you to get a list of pending incoming follow +requests for the authenticated user. + +.. automethod:: Mastodon.follow_requests + Writing data: Statuses ---------------------- These functions allow you to post statuses to Mastodon and to @@ -258,6 +285,15 @@ These functions allow you to interact with other accounts: To (un)follow and .. automethod:: Mastodon.account_unfollow .. automethod:: Mastodon.account_block .. automethod:: Mastodon.account_unblock +.. automethod:: Mastodon.account_mute +.. automethod:: Mastodon.account_unmute + +Writing data: Follow requests +----------------------------- +These functions allow you to accept or reject incoming follow requests. + +.. automethod:: Mastodon.follow_request_authorize +.. automethod:: Mastodon.follow_request_reject Writing data: Media ------------------- diff --git a/mastodon/Mastodon.py b/mastodon/Mastodon.py index a5cf428..69d71ec 100644 --- a/mastodon/Mastodon.py +++ b/mastodon/Mastodon.py @@ -166,14 +166,20 @@ class Mastodon: ## def timeline(self, timeline = "home", max_id = None, since_id = None, limit = None): """ - Fetch statuses, most recent ones first. Timeline can be home, mentions, public - or tag/hashtag. See the following functions documentation for what those do. + Fetch statuses, most recent ones first. Timeline can be home, mentions, local, + public, or tag/hashtag. See the following functions documentation for what those do. The default timeline is the "home" timeline. Returns a list of toot dicts. """ - params = self.__generate_params(locals(), ['timeline']) + params_initial = locals() + + if timeline == "local": + timeline = "public" + params_initial['local'] = True + + params = self.__generate_params(params_initial, ['timeline']) return self.__api_request('GET', '/api/v1/timelines/' + timeline, params) def timeline_home(self, max_id = None, since_id = None, limit = None): @@ -192,6 +198,14 @@ class Mastodon: """ return self.timeline('mentions', max_id = max_id, since_id = since_id, limit = limit) + def timeline_local(self, max_id = None, since_id = None, limit = None): + """ + Fetches the local / instance-wide timeline. + + Returns a list of toot dicts. + """ + return self.timeline('local', max_id = max_id, since_id = since_id, limit = limit) + def timeline_public(self, max_id = None, since_id = None, limit = None): """ Fetches the public / visible-network timeline. @@ -319,10 +333,52 @@ class Mastodon: params = self.__generate_params(locals()) return self.__api_request('GET', '/api/v1/accounts/search', params) + ### + # Reading data: Mutes and Blocks + ### + def mutes(self): + """ + Fetch a list of users muted by the authenticated user. + + Returns a list of user dicts. + """ + return self.__api_request('GET', '/api/v1/mutes') + + def blocks(self): + """ + Fetch a list of users blocked by the authenticated user. + + Returns a list of user dicts. + """ + return self.__api_request('GET', '/api/v1/blocks') + + ### + # Reading data: Favourites + ### + def favourites(self): + """ + Fetch the authenticated user's favourited statuses. + + Returns a list of toot dicts. + """ + return self.__api_request('GET', '/api/v1/favourites') + + ### + # Reading data: Follow requests + ### + def follow_requests(self, max_id = None, since_id = None, limit = None): + """ + Fetch the authenticated user's incoming follow requests. + + Returns a list of user dicts. + """ + params = self.__generate_params(locals()) + return self.__api_request('GET', '/api/v1/follow_requests', params) + ### # Writing data: Statuses ### - def status_post(self, status, in_reply_to_id = None, media_ids = None, sensitive = False, visibility = ''): + def status_post(self, status, in_reply_to_id = None, media_ids = None, sensitive = False, visibility = '', spoiler_text = None): """ Post a status. Can optionally be in reply to another status and contain up to four pieces of media (Uploaded via media_post()). media_ids can @@ -342,6 +398,10 @@ class Mastodon: If not passed in, visibility defaults to match the current account's privacy setting (private if the account is locked, public otherwise). + The spoiler_text parameter is a string to be shown as a warning before + the text of the status. If no text is passed in, no warning will be + displayed. + Returns a toot dict with the new status. """ params_initial = locals() @@ -409,7 +469,8 @@ class Mastodon: return self.__api_request('POST', '/api/v1/statuses/' + str(id) + "/favourite") def status_unfavourite(self, id): - """Favourite a status. + """ + Un-favourite a status. Returns a toot dict with the un-favourited status. """ @@ -450,6 +511,41 @@ class Mastodon: """ return self.__api_request('POST', '/api/v1/accounts/' + str(id) + "/unblock") + def account_mute(self, id): + """ + Mute a user. + + Returns a relationship dict containing the updated relationship to the user. + """ + return self.__api_request('POST', '/api/v1/accounts/' + str(id) + "/mute") + + def account_unmute(self, id): + """ + Unmute a user. + + Returns a relationship dict containing the updated relationship to the user. + """ + return self.__api_request('POST', '/api/v1/accounts/' + str(id) + "/unmute") + + ### + # Writing data: Follow requests + ### + def follow_request_authorize(self, id): + """ + Accept an incoming follow request. + + Returns a user dict of the authorized account. + """ + return self.__api_request('POST', '/api/v1/follow_requests/' + str(id) + "/authorize") + + def follow_request_reject(self, id): + """ + Reject an incoming follow request. + + Returns a user dict of the rejected account. + """ + return self.__api_request('POST', '/api/v1/follow_requests/' + str(id) + "/reject") + ### # Writing data: Media ###