我正在开发一个使用python-twitter
发布更新信息的家庭自动化项目。当我尝试发布一个没有链接的短于140的字符串时,我最终得到TwitterError: Text must be less than or equal to 140 characters.
这是一些描述问题的shell输出:
>>> import twitter
>>> api = twitter.Api(
... consumer_key=os.environ['TW_API_KEY'],
... consumer_secret=os.environ['TW_API_SECRET'],
... access_token_key=os.environ['TW_ACCESS_KEY'],
... access_token_secret=os.environ['TW_ACCESS_SECRET']
... )
>>> m = 'The house is now inside the comfort range. Conditions: 28.4 C (83.1 F) at 50.0% humidity. It feels like 84 F.'
>>> len(m)
109
>>> api.PostUpdate(m)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/pi/.virtualenvs/site/local/lib/python2.7/site-packages/twitter/api.py", line 952, in PostUpdate
raise TwitterError("Text must be less than or equal to 140 characters.")
TwitterError: Text must be less than or equal to 140 characters.
我尝试使用api.PostUpdate(u'{0}'.format(m))
将字符串转换为unicode,但不出所料也没有任何帮助。
我假设发生的事情是python-twitter
将十进制数字解释为链接,从而减少了我剩下要使用的字符数量,但我不知道api知道这是真的还是不
鉴于我不打算在这些推文中包含链接,有没有办法强制python-twitter
忽略小数而不实际删除它们?我宁愿不满足于那种解决方法,因为我有点像能够以十进制表示法报告。我也不愿意和tweepy
一起去,但我想如果我需要,我会吞下那颗药丸。
更新:我找到了一种方法,可以使用PostUpdate()
中的verify_status_length=False
标记来关闭api的长度检查,这样我就可以发送上面的字符串{{ 1}}没有错误。它感觉不是那么优雅,但我会坚持使用它,直到找到更好的解决方案。