Вопрос или проблема
Я получаю ошибку при попытке твитнуть видео с помощью tweepy. Я использую бесплатную версию с всеми разрешениями. Мой код был:
# Аутентификация V1 Twitter API
auth = tweepy.OAuthHandler(api_key, api_key_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True)
# Аутентификация V2 Twitter API
client = tweepy.Client(
bearer_token,
api_key,
api_key_secret,
access_token,
access_token_secret,
wait_on_rate_limit=True,
)
# Загрузка изображения в Twitter. Замените 'filename' на имя вашего изображения.
media_id = api.chunked_upload(filename="Pledge.mp4",
media_category="tweet_video").media_id_string
print(media_id)
# Текст для твита
text = "Привет, Twitter!"
# Отправка твита с текстом и media ID
client.create_tweet(text=text, media_ids=[media_id])
print("Твит отправлен!")
Я видел, что это сработало для изображений, но при запуске для .mp4 я получил:
1843760094611189760
Traceback (последний вызов последний):
File “C:\Users\pablo\Desktop\ai-agents\projects\final_try\twitterbot_karaoke_deploying\aaa\e.py”, line 84, in
client.create_tweet(text=text, media_ids=[media_id])
File “C:\Users\pablo\anaconda3\Lib\site-packages\tweepy\client.py”, line 835, in create_tweet
return self._make_request(
^^^^^^^^^^^^^^^^^^^
File “C:\Users\pablo\anaconda3\Lib\site-packages\tweepy\client.py”, line 129, in _make_request
response = self.request(method, route, params=request_params,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\pablo\anaconda3\Lib\site-packages\tweepy\client.py”, line 96, in request
raise BadRequest(response)
tweepy.errors.BadRequest: 400 Bad Request
Ваши media ID недействительны.
Похоже, что он получил media_id, но возникла ошибка в последней строке
Ответ или решение
Для того чтобы отправить видео или аудио в Twitter с использованием библиотеки Tweepy в Python, необходимо учитывать несколько нюансов, особенно связанных с корректной загрузкой медиафайлов и их последующим использованием в твитах. В вашем коде есть несколько возможных причин возникновения ошибки BadRequest: 400 Bad Request
, и я помогу вам исправить это.
Вот правильный способ загрузки и твита видео с использованием Tweepy:
-
Убедитесь, что файл видео имеет правильный формат: Twitter поддерживает форматы MP4 (H.264/AAC) и MOV. Убедитесь, что ваше видео соответствует этим требованиям.
-
Используйте
chunked_upload
для загрузки видео: Для загрузки видеофайлов используйте методchunked_upload
, как вы уже сделали. Однако необходимо удостовериться, чтоmedia_category
установлен наtweet_video
. -
Используйте метод API для отправки твита: Вы должны использовать метод
api.update_status
для отправки твита с указаниемmedia_ids
, возвращаемого из метода загрузки.
Вот переписанный рабочий пример кода:
import tweepy
# V1 Twitter API Authentication
auth = tweepy.OAuthHandler(api_key, api_key_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True)
# Загрузка видео
media = api.chunked_upload(filename="Pledge.mp4", media_category="tweet_video")
media_id = media.media_id_string
print(f"Media ID: {media_id}")
# Текст для твита
text = "Hello Twitter!"
# Отправка твита с видео
try:
api.update_status(status=text, media_ids=[media_id])
print("Твит успешно отправлен!")
except tweepy.TweepError as e:
print(f"Ошибка при отправке твита: {e}")
Блиц-подсказки:
- Проверьте ваши ключи доступа: Убедитесь, что у вашего приложения есть разрешения на загрузку медиафайлов.
- Форматирование: Убедитесь, что файл
Pledge.mp4
находится в той же директории, откуда вы запускаете скрипт. - Ошибка при твите: Если ошибка продолжает возникать, проверьте, не существует ли каких-либо ограничений со стороны Twitter или другой проблемы с подключением.
Если эти шаги не помогают, пожалуйста, дайте больше информации о своей среде исполнения или любых других сообщениях об ошибках.