возвращать актуальные твиты в твипи? - PullRequest
13 голосов
/ 10 октября 2011

Я писал программу для твиттера, используя 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)

Ответы [ 5 ]

23 голосов
/ 10 октября 2011

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

Может показаться, что документации 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
3 голосов
/ 29 ноября 2011

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

for i in pub:
    print i.__getstate__()
1 голос
/ 03 ноября 2016

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

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

или если вы хотите твиты вообще использовать твиттер-поток 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, эта функция запускается каждый раз, когда твит твиты фильтруются по стоп-словам а это список твоих слов в твоих твитах

1 голос
/ 29 февраля 2016

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

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

tweets = api.home_timeline()
for tweet in tweets:
  print tweet.id, " : ", tweet.text
0 голосов
/ 17 января 2017

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

Например:

type(status)
# tweepy.models.Status

type(status._json)
# dict

status._json.keys()
# dict_keys(['favorite_count', 'contributors', 'id', 'user', ...])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...