Подтвердить что ты не робот

Вернуть текущие твиты в tweepy?

Я пишу программу twitter, используя tweepy. Когда я запускаю этот код, он печатает значения Python... для них, например

<tweepy.models.Status object at 0x95ff8cc>

Что плохого. Как получить реальный твит?

import tweepy, tweepy.api
key = XXXXX
sec = XXXXX

tok  = XXXXX
tsec = XXXXX

auth = tweepy.OAuthHandler(key, sec)
auth.set_access_token(tok, tsec)
api = tweepy.API(auth)

pub = api.home_timeline()
for i in pub:
        print str(i)
4b9b3361

Ответ 1

В общем, вы можете использовать встроенный dir() встроенный Python для проверки объекта.

Казалось бы, документация Tweepy здесь очень не хватает, но я бы предположил, что объекты Status отражают структуру формата статуса REST в Twitter, см. (например) https://dev.twitter.com/docs/api/1/get/statuses/home_timeline

Итак - попробуйте

print dir(status)

чтобы узнать, что живет в объекте статуса

или просто, скажем,

print status.text
print status.user.screen_name

Ответ 2

Посмотрите на метод getstate() get, который можно использовать для проверки возвращаемого объекта

for i in pub:
    print i.__getstate__()

Ответ 3

Метод api.home_timeline() возвращает список из 20 объектов tweepy.models.Status, которые соответствуют 20 верхним твитам. То есть каждый твит считается объектом класса Status. Каждый объект состояния имеет несколько атрибутов, таких как id, text, user, place, created_at и т.д.

Следующий код напечатает идентификатор твита и текст:

tweets = api.home_timeline()
for tweet in tweets:
  print tweet.id, " : ", tweet.text

Ответ 4

от фактических твитов, если у вас требуется конкретный твит, у вас должен быть идентификатор твита, и используйте

tweets = self.api.statuses_lookup(tweetIDs)
for tweet in tweets:
  #tweet obtained
  print(str(tweet['id'])+str(tweet['text']))

или если вам нужны твиты вообще использовать поток twitter api

class StdOutListener(StreamListener):
def __init__(self, outputDatabaseName, collectionName):
    try:
        print("Connecting to database")
        conn=pymongo.MongoClient()
        outputDB = conn[outputDatabaseName]
        self.collection = outputDB[collectionName]
        self.counter = 0
    except pymongo.errors.ConnectionFailure as e:
        print ("Could not connect to MongoDB:")
def on_data(self,data): 
    datajson=json.loads(data)
    if "lang" in datajson and datajson["lang"] == "en" and "text" in datajson:
        self.collection.insert(datajson)

        text=datajson["text"].encode("utf-8") #The text of the tweet
        self.counter += 1
        print(str(self.counter) + " " +str(text))

def on_error(self, status):
    print("ERROR")
    print(status)
def on_connect(self):
    print("You're connected to the streaming server.
l=StdOutListener(dbname,cname)
    auth=OAuthHandler(Auth.consumer_key,Auth.consumer_secret)
    auth.set_access_token(Auth.access_token,Auth.access_token_secret)
    stream=Stream(auth,l)


    stream.filter(track=stopWords)

создать класс Stdoutlistener, который унаследован от StreamListener переопределить функцию on_data, а твит возвращается в json формате, эта функция запускается каждый раз, когда получается твит твиты отфильтровываются по стоп-словам который является списком u слов u хочет в ур твиты

Ответ 5

В экземпляре состояния Tweepy вы можете получить доступ к атрибуту _json, который возвращает dict, представляющий исходный содержимое Tweet.

Например:

type(status)
# tweepy.models.Status

type(status._json)
# dict

status._json.keys()
# dict_keys(['favorite_count', 'contributors', 'id', 'user', ...])