Merge branch 'master' of https://github.com/halcy/Mastodon.py
This commit is contained in:
commit
39548ffe98
S'han modificat 3 arxius amb 31 adicions i 5 eliminacions
|
@ -35,7 +35,7 @@ Mastodon.py
|
||||||
mastodon.toot('Tooting from python using #mastodonpy !')
|
mastodon.toot('Tooting from python using #mastodonpy !')
|
||||||
|
|
||||||
Python wrapper for the Mastodon ( https://github.com/tootsuite/mastodon/ ) API.
|
Python wrapper for the Mastodon ( https://github.com/tootsuite/mastodon/ ) API.
|
||||||
Feature complete for public API as of version v1.6 and easy to get started with.
|
Feature complete for public API as of version v2.0 and easy to get started with.
|
||||||
|
|
||||||
You can install Mastodon.py via pypi:
|
You can install Mastodon.py via pypi:
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ node running Mastodon by setting api_base_url when creating the
|
||||||
api object (or creating an app).
|
api object (or creating an app).
|
||||||
|
|
||||||
Mastodon.py aims to implement the complete public Mastodon API. As
|
Mastodon.py aims to implement the complete public Mastodon API. As
|
||||||
of this time, it is feature complete for Mastodon version 1.6.
|
of this time, it is feature complete for Mastodon version 2.0.
|
||||||
|
|
||||||
A note about rate limits
|
A note about rate limits
|
||||||
------------------------
|
------------------------
|
||||||
|
|
|
@ -16,6 +16,7 @@ import dateutil.parser
|
||||||
import re
|
import re
|
||||||
import copy
|
import copy
|
||||||
import threading
|
import threading
|
||||||
|
import sys
|
||||||
try:
|
try:
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -776,7 +777,7 @@ class Mastodon:
|
||||||
###
|
###
|
||||||
# Writing data: Media
|
# Writing data: Media
|
||||||
###
|
###
|
||||||
def media_post(self, media_file, mime_type=None):
|
def media_post(self, media_file, mime_type=None, description=None):
|
||||||
"""
|
"""
|
||||||
Post an image. media_file can either be image data or
|
Post an image. media_file can either be image data or
|
||||||
a file name. If image data is passed directly, the mime
|
a file name. If image data is passed directly, the mime
|
||||||
|
@ -804,7 +805,8 @@ class Mastodon:
|
||||||
|
|
||||||
media_file_description = (file_name, media_file, mime_type)
|
media_file_description = (file_name, media_file, mime_type)
|
||||||
return self.__api_request('POST', '/api/v1/media',
|
return self.__api_request('POST', '/api/v1/media',
|
||||||
files={'file': media_file_description})
|
files={'file': media_file_description},
|
||||||
|
params={'description': description})
|
||||||
|
|
||||||
###
|
###
|
||||||
# Writing data: Domain blocks
|
# Writing data: Domain blocks
|
||||||
|
@ -970,6 +972,7 @@ class Mastodon:
|
||||||
|
|
||||||
return (date_time_utc - epoch_utc).total_seconds()
|
return (date_time_utc - epoch_utc).total_seconds()
|
||||||
|
|
||||||
|
|
||||||
def __json_date_parse(self, json_object):
|
def __json_date_parse(self, json_object):
|
||||||
"""
|
"""
|
||||||
Parse dates in certain known json fields, if possible.
|
Parse dates in certain known json fields, if possible.
|
||||||
|
@ -986,6 +989,29 @@ class Mastodon:
|
||||||
raise MastodonAPIError('Encountered invalid date.')
|
raise MastodonAPIError('Encountered invalid date.')
|
||||||
return json_object
|
return json_object
|
||||||
|
|
||||||
|
def __json_id_to_bignum(self, json_object):
|
||||||
|
"""
|
||||||
|
Converts json string IDs to native python bignums.
|
||||||
|
"""
|
||||||
|
if sys.version_info.major >= 3:
|
||||||
|
str_type = str
|
||||||
|
else:
|
||||||
|
str_type = unicode
|
||||||
|
|
||||||
|
if ('id' in json_object and
|
||||||
|
isinstance(json_object['id'], str_type)):
|
||||||
|
try:
|
||||||
|
json_object['id'] = int(json_object['id'])
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return json_object
|
||||||
|
|
||||||
|
def __json_hooks(self, json_object):
|
||||||
|
json_object = self.__json_date_parse(json_object)
|
||||||
|
json_object = self.__json_id_to_bignum(json_object)
|
||||||
|
return json_object
|
||||||
|
|
||||||
def __api_request(self, method, endpoint, params={}, files={}, do_ratelimiting=True):
|
def __api_request(self, method, endpoint, params={}, files={}, do_ratelimiting=True):
|
||||||
"""
|
"""
|
||||||
Internal API request helper.
|
Internal API request helper.
|
||||||
|
@ -1098,7 +1124,7 @@ class Mastodon:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = response_object.json(object_hook=self.__json_date_parse)
|
response = response_object.json(object_hook=self.__json_hooks)
|
||||||
except:
|
except:
|
||||||
raise MastodonAPIError(
|
raise MastodonAPIError(
|
||||||
"Could not parse response as JSON, response code was %s, "
|
"Could not parse response as JSON, response code was %s, "
|
||||||
|
|
Loading…
Referencia en una nova incidència