]> git.phdru.name Git - bookmarks_db.git/blobdiff - parse_html/bkmk_parse_html.py
Change parse_html to parse strings, not files
[bookmarks_db.git] / parse_html / bkmk_parse_html.py
index e1d4710f4da4851009202bb89ef028a714bb59b7..e951cdc19509bb7fbf6658961fa61e39dd682ead 100644 (file)
@@ -1,16 +1,14 @@
 """HTML Parsers
 
 This file is a part of Bookmarks database and Internet robot.
+
 """
 
-__version__ = "$Revision$"[11:-2]
-__revision__ = "$Id$"[5:-2]
-__date__ = "$Date$"[7:-2]
 __author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 1997-2011 PhiloSoft Design"
+__copyright__ = "Copyright (C) 1997-2014 PhiloSoft Design"
 __license__ = "GNU GPL"
 
-__all__ = ['parse_html', 'universal_charset']
+__all__ = ['parse_html', 'parse_filename', 'universal_charset']
 
 
 import codecs
@@ -29,25 +27,25 @@ else:
    parsers.append(bkmk_ph_beautifulsoup.parse_html)
 
 try:
-   from . import bkmk_ph_htmlparser
+   from . import bkmk_ph_html5
 except ImportError:
    pass
 else:
-    parsers.append(bkmk_ph_htmlparser.parse_html)
+   parsers.append(bkmk_ph_html5.parse_html)
 
 try:
-   from . import bkmk_ph_html5
+   from . import bkmk_ph_lxml
 except ImportError:
    pass
 else:
-   parsers.append(bkmk_ph_html5.parse_html)
+    parsers.append(bkmk_ph_lxml.parse_html)
 
 try:
-   from . import bkmk_ph_lxml
+   from . import bkmk_ph_htmlparser
 except ImportError:
    pass
 else:
-    parsers.append(bkmk_ph_lxml.parse_html)
+    parsers.append(bkmk_ph_htmlparser.parse_html)
 
 # ElementTidy often segfaults
 #try:
@@ -89,7 +87,7 @@ def recode_entities(title, charset):
 import os
 BKMK_DEBUG_HTML_PARSERS = os.environ.get("BKMK_DEBUG_HTML_PARSERS")
 
-def parse_html(filename, charset=None, log=None):
+def parse_html(html_text, charset=None, log=None):
    if not parsers:
        return None
 
@@ -112,7 +110,7 @@ def parse_html(filename, charset=None, log=None):
       parser = None
       for c in charsets:
          try:
-            parser = p(filename, c, log)
+            parser = p(html_text, c, log)
          except UnicodeError:
             pass
          else:
@@ -186,3 +184,11 @@ def parse_html(filename, charset=None, log=None):
            if parser.charset:
                parser.icon = icon.encode(parser.charset)
    return parser
+
+def parse_filename(filename, charset=None, log=None):
+    fp = open(filename, 'r')
+    try:
+        parser = parse_html(fp.read(), charset=charset, log=log)
+    finally:
+        fp.close()
+    return parser