Ошибка атрибута Tweepy Streaming - PullRequest
0 голосов
/ 04 июня 2018

Я создаю программу для поиска текста, чтобы начать работу с tweepy.Я столкнулся с ошибкой, которую не могу исправить.Полное сообщение об ошибке приведено ниже.

Traceback (most recent call last):
  File "/Users/nattaylor/Documents/Programming/Python/twitterapi.py", line 53, in <module>
    myStream.filter(track=['Warriors'])
  File "/anaconda3/lib/python3.6/site-packages/tweepy/streaming.py", line 450, in filter
    self._start(async)
  File "/anaconda3/lib/python3.6/site-packages/tweepy/streaming.py", line 364, in _start
    self._run()
  File "/anaconda3/lib/python3.6/site-packages/tweepy/streaming.py", line 297, in _run
    six.reraise(*exc_info)
  File "/anaconda3/lib/python3.6/site-packages/six.py", line 693, in reraise
    raise value
  File "/anaconda3/lib/python3.6/site-packages/tweepy/streaming.py", line 266, in _run
    self._read_loop(resp)
  File "/anaconda3/lib/python3.6/site-packages/tweepy/streaming.py", line 327, in _read_loop
    self._data(next_status_obj)
  File "/anaconda3/lib/python3.6/site-packages/tweepy/streaming.py", line 300, in _data
    if self.listener.on_data(data) is False:
  File "/anaconda3/lib/python3.6/site-packages/tweepy/streaming.py", line 54, in on_data
    status = Status.parse(self.api, data)
AttributeError: 'MyStreamListener' object has no attribute 'api'

Мой код здесь:

from tweepy import OAuthHandler

import tweepy
from tweepy import StreamListener
from tweepy import Stream


import time



consumer_key = 'cant show you these'
consumer_secret = 'Im so desperate ive been working on this for so long'
access_token = 'its not even very hard'
access_secret = 'I just suck'

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)
print('')


class MyStreamListener(tweepy.StreamListener):



    def __init__(self):
        #initializes the counter
        self.counter = 0    



    def on_status(self, status):
        #prints status text. Also counts the mentions. 
        self.counter = self.counter + 1
        print(status.text)


    def on_error(self, status_code):
        if status_code == 420:
            print('420 error')
            #Ends stream in case of rate limiting
            return False


myStreamListener = MyStreamListener()

myStream = tweepy.Stream(auth = api.auth, listener = myStreamListener)

#Word
myStream.filter(track=['Warriors'])

Я думаю, что где-то проблема с моим синтаксисом tweepy.Любой вклад с благодарностью.(Я так растерян, растерян и напуган, пожалуйста, что вы все знаете намного больше меня, я нуждаюсь в вас)

1 Ответ

0 голосов
/ 05 июня 2018

При импорте следующим образом

import tweepy
from tweepy import StreamListener
from tweepy import Stream

Попробуйте наследовать от StreamListener вместо tweepy.StreamListener

Заменить

class MyStreamListener(tweepy.StreamListener):

на

class MyStreamListener(StreamListener):

Для правильной меры измените ваш метод инициализации с

def __init__(self):
    #initializes the counter
    self.counter = 0  

на

def __init__(self):
    super().__init__()
    #initializes the counter
    self.counter = 0  

Из источников Твипи

https://github.com/tweepy/tweepy/blob/master/tweepy/streaming.py

...
from tweepy.api import API
...
class StreamListener(object):

    def __init__(self, api=None):
        self.api = api or API()
...

Вы, вероятно, "обходитесь" только обновлением метода init для инициализации родительского объекта, но было бы лучше выбрать один импорт, если вы явно импортируете StreamListener, вы можете также использовать его вместополный твипный импорт.

...