2012-11-01 54 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

感謝您的建議,我只是將「#」更改爲「>」。 –