aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.rst2
-rw-r--r--docs/index.rst2
-rw-r--r--mastodon/Mastodon.py32
3 files changed, 31 insertions, 5 deletions
diff --git a/README.rst b/README.rst
index 874bb80..d13f90a 100644
--- a/README.rst
+++ b/README.rst
@@ -35,7 +35,7 @@ Mastodon.py
35 mastodon.toot('Tooting from python using #mastodonpy !') 35 mastodon.toot('Tooting from python using #mastodonpy !')
36 36
37Python wrapper for the Mastodon ( https://github.com/tootsuite/mastodon/ ) API. 37Python wrapper for the Mastodon ( https://github.com/tootsuite/mastodon/ ) API.
38Feature complete for public API as of version v1.6 and easy to get started with. 38Feature complete for public API as of version v2.0 and easy to get started with.
39 39
40You can install Mastodon.py via pypi: 40You can install Mastodon.py via pypi:
41 41
diff --git a/docs/index.rst b/docs/index.rst
index fae8b2d..34b7b38 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -46,7 +46,7 @@ node running Mastodon by setting api_base_url when creating the
46api object (or creating an app). 46api object (or creating an app).
47 47
48Mastodon.py aims to implement the complete public Mastodon API. As 48Mastodon.py aims to implement the complete public Mastodon API. As
49of this time, it is feature complete for Mastodon version 1.6. 49of this time, it is feature complete for Mastodon version 2.0.
50 50
51A note about rate limits 51A note about rate limits
52------------------------ 52------------------------
diff --git a/mastodon/Mastodon.py b/mastodon/Mastodon.py
index da600cd..4ffdde1 100644
--- a/mastodon/Mastodon.py
+++ b/mastodon/Mastodon.py
@@ -16,6 +16,7 @@ import dateutil.parser
16import re 16import re
17import copy 17import copy
18import threading 18import threading
19import sys
19try: 20try:
20 from urllib.parse import urlparse 21 from urllib.parse import urlparse
21except ImportError: 22except ImportError:
@@ -776,7 +777,7 @@ class Mastodon:
776 ### 777 ###
777 # Writing data: Media 778 # Writing data: Media
778 ### 779 ###
779 def media_post(self, media_file, mime_type=None): 780 def media_post(self, media_file, mime_type=None, description=None):
780 """ 781 """
781 Post an image. media_file can either be image data or 782 Post an image. media_file can either be image data or
782 a file name. If image data is passed directly, the mime 783 a file name. If image data is passed directly, the mime
@@ -804,7 +805,8 @@ class Mastodon:
804 805
805 media_file_description = (file_name, media_file, mime_type) 806 media_file_description = (file_name, media_file, mime_type)
806 return self.__api_request('POST', '/api/v1/media', 807 return self.__api_request('POST', '/api/v1/media',
807 files={'file': media_file_description}) 808 files={'file': media_file_description},
809 params={'description': description})
808 810
809 ### 811 ###
810 # Writing data: Domain blocks 812 # Writing data: Domain blocks
@@ -970,6 +972,7 @@ class Mastodon:
970 972
971 return (date_time_utc - epoch_utc).total_seconds() 973 return (date_time_utc - epoch_utc).total_seconds()
972 974
975
973 def __json_date_parse(self, json_object): 976 def __json_date_parse(self, json_object):
974 """ 977 """
975 Parse dates in certain known json fields, if possible. 978 Parse dates in certain known json fields, if possible.
@@ -986,6 +989,29 @@ class Mastodon:
986 raise MastodonAPIError('Encountered invalid date.') 989 raise MastodonAPIError('Encountered invalid date.')
987 return json_object 990 return json_object
988 991
992 def __json_id_to_bignum(self, json_object):
993 """
994 Converts json string IDs to native python bignums.
995 """
996 if sys.version_info.major >= 3:
997 str_type = str
998 else:
999 str_type = unicode
1000
1001 if ('id' in json_object and
1002 isinstance(json_object['id'], str_type)):
1003 try:
1004 json_object['id'] = int(json_object['id'])
1005 except ValueError:
1006 pass
1007
1008 return json_object
1009
1010 def __json_hooks(self, json_object):
1011 json_object = self.__json_date_parse(json_object)
1012 json_object = self.__json_id_to_bignum(json_object)
1013 return json_object
1014
989 def __api_request(self, method, endpoint, params={}, files={}, do_ratelimiting=True): 1015 def __api_request(self, method, endpoint, params={}, files={}, do_ratelimiting=True):
990 """ 1016 """
991 Internal API request helper. 1017 Internal API request helper.
@@ -1098,7 +1124,7 @@ class Mastodon:
1098 continue 1124 continue
1099 1125
1100 try: 1126 try:
1101 response = response_object.json(object_hook=self.__json_date_parse) 1127 response = response_object.json(object_hook=self.__json_hooks)
1102 except: 1128 except:
1103 raise MastodonAPIError( 1129 raise MastodonAPIError(
1104 "Could not parse response as JSON, response code was %s, " 1130 "Could not parse response as JSON, response code was %s, "
Powered by cgit v1.2.3 (git 2.41.0)