aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippo Valsorda <filippo.valsorda@gmail.com>2012-04-13 22:09:24 +0200
committerFilippo Valsorda <filippo.valsorda@gmail.com>2012-04-13 22:09:24 +0200
commit9beb5af82ecfbb35ee534692e73fb38f4399698a (patch)
treeaa7a92788b8a00d748d3de00752047c674cbea74
parent9e6dd238761e6628d7bd0b6bdb7a997604de3757 (diff)
downloadyoutube-dl-9beb5af82ecfbb35ee534692e73fb38f4399698a.tar.xz
some HTMLParser bugfixes
-rwxr-xr-xyoutube-dlbin41729 -> 41958 bytes
-rwxr-xr-xyoutube-dl.exebin4000728 -> 4001031 bytes
-rw-r--r--youtube_dl/InfoExtractors.py8
-rw-r--r--youtube_dl/utils.py11
4 files changed, 14 insertions, 5 deletions
diff --git a/youtube-dl b/youtube-dl
index c4b5c07ca..e4d7beb2d 100755
--- a/youtube-dl
+++ b/youtube-dl
Binary files differ
diff --git a/youtube-dl.exe b/youtube-dl.exe
index cb9654283..287b78af5 100755
--- a/youtube-dl.exe
+++ b/youtube-dl.exe
Binary files differ
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)