Python3: feedparser unicode error

28 Jan 2015

Есть расширение universal feed parser и есть у него одна очень неприятная бага: если установлено расширение chardet, то парсинг лент в юникоде ломается.

$ ./rss.py                                                                                                                                                                     Traceback (most recent call last):  
File "./rss.py", line 11, in <module>  
feed = feedparser.parse(rss_response.text)  
File "/usr/lib/python3.3/site-packages/feedparser.py", line 3966, in parse  
data, result['encoding'], error = convert_to_utf8(http_headers, data)  
File "/usr/lib/python3.3/site-packages/feedparser.py", line 3768, in convert_to_utf8  
chardet_encoding = str(chardet.detect(data)['encoding'] or '', 'ascii', 'ignore')  
TypeError: decoding str is not supported

Неприятно. Можно удалить chardet, но тогда другие расширения, которые от него зависят будут удалены. В том числе и requests.

Значит надо чинить. Но поскольку баг пофикшен только в транке, а текущая стейбл 5.1.3, то надо обновляться из транка.

$ sudo python3-pip install git+https://code.google.com/p/feedparser/ --upgrade

Или накатить патч руками.

Теги: python

Категории: Разработка