client = tweepy.Client(
consumer_key=self.twitter_consumer_key,
consumer_secret=self.twitter_consumer_secret,
access_token=self.twitter_access_token,
access_token_secret=self.twitter_access_token_secret
)
# Create API v1.1 object for media upload
auth = tweepy.OAuth1UserHandler(
self.twitter_consumer_key,
self.twitter_consumer_secret,
self.twitter_access_token,
self.twitter_access_token_secret
)
api = tweepy.API(auth)
try:
# Simple media upload without chunked option
print("Attempting media upload...")
with open(image_path, 'rb') as image_file:
media = api.simple_upload(filename=image_path, file=image_file)
print(f"Media uploaded successfully. Media ID:{media.media_id}")`
Я использую клиентский объект версии 1 для загрузки мультимедиа и клиентский объект версии 2 для создания твита. Однако программа останавливается при загрузке мультимедиа со следующими двумя ошибками:
При первом запуске выдает ошибку 403 Forbidden.
При втором запуске запустив его, я получаю ошибку типа со строкой ошибки в качестве ожидаемого значения: строка 1, столбец 1 (символ 0). Я проверил объект ответа, но похоже, что он не возвращает ни одного объекта ответа. Я попробовал обе функции API: media_upload и simple_upload и получаю одну и ту же ошибку.
Вызов функции для medi_upload: media = api.media_upload( filename=image_path , chunked=True )
Вот конфигурации моего проекта приложения в моей учетной записи разработчика в Твиттере.
Разрешения приложения, тип app
Информация о приложении
Кто-нибудь знает, как это решить? Заранее спасибо!
Ожидаем успешной загрузки медиафайла. Пробовал разные медиафайлы, проверял, присутствует ли файл и правильно ли он открывается перед вызовом функции. Файл открывается и печатает размер файла (около 1–2 МБ) до вызова функции media_upload/simple_upload, но происходит сбой, когда API выполняет вызов загрузки мультимедиа. Пробовал понизить и обновить пакет tweepy до 4.14.0, 4.9.0 и 4.12.0. Я по-прежнему получаю одинаковые результаты во всех версиях пакета.
Изменить: добавление трассировки для обеих ошибок:
- 403 Запрещено:
File "/home/user/test.py", line 540, in
main()
File "/home/user/test.py", line 532, in main
publisher.post_to_twitter(temp_path, description)
File "/home/user/test.py", line 391, in post_to_twitter
media = self.twitter_v1.media_upload(image_path)
File "/home/user/.local/lib/python3.10/site-packages/tweepy/api.py", line 3566, in media_upload
return self.simple_upload(
File "/home/user/.local/lib/python3.10/site-packages/tweepy/api.py", line 46, in wrapper
return method(*args, **kwargs)
File "/home/user/.local/lib/python3.10/site-packages/tweepy/api.py", line 3610, in simple_upload
return self.request(
File "/home/user/.local/lib/python3.10/site-packages/tweepy/api.py", line 265, in request
raise Forbidden(resp)
tweepy.errors.Forbidden: 403 Forbidden
- JSONDecodeError:
File "/home/user/test.py", line 540, in
main()
File "/home/user/test.py", line 532, in main
publisher.post_to_twitter(temp_path, description)
File "/home/user/test.py", line 391, in post_to_twitter
media = self.twitter_v1.media_upload(image_path)
File "/home/user/.local/lib/python3.10/site-packages/tweepy/api.py", line 3566, in media_upload
return self.simple_upload(
File "/home/user/.local/lib/python3.10/site-packages/tweepy/api.py", line 46, in wrapper
return method(*args, **kwargs)
File "/home/user/.local/lib/python3.10/site-packages/tweepy/api.py", line 3610, in simple_upload
return self.request(
File "/home/user/.local/lib/python3.10/site-packages/tweepy/api.py", line 265, in request
raise Forbidden(resp)
File "/home/user/.local/lib/python3.10/site-packages/tweepy/errors.py", line 54, in __init__
response_json = response.json()
File "/home/user/.local/lib/python3.10/site-packages/requests/models.py", line 974, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/local/lib/python3.10/site-packages/simplejson/__init__.py", line 525, in loads
return _default_decoder.decode(s)
File "/usr/local/lib/python3.10/site-packages/simplejson/decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "/usr/local/lib/python3.10/site-packages/simplejson/decoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Подробнее здесь: https://stackoverflow.com/questions/793 ... son-errors