-import sys
-current_charset = sys.getdefaultencoding()
-if current_charset == "ascii":
- try:
- import locale
- except ImportError:
- pass
- else:
- current_charset = locale.getpreferredencoding()
-current_charset = current_charset.replace("windows-", "cp").lower()
-DEFAULT_CHARSET = "cp1251" # Stupid default for Russian Cyrillic
-
-
-from HTMLParser import HTMLParseError
-from m_lib.net.www.html import HTMLParser as _HTMLParser
-
-
-class HTMLHeadDone(Exception): pass
-
-
-class HTMLParser(_HTMLParser):
- def __init__(self, charset=None):
- _HTMLParser.__init__(self)
- self.charset = charset
- self.meta_charset = 0
- self.title = ''
- self.refresh = ''
- self.icon = None
-
- def end_head(self):
- raise HTMLHeadDone()
-
-
- def do_meta(self, attrs):
- http_equiv = ""
- content = ""
-
- for attrname, value in attrs:
- if value:
- value = value.strip()
- if attrname == 'http-equiv':
- http_equiv = value.lower()
- elif attrname == 'content':
- content = value
-
- if (not self.charset) and (http_equiv == "content-type"):
- try:
- # extract charset from "text/html; foo; charset=UTF-8; bar;"
- self.charset = content.lower().split('charset=')[1].split(';')[0]
- self.meta_charset = 1 # Remember that the charset was retrieved from
- # META tag, not from the Content-Type header
- except IndexError:
- pass
-
- if http_equiv == "refresh":
- self.refresh = content
-