Add basic support for scheduled statuses
This commit is contained in:
pare
08ba4c88bf
commit
09f9023c70
S'han modificat 1 arxius amb 30 adicions i 8 eliminacions
|
@ -179,6 +179,7 @@ class Mastodon:
|
||||||
__DICT_VERSION_PUSH_NOTIF = "2.4.0"
|
__DICT_VERSION_PUSH_NOTIF = "2.4.0"
|
||||||
__DICT_VERSION_FILTER = "2.4.3"
|
__DICT_VERSION_FILTER = "2.4.3"
|
||||||
__DICT_VERSION_CONVERSATION = bigger_version(bigger_version("2.6.0", __DICT_VERSION_ACCOUNT), __DICT_VERSION_STATUS)
|
__DICT_VERSION_CONVERSATION = bigger_version(bigger_version("2.6.0", __DICT_VERSION_ACCOUNT), __DICT_VERSION_STATUS)
|
||||||
|
__DICT_VERSION_SCHEDULED_STATUS = bigger_version("2.7.0", __DICT_VERSION_STATUS)
|
||||||
|
|
||||||
###
|
###
|
||||||
# Registering apps
|
# Registering apps
|
||||||
|
@ -1300,10 +1301,11 @@ class Mastodon:
|
||||||
###
|
###
|
||||||
# Writing data: Statuses
|
# Writing data: Statuses
|
||||||
###
|
###
|
||||||
@api_version("1.0.0", "2.4.3", __DICT_VERSION_STATUS)
|
@api_version("1.0.0", "2.7.0", __DICT_VERSION_STATUS)
|
||||||
def status_post(self, status, in_reply_to_id=None, media_ids=None,
|
def status_post(self, status, in_reply_to_id=None, media_ids=None,
|
||||||
sensitive=False, visibility=None, spoiler_text=None,
|
sensitive=False, visibility=None, spoiler_text=None,
|
||||||
language=None, idempotency_key=None, content_type=None):
|
language=None, idempotency_key=None, content_type=None,
|
||||||
|
scheduled_at=None):
|
||||||
"""
|
"""
|
||||||
Post a status. Can optionally be in reply to another status and contain
|
Post a status. Can optionally be in reply to another status and contain
|
||||||
media.
|
media.
|
||||||
|
@ -1341,7 +1343,11 @@ class Mastodon:
|
||||||
if you call it with the same `idempotency_key`, only one status will
|
if you call it with the same `idempotency_key`, only one status will
|
||||||
be created.
|
be created.
|
||||||
|
|
||||||
Specify 'content_type' to set the content type of your post on Pleroma.
|
Pass a datetime as `scheduled_at` to schedule the toot for a specific time
|
||||||
|
(the time must be at least 5 minutes into the future). If this is passed,
|
||||||
|
status_post returns a `scheduled toot dict`_ instead.
|
||||||
|
|
||||||
|
Specify `content_type` to set the content type of your post on Pleroma.
|
||||||
It accepts 'text/plain' (default), 'text/markdown', and 'text/html'.
|
It accepts 'text/plain' (default), 'text/markdown', and 'text/html'.
|
||||||
This parameter is not supported on Mastodon servers, but will be
|
This parameter is not supported on Mastodon servers, but will be
|
||||||
safely ignored if set.
|
safely ignored if set.
|
||||||
|
@ -1351,6 +1357,9 @@ class Mastodon:
|
||||||
if in_reply_to_id != None:
|
if in_reply_to_id != None:
|
||||||
in_reply_to_id = self.__unpack_id(in_reply_to_id)
|
in_reply_to_id = self.__unpack_id(in_reply_to_id)
|
||||||
|
|
||||||
|
if scheduled_at != None:
|
||||||
|
scheduled_at = scheduled_at.isoformat()
|
||||||
|
|
||||||
params_initial = locals()
|
params_initial = locals()
|
||||||
|
|
||||||
# Validate visibility parameter
|
# Validate visibility parameter
|
||||||
|
@ -1395,7 +1404,7 @@ class Mastodon:
|
||||||
params = self.__generate_params(params_initial, ['idempotency_key'])
|
params = self.__generate_params(params_initial, ['idempotency_key'])
|
||||||
return self.__api_request('POST', '/api/v1/statuses', params, headers = headers)
|
return self.__api_request('POST', '/api/v1/statuses', params, headers = headers)
|
||||||
|
|
||||||
@api_version("1.0.0", "2.4.3", __DICT_VERSION_STATUS)
|
@api_version("1.0.0", "2.7.0", __DICT_VERSION_STATUS)
|
||||||
def toot(self, status):
|
def toot(self, status):
|
||||||
"""
|
"""
|
||||||
Synonym for `status_post()`_ that only takes the status text as input.
|
Synonym for `status_post()`_ that only takes the status text as input.
|
||||||
|
@ -1406,9 +1415,10 @@ class Mastodon:
|
||||||
"""
|
"""
|
||||||
return self.status_post(status)
|
return self.status_post(status)
|
||||||
|
|
||||||
@api_version("1.0.0", "2.4.3", __DICT_VERSION_STATUS)
|
@api_version("1.0.0", "2.7.0", __DICT_VERSION_STATUS)
|
||||||
def status_reply(self, to_status, status, media_ids=None, sensitive=False, visibility=None,
|
def status_reply(self, to_status, status, media_ids=None, sensitive=False, visibility=None,
|
||||||
spoiler_text=None, language=None, idempotency_key=None, untag=False):
|
spoiler_text=None, language=None, idempotency_key=None, content_type=None,
|
||||||
|
scheduled_at=None, untag=False):
|
||||||
"""
|
"""
|
||||||
Helper function - acts like status_post, but prepends the name of all
|
Helper function - acts like status_post, but prepends the name of all
|
||||||
the users that are being replied to to the status text and retains
|
the users that are being replied to to the status text and retains
|
||||||
|
@ -1440,7 +1450,8 @@ class Mastodon:
|
||||||
|
|
||||||
return self.status_post(status, in_reply_to_id = to_status.id, media_ids = media_ids, sensitive = sensitive,
|
return self.status_post(status, in_reply_to_id = to_status.id, media_ids = media_ids, sensitive = sensitive,
|
||||||
visibility = visibility, spoiler_text = spoiler_text, language = language,
|
visibility = visibility, spoiler_text = spoiler_text, language = language,
|
||||||
idempotency_key = idempotency_key)
|
idempotency_key = idempotency_key, content_type = content_type,
|
||||||
|
scheduled_at = scheduled_at)
|
||||||
|
|
||||||
@api_version("1.0.0", "1.0.0", "1.0.0")
|
@api_version("1.0.0", "1.0.0", "1.0.0")
|
||||||
def status_delete(self, id):
|
def status_delete(self, id):
|
||||||
|
@ -1539,6 +1550,17 @@ class Mastodon:
|
||||||
url = '/api/v1/statuses/{0}/unpin'.format(str(id))
|
url = '/api/v1/statuses/{0}/unpin'.format(str(id))
|
||||||
return self.__api_request('POST', url)
|
return self.__api_request('POST', url)
|
||||||
|
|
||||||
|
###
|
||||||
|
# Writing data: Scheduled statuses
|
||||||
|
###
|
||||||
|
@api_version("2.7.0", "2.7.0", __DICT_VERSION_SCHEDULED_STATUS)
|
||||||
|
def update_scheduled_status(self, id, scheduled_at):
|
||||||
|
scheduled_at = scheduled_at.isoformat()
|
||||||
|
id = self.__unpack_id(id)
|
||||||
|
self.__generate_params(locals(), ['id'])
|
||||||
|
url = '/api/v1/scheduled_statuses/{0}'.format(str(id))
|
||||||
|
return self.__api_request('PUT', url, params)
|
||||||
|
|
||||||
###
|
###
|
||||||
# Writing data: Notifications
|
# Writing data: Notifications
|
||||||
###
|
###
|
||||||
|
@ -2303,7 +2325,7 @@ class Mastodon:
|
||||||
"""
|
"""
|
||||||
Parse dates in certain known json fields, if possible.
|
Parse dates in certain known json fields, if possible.
|
||||||
"""
|
"""
|
||||||
known_date_fields = ["created_at", "week", "day", "expires_at"]
|
known_date_fields = ["created_at", "week", "day", "expires_at", "scheduled_at"]
|
||||||
for k, v in json_object.items():
|
for k, v in json_object.items():
|
||||||
if k in known_date_fields:
|
if k in known_date_fields:
|
||||||
if v != None:
|
if v != None:
|
||||||
|
|
Loading…
Referencia en una nova incidència