Есть ли способ твитить видео/аудио в tweepy? (python)

Вопрос или проблема

Я получаю ошибку при попытке твитнуть видео с помощью 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:

  1. Убедитесь, что файл видео имеет правильный формат: Twitter поддерживает форматы MP4 (H.264/AAC) и MOV. Убедитесь, что ваше видео соответствует этим требованиям.

  2. Используйте chunked_upload для загрузки видео: Для загрузки видеофайлов используйте метод chunked_upload, как вы уже сделали. Однако необходимо удостовериться, что media_category установлен на tweet_video.

  3. Используйте метод 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 или другой проблемы с подключением.

Если эти шаги не помогают, пожалуйста, дайте больше информации о своей среде исполнения или любых других сообщениях об ошибках.

Оцените материал
Добавить комментарий

Капча загружается...