]> git.phdru.name Git - bookmarks_db.git/blobdiff - parse_html/bkmk_parse_html.py
Fix(parse_html): Do not parse empty strings
[bookmarks_db.git] / parse_html / bkmk_parse_html.py
index 69d9035f5001759cb7689221775572b3e49b1373..7764303a4e754715a86a3a12e5d0b48d1d5acb8c 100644 (file)
@@ -14,7 +14,10 @@ __all__ = ['parse_html', 'parse_filename', 'universal_charset']
 import codecs
 import os
 import re
-from htmlentitydefs import name2codepoint
+try:
+    from html.entities import name2codepoint
+except ImportError:
+    from htmlentitydefs import name2codepoint
 
 from compat import unicode, unichr
 
@@ -98,7 +101,7 @@ BKMK_DEBUG_HTML_PARSERS = os.environ.get("BKMK_DEBUG_HTML_PARSERS")
 
 
 def parse_html(html_text, charset=None, log=None):
-    if not parsers:
+    if not html_text or not parsers:
         return None
 
     if charset:
@@ -165,7 +168,7 @@ def parse_html(html_text, charset=None, log=None):
     #            parser.charset = 'ascii'
 
     converted_title = title = parser.title
-    if title and (not parser.charset):
+    if title and isinstance(title, bytes) and (not parser.charset):
         try:
             title.decode("ascii")
         except UnicodeDecodeError:
@@ -223,7 +226,7 @@ def parse_html(html_text, charset=None, log=None):
 
 
 def parse_filename(filename, charset=None, log=None):
-    fp = open(filename, 'r')
+    fp = open(filename, 'rt')
     try:
         parser = parse_html(fp.read(), charset=charset, log=log)
     finally: