+++ /dev/null
-"""HTML Parser using ElementTree+TidyLib.
-
-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) 2010, 2011 PhiloSoft Design"
-__license__ = "GNU GPL"
-
-__all__ = ['parse_html']
-
-
-from elementtidy import TidyHTMLTreeBuilder
-from .bkmk_ph_util import HTMLParser
-
-
-def parse_html(filename, charset=None, log=None):
- try:
- html_tree = TidyHTMLTreeBuilder.parse(filename)
- except:
- return None
-
- XHTML = "{http://www.w3.org/1999/xhtml}"
-
- for elem in html_tree.getiterator():
- if elem.tag.startswith(XHTML):
- elem.tag = elem.tag[len(XHTML):]
-
- 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:
- if m.get('http-equiv', '').lower() == 'content-type':
- meta_content = m.get("content")
- if meta_content:
- try:
- meta_charset = \
- meta_content.lower().split('charset=')[1].split(';')[0]
- break
- except IndexError:
- meta_charset = False
- else:
- meta_charset = False
-
- if charset or meta_charset:
- title = title.encode(charset or meta_charset)
-
- for m in meta:
- if m.get('http-equiv', '').lower() == 'refresh':
- refresh = m.get("content")
- break
- else:
- refresh = None
-
- for link in html_tree.findall('head/link'):
- if link.get('rel', '').lower() in ('icon', 'shortcut icon'):
- icon = link.get("href")
- break
- else:
- icon = None
-
- return HTMLParser(charset, meta_charset, title, refresh, icon)