2016-04-19 8 views
3

ich diesen Code verwende:Wie MEDIA_URL von Tweets zu erhalten, die 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']) 

Ich versuche, den Zugang der MEDIA_URL unter ‚Foto‘ in meinem Wörterbuch. Aber ich bekomme den folgenden Fehler: 'dict' Objekt hat kein Attribut 'media'. Ich würde mich freuen, die JSON-Navigation zu unterstützen.

Vielen Dank im Voraus!

+0

Haben Sie, was alle dir (Status) Angebote zu sehen versucht? Ich kann den Fehler nicht reproduzieren, da Sie nicht minimale und vollständige Schritte zur Reproduktion gegeben haben, aber nachdem ich twitter api verwendet habe, denke ich, dass json in so etwas wie status._json verfügbar ist? – MohitC

+0

@MohitC Ich habe meinen ganzen Code hinzugefügt. – MarcCharbo

Antwort

4

sollten Sie versuchen, zwei Dinge:

  • hinzufügen Einheiten auf Ihre Anfrage

>

tweepy.Cursor(api.search, q="#hashtag", count=5, include_entities=True) 
  • Überprüfen Sie, ob Medien nicht nul ist:

>

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

Hope this helfen

+0

Danke für das oben genannte. Nur um zu klären, können wir Tweepy.Cursor verwenden, wenn Stream-Klasse (also beim Streaming)? Ich habe deinen ersten Punkt zu meinem Code hinzugefügt. Siehe bearbeiteten Code in meiner ursprünglichen Frage – MarcCharbo

+0

Ich bin mir nicht sicher, aber ich denke schon, da Cursor nur die Paginierung der Ergebnisse behandelt – Falkwn