Python-код бота в твиттере не работает, порт редис-сервера

Используя код, который я получил из этого урока, я пытаюсь создать Twitter-бота из Python для ретвита любых твитов, найденных с определенными ключевыми словами. Он использует API-оболочку Python-Twitter от разработчиков Python-Twitter и Redis. Я установил и получил и обертку, и Redis, и они работают без проблем, но когда я запускаю twit_bot.py из командной строки, я получаю следующую ошибку:

Traceback (most recent call last):
  File "twit_bot.py", line 116, in <module>
    twitter_session = auth_to_twitter(API_CREDENTIALS)
  File "twit_bot.py", line 27, in auth_to_twitter
    api = twitter.Api(consumer_key=api_credentials['consumer_key'],
AttributeError: 'module' object has no attribute 'Api'

Это пастбина с моим ботом. Я абсолютный новичок в Python и действительно не знаю, как это исправить.

Из вышеупомянутого пастбина, который я скопировал, начиная со строки 27 до строки 36:

def auth_to_twitter(api_credentials):
    """Returns an authenticated twitter session object"""
    api = twitter.Api(consumer_key=api_credentials['consumer_key'],
                      consumer_secret=api_credentials['consumer_secret'],
                      access_token_key=api_credentials['access_token_key'],
                      access_token_secret=api_credentials['access_token_secret'])

    if (api.VerifyCredentials() is not None):
        return api

    return False

ОБНОВЛЕНИЕ: НОВАЯ ОШИБКА После запуска pip freeze и удалив лишнюю обертку Twitter, которая была у меня в пути, как рекомендовал пользователь Bibhas, я запускаю twit_bot.py из командной строки и все еще получаю сообщение об ошибке, на этот раз это выглядит следующим образом:

Traceback (most recent call last):
  File "twit_bot.py", line 118, in <module>
    run_bot(twitter_session, redis, TWITTERBOT_KEYWORDS)
  File "twit_bot.py", line 108, in run_bot
    update_search_stack(api_session, redis, key)
  File "twit_bot.py", line 65, in update_search_stack
    since_id = get_since_id(redis, "%s:%s" % (TWITTERBOT_LIST, keyword))
  File "twit_bot.py", line 41, in get_since_id
    since_id = redis.get(key + ":last_since_id")
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/redis/client.py", line 585, in get
    return self.execute_command('GET', name)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/redis/client.py", line 381, in execute_command
    connection.send_command(*args)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/redis/connection.py", line 304, in send_command
    self.send_packed_command(self.pack_command(*args))
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/redis/connection.py", line 286, in send_packed_command
    self.connect()
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/redis/connection.py", line 234, in connect
    raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 61 connecting localhost:6379. Connection refused.

Обновите снова!

Так как похоже, что сервер Redis - это тот, который доставляет мне проблемы ( redis.exceptions.ConnectionError: Error 61 connecting localhost:6379. Connection refused.), как показано в приведенных выше ошибках, я изучил этот вопрос о стекопереработке в надежде на потенциальный ответ, но зашел в консоль python и запустил

>>> import redis
>>> print redis.Redis("localhost")
<redis.client.Redis object at 0x10e5480d0>
>>> 

не дает мне ничего полезного, так как он говорит, что это связано (я думаю!?!?!) Так что я все еще не уверен, как это исправить, чтобы мой бот работал.:C

def run_bot(api_session, redis, keywords):
    """"""
    while 42:
        for key in keywords:
            update_search_stack(api_session, redis, key)
            update_since_id(redis, "%s:%s" % (TWITTERBOT_LIST, key))
            tweet_and_shout(api_session, redis, key, timeout=1)
        print "Waiting for one minute\n\n\n"
        sleep(60)


if __name__ == "__main__":
    twitter_session = auth_to_twitter(API_CREDENTIALS)
    redis = redis.Redis("localhost")
    run_bot(twitter_session, redis, TWITTERBOT_KEYWORDS)

0 ответов

Другие вопросы по тегам