2012-11-01 124 views
0

我有一个使用Tweepy,一个用于Twitter的python包装器。我正在用Python编写一个小的GUI应用程序,它更新了我的Twitter帐户。在代理后面使用Tweepy API

目前,我只是测试如果我可以连接到Twitter,因此使用test()调用。我支持Squid代理服务器。我应该做些什么修改,以便我的工作能够完成。

设置http_proxy在bash shell中没有帮助我。

def printTweet(self): 
    #extract tweet string 
    tweet_str = str(self.ui.tweet_txt.toPlainText()) ; 
    #tweet string extracted. 
    self.ui.tweet_txt.clear() ; 

    self.tweet_on_twitter(str); 

def tweet_on_twitter(self,my_tweet) : 
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET); 
    auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) ; 
    api = tweepy.API(auth) ; 

    if api.test() : 
     print 'Test successful' ; 
    else : 
     print 'Test unsuccessful'; 
+3

在python中不需要分号*,可以将它们全部删除。 –

+0

是的,先生,但我喜欢用分号。帮助需要的主题:) –

+6

你会很孤单.. –

回答

0

编辑:原来,这不是一个可行的解决办法,但我离开这里以供参考


由于代码的快速浏览显示tweepy使用的urllib2 .urlopen & CO。,最简单的就是可能只覆盖默认的揭幕战...

# 'x.x.x.x' = IP of squid server 
your_squid_server = urllib2.ProxyHandler({'http': 'x.x.x.x', 'https': 'x.x.x.x'}) 
new_opener = urllib2.build_opener(your_squid_server) 
urllib2.install_opener(new_opener) 

还没有得到一个环境检查一个t时的那一刻,虽然...

进口tweepy,以确保新的首战生效之前执行上述

+0

tweepy实际上是直接使用httplib。 –

+0

@Martijn哦哇 - 好吧,没有注意到,但现在我看起来更多 - 是的 - 实际上它同时使用... –

0

在tweepy代理支持是严重缺乏;有一个旨在解决该问题的patch available

修补程序将Tweepy从使用httplib直接转换为使用urllib2代替,这意味着它会兑现http_proxy环境变量。

0

这是一个老问题,但希望这有助于。

https://bitbucket.org/sakito/tweepy提供tweepy与合并到它的urllib;代理设置运行良好。这个流有一个小问题(至少在我的情况下),但它可以稍微调整一下。

1

我想你应该设置'https_proxy'。运行我Tweepy脚本之前

> export HTTPS_PROXY="http://xxxx:8888" 

在我的Linux,我用这个。

Tweep使用'requests'包​​发送请求,请阅读http://docs.python-requests.org/en/master/user/advanced/#proxies了解更多信息。

+1

为什么你的'export'行被注释掉了?这实际上表明你*不*使用它。 – Julian

+0

感谢您的建议,我只是将“#”更改为“>”。 –