python - Python twitter bot代码无效,redis-server端口

标签 python twitter redis python-twitter

使用我从this tutorial获得的代码,我试图从python创建twitter bot来转发任何带有特定关键字的tweets。它使用来自python twitter开发人员和redis的python-twitterapi包装器。我已经安装并获得了包装器和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'

This is a pastebin with my bot.我是一个十足的python新手,真的不知道如何解决这个问题。
从上面的Pastebin开始,我从第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

更新:新错误
按照用户bibhas的建议,在运行pip freeze并卸载路径中的额外twitter包装器之后,我从命令行运行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.),如上面的错误所示,我调查了this stackoverflow question希望得到一个潜在的答案,但是进入python控制台并运行
>>> import redis
>>> print redis.Redis("localhost")
<redis.client.Redis object at 0x10e5480d0>
>>> 

没有给我任何有用的东西,因为它说它是有联系的(我想!?!?!)所以我仍然不知道如何修复这个,使我的机器人工作。丙
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)

最佳答案

有一些不同的原因可能导致这个问题。
首先,在使用python redis库之前,需要安装并编译redis服务器。只要按照他们的网站指导,https://redis.io/download。在设置redis服务器之后,应该解决错误61。
如果在设置redis服务器后问题仍然存在,可以尝试以下步骤。
检查地址。(对于您的情况,使用端口6379的本地主机是可以的)
将redis.conf中的安全设置重写为protected-mode no

关于python - Python twitter bot代码无效,redis-server端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224929/

相关文章:

python - 根据键过滤Python中的字典列表

python - Pandas 数据框 : For loop that adds a fixed integer if the value exists in previous rows

php - Twitter API - 实时收听用户的推文

android - 我正在尝试使用 twitter4j jar 将状态更新到 twitter 但它不起作用

ruby-on-rails - 如何使用 Test::Unit 在全局 stub http 请求?

python - 使用 skimage 旋转图像而不裁剪它

python - 将字符串转换为 Excel 友好格式

javascript - 无法修改javascript回调中的值

java - 是否可以将 EVAL SHA 与 spring-data redis 一起使用?

redis - 如何查看我的 Redis 数据库 current_size?