golden hour
/lib/python2.7/site-packages/chardet
⬆️ Go Up
Upload
File/Folder
Size
Actions
__init__.py
1.26 KB
Del
OK
__init__.pyc
797 B
Del
OK
__init__.pyo
797 B
Del
OK
big5freq.py
80.66 KB
Del
OK
big5freq.pyc
111.11 KB
Del
OK
big5freq.pyo
111.11 KB
Del
OK
big5prober.py
1.64 KB
Del
OK
big5prober.pyc
1.07 KB
Del
OK
big5prober.pyo
1.07 KB
Del
OK
chardetect.py
1.09 KB
Del
OK
chardetect.pyc
1.46 KB
Del
OK
chardetect.pyo
1.46 KB
Del
OK
chardistribution.py
9.01 KB
Del
OK
chardistribution.pyc
7.35 KB
Del
OK
chardistribution.pyo
7.35 KB
Del
OK
charsetgroupprober.py
3.7 KB
Del
OK
charsetgroupprober.pyc
2.48 KB
Del
OK
charsetgroupprober.pyo
2.48 KB
Del
OK
charsetprober.py
1.86 KB
Del
OK
charsetprober.pyc
2.08 KB
Del
OK
charsetprober.pyo
2.08 KB
Del
OK
codingstatemachine.py
2.26 KB
Del
OK
codingstatemachine.pyc
1.74 KB
Del
OK
codingstatemachine.pyo
1.74 KB
Del
OK
compat.py
1.13 KB
Del
OK
compat.pyc
559 B
Del
OK
compat.pyo
559 B
Del
OK
constants.py
1.3 KB
Del
OK
constants.pyc
332 B
Del
OK
constants.pyo
332 B
Del
OK
cp949prober.py
1.74 KB
Del
OK
cp949prober.pyc
1.07 KB
Del
OK
cp949prober.pyo
1.07 KB
Del
OK
escprober.py
3.11 KB
Del
OK
escprober.pyc
2.31 KB
Del
OK
escprober.pyo
2.31 KB
Del
OK
escsm.py
7.66 KB
Del
OK
escsm.pyc
7.13 KB
Del
OK
escsm.pyo
7.13 KB
Del
OK
eucjpprober.py
3.59 KB
Del
OK
eucjpprober.pyc
2.71 KB
Del
OK
eucjpprober.pyo
2.71 KB
Del
OK
euckrfreq.py
44.9 KB
Del
OK
euckrfreq.pyc
86.69 KB
Del
OK
euckrfreq.pyo
86.69 KB
Del
OK
euckrprober.py
1.64 KB
Del
OK
euckrprober.pyc
1.08 KB
Del
OK
euckrprober.pyo
1.08 KB
Del
OK
euctwfreq.py
34.05 KB
Del
OK
euctwfreq.pyc
59.74 KB
Del
OK
euctwfreq.pyo
59.74 KB
Del
OK
euctwprober.py
1.64 KB
Del
OK
euctwprober.pyc
1.08 KB
Del
OK
euctwprober.pyo
1.08 KB
Del
OK
gb2312freq.py
35.17 KB
Del
OK
gb2312freq.pyc
67.17 KB
Del
OK
gb2312freq.pyo
67.17 KB
Del
OK
gb2312prober.py
1.64 KB
Del
OK
gb2312prober.pyc
1.08 KB
Del
OK
gb2312prober.pyo
1.08 KB
Del
OK
hebrewprober.py
13.05 KB
Del
OK
hebrewprober.pyc
3.32 KB
Del
OK
hebrewprober.pyo
3.32 KB
Del
OK
jisfreq.py
46.21 KB
Del
OK
jisfreq.pyc
82.03 KB
Del
OK
jisfreq.pyo
82.03 KB
Del
OK
jpcntx.py
18.66 KB
Del
OK
jpcntx.pyc
24.04 KB
Del
OK
jpcntx.pyo
24.04 KB
Del
OK
langbulgarianmodel.py
12.48 KB
Del
OK
langbulgarianmodel.pyc
24.3 KB
Del
OK
langbulgarianmodel.pyo
24.3 KB
Del
OK
langcyrillicmodel.py
17.31 KB
Del
OK
langcyrillicmodel.pyc
29.85 KB
Del
OK
langcyrillicmodel.pyo
29.85 KB
Del
OK
langgreekmodel.py
12.33 KB
Del
OK
langgreekmodel.pyc
24 KB
Del
OK
langgreekmodel.pyo
24 KB
Del
OK
langhebrewmodel.py
11.05 KB
Del
OK
langhebrewmodel.pyc
22.84 KB
Del
OK
langhebrewmodel.pyo
22.84 KB
Del
OK
langhungarianmodel.py
12.24 KB
Del
OK
langhungarianmodel.pyc
24.29 KB
Del
OK
langhungarianmodel.pyo
24.29 KB
Del
OK
langthaimodel.py
11.01 KB
Del
OK
langthaimodel.pyc
22.83 KB
Del
OK
langthaimodel.pyo
22.83 KB
Del
OK
latin1prober.py
5.12 KB
Del
OK
latin1prober.pyc
3.37 KB
Del
OK
latin1prober.pyo
3.37 KB
Del
OK
mbcharsetprober.py
3.19 KB
Del
OK
mbcharsetprober.pyc
2.36 KB
Del
OK
mbcharsetprober.pyo
2.36 KB
Del
OK
mbcsgroupprober.py
1.92 KB
Del
OK
mbcsgroupprober.pyc
1.22 KB
Del
OK
mbcsgroupprober.pyo
1.22 KB
Del
OK
mbcssm.py
19.15 KB
Del
OK
mbcssm.pyc
17.25 KB
Del
OK
mbcssm.pyo
17.25 KB
Del
OK
sbcharsetprober.py
4.68 KB
Del
OK
sbcharsetprober.pyc
3.22 KB
Del
OK
sbcharsetprober.pyo
3.22 KB
Del
OK
sbcsgroupprober.py
3.21 KB
Del
OK
sbcsgroupprober.pyc
1.89 KB
Del
OK
sbcsgroupprober.pyo
1.89 KB
Del
OK
sjisprober.py
3.65 KB
Del
OK
sjisprober.pyc
2.73 KB
Del
OK
sjisprober.pyo
2.73 KB
Del
OK
universaldetector.py
6.67 KB
Del
OK
universaldetector.pyc
4.02 KB
Del
OK
universaldetector.pyo
4.02 KB
Del
OK
utf8prober.py
2.59 KB
Del
OK
utf8prober.pyc
2.14 KB
Del
OK
utf8prober.pyo
2.14 KB
Del
OK
Edit: universaldetector.py
######################## BEGIN LICENSE BLOCK ######################## # The Original Code is Mozilla Universal charset detector code. # # The Initial Developer of the Original Code is # Netscape Communications Corporation. # Portions created by the Initial Developer are Copyright (C) 2001 # the Initial Developer. All Rights Reserved. # # Contributor(s): # Mark Pilgrim - port to Python # Shy Shalom - original C code # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA # 02110-1301 USA ######################### END LICENSE BLOCK ######################### from . import constants import sys import codecs from .latin1prober import Latin1Prober # windows-1252 from .mbcsgroupprober import MBCSGroupProber # multi-byte character sets from .sbcsgroupprober import SBCSGroupProber # single-byte character sets from .escprober import EscCharSetProber # ISO-2122, etc. import re MINIMUM_THRESHOLD = 0.20 ePureAscii = 0 eEscAscii = 1 eHighbyte = 2 class UniversalDetector: def __init__(self): self._highBitDetector = re.compile(b'[\x80-\xFF]') self._escDetector = re.compile(b'(\033|~{)') self._mEscCharSetProber = None self._mCharSetProbers = [] self.reset() def reset(self): self.result = {'encoding': None, 'confidence': 0.0} self.done = False self._mStart = True self._mGotData = False self._mInputState = ePureAscii self._mLastChar = b'' if self._mEscCharSetProber: self._mEscCharSetProber.reset() for prober in self._mCharSetProbers: prober.reset() def feed(self, aBuf): if self.done: return aLen = len(aBuf) if not aLen: return if not self._mGotData: # If the data starts with BOM, we know it is UTF if aBuf[:3] == codecs.BOM: # EF BB BF UTF-8 with BOM self.result = {'encoding': "UTF-8", 'confidence': 1.0} elif aBuf[:4] == codecs.BOM_UTF32_LE: # FF FE 00 00 UTF-32, little-endian BOM self.result = {'encoding': "UTF-32LE", 'confidence': 1.0} elif aBuf[:4] == codecs.BOM_UTF32_BE: # 00 00 FE FF UTF-32, big-endian BOM self.result = {'encoding': "UTF-32BE", 'confidence': 1.0} elif aBuf[:4] == b'\xFE\xFF\x00\x00': # FE FF 00 00 UCS-4, unusual octet order BOM (3412) self.result = { 'encoding': "X-ISO-10646-UCS-4-3412", 'confidence': 1.0 } elif aBuf[:4] == b'\x00\x00\xFF\xFE': # 00 00 FF FE UCS-4, unusual octet order BOM (2143) self.result = { 'encoding': "X-ISO-10646-UCS-4-2143", 'confidence': 1.0 } elif aBuf[:2] == codecs.BOM_LE: # FF FE UTF-16, little endian BOM self.result = {'encoding': "UTF-16LE", 'confidence': 1.0} elif aBuf[:2] == codecs.BOM_BE: # FE FF UTF-16, big endian BOM self.result = {'encoding': "UTF-16BE", 'confidence': 1.0} self._mGotData = True if self.result['encoding'] and (self.result['confidence'] > 0.0): self.done = True return if self._mInputState == ePureAscii: if self._highBitDetector.search(aBuf): self._mInputState = eHighbyte elif ((self._mInputState == ePureAscii) and self._escDetector.search(self._mLastChar + aBuf)): self._mInputState = eEscAscii self._mLastChar = aBuf[-1:] if self._mInputState == eEscAscii: if not self._mEscCharSetProber: self._mEscCharSetProber = EscCharSetProber() if self._mEscCharSetProber.feed(aBuf) == constants.eFoundIt: self.result = {'encoding': self._mEscCharSetProber.get_charset_name(), 'confidence': self._mEscCharSetProber.get_confidence()} self.done = True elif self._mInputState == eHighbyte: if not self._mCharSetProbers: self._mCharSetProbers = [MBCSGroupProber(), SBCSGroupProber(), Latin1Prober()] for prober in self._mCharSetProbers: if prober.feed(aBuf) == constants.eFoundIt: self.result = {'encoding': prober.get_charset_name(), 'confidence': prober.get_confidence()} self.done = True break def close(self): if self.done: return if not self._mGotData: if constants._debug: sys.stderr.write('no data received!\n') return self.done = True if self._mInputState == ePureAscii: self.result = {'encoding': 'ascii', 'confidence': 1.0} return self.result if self._mInputState == eHighbyte: proberConfidence = None maxProberConfidence = 0.0 maxProber = None for prober in self._mCharSetProbers: if not prober: continue proberConfidence = prober.get_confidence() if proberConfidence > maxProberConfidence: maxProberConfidence = proberConfidence maxProber = prober if maxProber and (maxProberConfidence > MINIMUM_THRESHOLD): self.result = {'encoding': maxProber.get_charset_name(), 'confidence': maxProber.get_confidence()} return self.result if constants._debug: sys.stderr.write('no probers hit minimum threshhold\n') for prober in self._mCharSetProbers[0].mProbers: if not prober: continue sys.stderr.write('%s confidence = %s\n' % (prober.get_charset_name(), prober.get_confidence()))
Save