Как получить media_url из твитов с помощью Tweepy API

Я использую этот код:

import tweepy from tweepy.api import API import urllib import os i = 1 consumer_key="xx" consumer_secret="xx" access_token="xx" access_token_secret="xx" auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.secure = True auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) class MyStreamListener(tweepy.StreamListener): def __init__(self, api=None): self.api = api or API() self.n = 0 self.m = 10 def on_status(self, status): if 'media' in status.entities: for image in status.entities['media']: global i #picName = status.user.screen_name picName = "pic%s.jpg" % i i += 1 link = image['media_url'] filename = os.path.join("C:/Users/Charbo/Documents/Python/",picName) urllib.urlretrieve(link,filename) #use to test print(status.user.screen_name) else: print("no media_url") self.n = self.n+1 if self.n < self.m: return True else: print ('tweets = '+str(self.n)) return False def on_error(self, status): print (status) myStreamListener = MyStreamListener() myStream = tweepy.Stream(auth, MyStreamListener(),timeout=30) myStream.filter(track=['#feelthebern']) 

Я пытаюсь получить 9X_twitter доступ к media_url под словом "фотография" в 9X_twitter моем словаре. Но я получаю следующую ошибку: объект 9X_twitter dict не имеет атрибута media. Буду признателен 9X_pythonista за помощь в навигации по JSON.

Заранее спасибо!

9
0
2
Общее количество ответов: 2

Ответ #1

Ответ на вопрос: Как получить media_url из твитов с помощью Tweepy API

Вам следует попробовать две вещи:

  • Добавьте объекты в свой запрос

>

tweepy.Cursor(api.search, q="#hashtag", count=5, include_entities=True) 
  • Убедитесь, что media не является нулевым:

>

if 'media' in tweet.entities: for image in tweet.entities['media']: (do smthing with image['media_url']) 

Надеюсь, это 9X_python-interpreter поможет

10
0

Ответ #2

Ответ на вопрос: Как получить media_url из твитов с помощью Tweepy API

Этот ответ может быть немного запоздалым, но 9X_pythonista я уверен, что когда-нибудь другие люди сочтут 9X_python-shell его полезным. На самом деле я не хотел ретвитить 9X_python-shell твит с видео. Итак, я создал эту функцию 9X_twitter-api .... и она отлично работает.

def on_status(self, status): #Ignores the tweet so long as I am the Author, or it's a reply to a tweet if status.in_reply_to_status_id is not None or \ status.user.id == self.me.id: return #I only retweet tweets that I haven't yet retweeted. I also don't want to retweet any tweets that are quotes. if not status.retweeted and not status.is_quote_status: #Checking whether the tweet has no "media" in it. if 'media' not in status.entities: try: print(status.text) status.retweet() time.sleep(40) #Sleep for 40 seconds to avoid limits except Exception as e: print("Error on_data %s" % str(e)) print("Error from retweeting") #If tweet has media, I only retweet a tweet with a photo elif 'media' in status.entities: media_details = status.entities['media'] media_details_kind = media_details[0] #print(vide['type']) if media_details_kind['type'] == 'photo': try: print("It is a photo") status.retweet() time.sleep(40) except Exception as e: print("Error on_data %s" % str(e)) print("Error from retweeting") else: #Anything else is a video or GIF. I do nothing. print("Sorry, this might be a video. Cound't retweet because it is neither a photo nor a text") print(status.text) 

3
0