]> jfr.im git - z_archive/twitter.git/blobdiff - twitter/api.py
add doc to send tweets with images in README + consolidate api.py/README
[z_archive/twitter.git] / twitter / api.py
index c4187997554d60413da1ca3374bbaa54b100de64..bed62754eaed01a0b670965dbde6db378e5a5ed0 100644 (file)
@@ -1,3 +1,6 @@
+# encoding: utf-8
+from __future__ import unicode_literals
+
 try:
     import urllib.request as urllib_request
     import urllib.error as urllib_error
@@ -202,6 +205,13 @@ class TwitterCall(object):
         for arg in ['media[]', 'banner', 'image']:
             if arg in kwargs:
                 media = kwargs.pop(arg)
+                # Check if argument tells whether img is already base64 encoded
+                b64_convert = True
+                if "_base64" in kwargs:
+                    b64_convert = not kwargs.pop("_base64")
+                if b64_convert:
+                    import base64
+                    media = base64.b64encode(media)
                 mediafield = arg
                 break
 
@@ -226,6 +236,7 @@ class TwitterCall(object):
             bod.append('--' + BOUNDARY)
             bod.append(
                 'Content-Disposition: form-data; name="%s"' % mediafield)
+            bod.append('Content-Transfer-Encoding: base64')
             bod.append('')
             bod.append(media)
             for k, v in kwargs.items():
@@ -319,6 +330,21 @@ class Twitter(TwitterCall):
             screen_name=','.join(A_LIST_OF_100_SCREEN_NAMES), \
             _timeout=1)
 
+        # Overriding Method: GET/POST
+        # you should not need to use this method as this library properly
+        # detects whether GET or POST should be used, Nevertheless
+        # to force a particular method, use `_method`
+        t.statuses.oembed(_id=1234567890, _method='GET')
+
+        # Send a tweet with an image included (or set your banner or logo similarily)
+        # By just reading your image from the web or a file in a string:
+        with open("example.png", "rb") as imagefile:
+            params = {"media[]": imagefile.read(), "status": "PTT"}
+        t.statuses.update_with_media(**params)
+        # Or by sending a base64 encoded image:
+        params = {"media[]": base64_image, "status": "PTT", "_base64": True}
+        t.statuses.update_with_media(**params)
+
 
 
     Searching Twitter::