]> git.phdru.name Git - bookmarks_db.git/blobdiff - parse_html/bkmk_ph_etreetidy.py
Cleanup code: use 4 spaces
[bookmarks_db.git] / parse_html / bkmk_ph_etreetidy.py
index f5e794c68aa7c9446a903dca081f23e739fc95d6..09aa2a3773642cf08df73e100206d782602e8685 100644 (file)
@@ -1,10 +1,11 @@
 """HTML Parser using ElementTree+TidyLib.
 
 This file is a part of Bookmarks database and Internet robot.
+
 """
 
 __author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2010-2012 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2010-2017 PhiloSoft Design"
 __license__ = "GNU GPL"
 
 __all__ = ['parse_html']
@@ -14,9 +15,9 @@ from elementtidy import TidyHTMLTreeBuilder
 from .bkmk_ph_util import HTMLParser
 
 
-def parse_html(filename, charset=None, log=None):
+def parse_html(html_text, charset=None, log=None):
     try:
-        html_tree = TidyHTMLTreeBuilder.parse(filename)
+        html_tree = TidyHTMLTreeBuilder.parseString(html_text)
     except:
         return None
 
@@ -29,8 +30,6 @@ def parse_html(filename, charset=None, log=None):
     title = html_tree.findtext('head/title')
     if title is None:
         title = html_tree.findtext('title')
-        if title is None:
-            return None
 
     meta = html_tree.findall('head/meta')
     for m in meta:
@@ -43,10 +42,13 @@ def parse_html(filename, charset=None, log=None):
                     break
                 except IndexError:
                     meta_charset = False
+        elif m.get('charset', ''):
+            meta_charset = m.get('charset').lower()
+            break
     else:
         meta_charset = False
 
-    if charset or meta_charset:
+    if title and (charset or meta_charset):
         title = title.encode(charset or meta_charset)
 
     for m in meta:
@@ -63,4 +65,6 @@ def parse_html(filename, charset=None, log=None):
     else:
         icon = None
 
+    if (title is None) and (refresh is None) and (icon is None):
+        return None
     return HTMLParser(charset, meta_charset, title, refresh, icon)