[generic] Fix on python 2.6

`ParseError` is not available, it raises `xml.parsers.expat.ExpatError`.
The webpage needs to be encoded.
This commit is contained in:
Jaime Marquínez Ferrándiz 2014-02-21 16:59:10 +01:00
parent 3489b7d26c
commit f7300c5c90
2 changed files with 8 additions and 2 deletions

View file

@ -13,6 +13,7 @@ from ..utils import (
compat_urllib_parse, compat_urllib_parse,
compat_urllib_request, compat_urllib_request,
compat_urlparse, compat_urlparse,
compat_xml_parse_error,
ExtractorError, ExtractorError,
HEADRequest, HEADRequest,
@ -241,10 +242,10 @@ class GenericIE(InfoExtractor):
# Is it an RSS feed? # Is it an RSS feed?
try: try:
doc = xml.etree.ElementTree.fromstring(webpage) doc = xml.etree.ElementTree.fromstring(webpage.encode('utf-8'))
if doc.tag == 'rss': if doc.tag == 'rss':
return self._extract_rss(url, video_id, doc) return self._extract_rss(url, video_id, doc)
except xml.etree.ElementTree.ParseError: except compat_xml_parse_error:
pass pass
# it's tempting to parse this further, but you would # it's tempting to parse this further, but you would

View file

@ -174,6 +174,11 @@ try:
except NameError: except NameError:
compat_chr = chr compat_chr = chr
try:
from xml.etree.ElementTree import ParseError as compat_xml_parse_error
except ImportError: # Python 2.6
from xml.parsers.expat import ExpatError as compat_xml_parse_error
def compat_ord(c): def compat_ord(c):
if type(c) is int: return c if type(c) is int: return c
else: return ord(c) else: return ord(c)