使用Tweepy以英语以外的其他语言更新Twitter时出错



我在使用字符不同于ASCII的Tweepy时遇到问题。我尝试了许多不同的方法,但每种方法在终端中都有不同的错误。

所以,首先我做了推特要求的所有舞蹈,并导入了我需要的东西:

from lxml import html
import requests
from random import randint
import tweepy, sys, time
import requests
import unicodedata
consumer_key="x"
consumer_secret="y"
access_token="z"
access_token_secret="w"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

然后,我去一个网站上找句子发推特。

page = requests.get("www.webpage.com")
poemT = html.fromstring(page.text) 
phrases = poemT.xpath('//div[@class="mainData"]/text()') 

在尝试转换句子时,我找不到适合函数api.update_satus()的格式,每次尝试都会收到以下错误消息。

尝试1:

tuite = phrases.pop(0)
api.update_status(tuite)

错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'xe9' in position 0: ordinal not in range(128)

有了这个错误,我发现了这个,这个,这个和其他一些建议解决方案如下。然而,我在尝试打印句子时没有问题。我想这就是为什么它没有解决我的问题。

尝试2

tuite = phrases.pop(0).encode('utf-8')
api.update_status(tuite)

错误:

tweepy.error.TweepError: Failed to send request: Headers indicate a formencoded body but body was not decodable.

由于这个错误,我找不到任何相关的东西。但正如这个问题所说,我只是试图用ASCII转换这个句子。但我还是犯了一个错误。

尝试3

title = phrases.pop(0)
tuite = unicodedata.normalize('NFKD', title).encode('ascii','ignore')
api.update_status(tuite)

错误:

tweepy.error.TweepError: [{u'message': u'media_ids parameter is invalid.', u'code': 44}]

我也发现了这个问题,但它与媒体更新有关。

最后

我在git上发现了这个讨论,这表明我的问题是一个需要在Tweepy中修复的bug。

有什么想法吗?如果我能将文本转换为api.update_status()接受的格式,我会很高兴。

我刚刚在这个链接中找到了答案:

通过Tweepy 在推特上更新状态时的追溯

原来我应该调用更新函数如下:

 api.update_status(status=tuite)

最新更新