diff options
| author | Filippo Valsorda <filippo.valsorda@gmail.com> | 2012-04-13 22:09:24 +0200 | 
|---|---|---|
| committer | Filippo Valsorda <filippo.valsorda@gmail.com> | 2012-04-13 22:09:24 +0200 | 
| commit | 9beb5af82ecfbb35ee534692e73fb38f4399698a (patch) | |
| tree | aa7a92788b8a00d748d3de00752047c674cbea74 | |
| parent | 9e6dd238761e6628d7bd0b6bdb7a997604de3757 (diff) | |
some HTMLParser bugfixes
| -rwxr-xr-x | youtube-dl | bin | 41729 -> 41958 bytes | |||
| -rwxr-xr-x | youtube-dl.exe | bin | 4000728 -> 4001031 bytes | |||
| -rw-r--r-- | youtube_dl/InfoExtractors.py | 8 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 11 | 
4 files changed, 14 insertions, 5 deletions
| diff --git a/youtube-dl b/youtube-dlBinary files differ index c4b5c07ca..e4d7beb2d 100755 --- a/youtube-dl +++ b/youtube-dl diff --git a/youtube-dl.exe b/youtube-dl.exeBinary files differ index cb9654283..287b78af5 100755 --- a/youtube-dl.exe +++ b/youtube-dl.exe diff --git a/youtube_dl/InfoExtractors.py b/youtube_dl/InfoExtractors.py index d77154dcb..ae98e1264 100644 --- a/youtube_dl/InfoExtractors.py +++ b/youtube_dl/InfoExtractors.py @@ -359,8 +359,8 @@ class YoutubeIE(InfoExtractor):  					pass  		# description -		video_description = get_element_by_id("eow-description", video_webpage) -		if video_description: video_description = clean_html(video_description.decode('utf8')) +		video_description = get_element_by_id("eow-description", video_webpage.decode('utf8')) +		if video_description: video_description = clean_html(video_description)  		else: video_description = ''  		# closed captions @@ -1055,8 +1055,8 @@ class VimeoIE(InfoExtractor):  		video_thumbnail = config["video"]["thumbnail"]  		# Extract video description -		video_description = get_element_by_id("description", webpage) -		if video_description: video_description = clean_html(video_description.decode('utf8')) +		video_description = get_element_by_id("description", webpage.decode('utf8')) +		if video_description: video_description = clean_html(video_description)  		else: video_description = ''  		# Extract upload date diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index a19656000..0f903c64a 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -73,7 +73,7 @@ def htmlentity_transform(matchobj):  	# Unknown entity in name, return its literal representation  	return (u'&%s;' % entity) - +HTMLParser.locatestarttagend = re.compile(r"""<[a-zA-Z][-.a-zA-Z0-9:_]*(?:\s+(?:(?<=['"\s])[^\s/>][^\s/=>]*(?:\s*=+\s*(?:'[^']*'|"[^"]*"|(?!['"])[^>\s]*))?\s*)*)?\s*""", re.VERBOSE) # backport bugfix  class IDParser(HTMLParser.HTMLParser):  	"""Modified HTMLParser that isolates a tag with the specified id"""  	def __init__(self, id): @@ -83,8 +83,17 @@ class IDParser(HTMLParser.HTMLParser):  		self.depth = {}  		self.html = None  		self.watch_startpos = False +		self.error_count = 0  		HTMLParser.HTMLParser.__init__(self) +	def error(self, message): +		print self.getpos() +		if self.error_count > 10 or self.started: +			raise HTMLParser.HTMLParseError(message, self.getpos()) +		self.rawdata = '\n'.join(self.html.split('\n')[self.getpos()[0]:]) # skip one line +		self.error_count += 1 +		self.goahead(1) +  	def loads(self, html):  		self.html = html  		self.feed(html) | 
