diff --git a/youtube-dl b/youtube-dl index c4b5c07ca3..e4d7beb2d6 100755 Binary files a/youtube-dl and b/youtube-dl differ diff --git a/youtube-dl.exe b/youtube-dl.exe index cb96542832..287b78af52 100755 Binary files a/youtube-dl.exe and b/youtube-dl.exe differ diff --git a/youtube_dl/InfoExtractors.py b/youtube_dl/InfoExtractors.py index d77154dcb4..ae98e12642 100644 --- a/youtube_dl/InfoExtractors.py +++ b/youtube_dl/InfoExtractors.py @@ -359,8 +359,8 @@ def _real_extract(self, url): 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 @@ def _real_extract(self, url, new_video=True): 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 a19656000d..0f903c64a0 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 @@ def __init__(self, id): 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)