bear / python-twitter

A Python wrapper around the Twitter API.
Apache License 2.0
3.41k stars 955 forks source link

problem posting image > ~1Mb using postupdate #688

Open tilnow opened 3 years ago

tilnow commented 3 years ago

i think this is related to issue #433 i am using PostUpdate to post (great library by the way) and when I posted an image smaller than 1MB (actually ~690Kb) it worked fine. the media is provided as a file with no extension

image0_smaller

when I post an image ~2MB image0 i get:


  File "/home/yak/.local/lib/python3.6/site-packages/discord/client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "csvofyaks.py", line 315, in on_message
    status = twitterapi2.PostUpdate(txt,media=n)
  File "/home/yak/.local/lib/python3.6/site-packages/twitter/api.py", line 1164, in PostUpdate
    media, media_additional_owners, media_category=media_category
  File "/home/yak/.local/lib/python3.6/site-packages/twitter/api.py", line 1422, in UploadMediaChunked
    media_category=media_category)
  File "/home/yak/.local/lib/python3.6/site-packages/twitter/api.py", line 1274, in _UploadMediaChunkedInit
    raise TwitterError({'message': 'Could not process media file'})
twitter.error.TwitterError: {'message': 'Could not process media file'}```
woodruffw commented 2 years ago

Seconding this issue: I regularly get the same error when trying to upload images directly through PostUpdate. Uploading the exact same image directly via Twitter's website works, so I think it's probably something about the chunked endpoint/perhaps overly conservative chunking.

My workaround for the time being is to use UploadMediaSimple, which appears to work for my medium-to-large-ish JPEGs (no more than 4MB):

media_id = api.UploadMediaSimple(some_fd)
api.PostUpdate("some tweet", media=media_id)

(As a bonus, doing it in two steps like this gives me the ability to add alt text.)