X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=parse_html%2Fbkmk_ph_beautifulsoup.py;h=ac880cc6b7c197eab772d056e2d210eb5fabc520;hb=48440e20170112c8a036b0c66c1cbe067ed1d87e;hp=e1969f3250aa73d6e46e24883dd264f6df7ccd94;hpb=9faa13f6f8199790cf01533e857c593520559649;p=bookmarks_db.git diff --git a/parse_html/bkmk_ph_beautifulsoup.py b/parse_html/bkmk_ph_beautifulsoup.py index e1969f3..ac880cc 100644 --- a/parse_html/bkmk_ph_beautifulsoup.py +++ b/parse_html/bkmk_ph_beautifulsoup.py @@ -14,7 +14,9 @@ __all__ = ['parse_html'] import re from sgmllib import SGMLParser, SGMLParseError from BeautifulSoup import BeautifulSoup, CData + from .bkmk_ph_util import HTMLParser +from compat import string_type DEFAULT_CHARSET = "cp1251" # Stupid default for Russian Cyrillic @@ -65,7 +67,8 @@ def parse_html(html_text, charset=None, log=None): return None _charset = root.originalEncoding - if _charset in ("ISO-8859-2", "windows-1252", "MacCyrillic"): # Replace default + if _charset in ("ISO-8859-2", "windows-1252", "MacCyrillic"): + # Replace with default and re-parse _charset = DEFAULT_CHARSET root = _parse_html(html_text, _charset) if root is None: @@ -94,8 +97,8 @@ def parse_html(html_text, charset=None, log=None): else: parts = [] for part in title: - if not isinstance(part, basestring): - part = unicode(part) + if not isinstance(part, string_type): + part = part.decode() parts.append(part.strip()) title = ''.join(parts) @@ -104,7 +107,8 @@ def parse_html(html_text, charset=None, log=None): try: meta_content = meta.get("content") if meta_content: - __charset = meta_content.lower().split('charset=')[1].split(';')[0] + __charset = meta_content.lower().split('charset=')[1].\ + split(';')[0] else: __charset = False except IndexError: # No charset in the META Content-Type @@ -121,8 +125,8 @@ def parse_html(html_text, charset=None, log=None): if meta_content: meta_charset = _charset = meta_content.lower() - if title and (_charset or meta_charset): - title = title.encode(_charset or meta_charset) + #if title and (_charset or meta_charset): + # title = title.encode(_charset or meta_charset) meta = head.find(_find_refresh, recursive=False) if meta: