Current Path: > > opt > alt > python33 > lib64 > python3.3 >
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__pycache__ | Directory | - | - | |
collections | Directory | - | - | |
concurrent | Directory | - | - | |
config-3.3m | Directory | - | - | |
ctypes | Directory | - | - | |
curses | Directory | - | - | |
dbm | Directory | - | - | |
distutils | Directory | - | - | |
Directory | - | - | ||
encodings | Directory | - | - | |
html | Directory | - | - | |
http | Directory | - | - | |
idlelib | Directory | - | - | |
importlib | Directory | - | - | |
json | Directory | - | - | |
lib-dynload | Directory | - | - | |
lib2to3 | Directory | - | - | |
logging | Directory | - | - | |
multiprocessing | Directory | - | - | |
plat-linux | Directory | - | - | |
pydoc_data | Directory | - | - | |
site-packages | Directory | - | - | |
sqlite3 | Directory | - | - | |
test | Directory | - | - | |
unittest | Directory | - | - | |
urllib | Directory | - | - | |
venv | Directory | - | - | |
wsgiref | Directory | - | - | |
xml | Directory | - | - | |
xmlrpc | Directory | - | - | |
__future__.py | File | 4584 bytes | April 17 2024 16:58:21. | |
__phello__.foo.py | File | 64 bytes | April 17 2024 16:58:20. | |
_compat_pickle.py | File | 4338 bytes | April 17 2024 16:58:19. | |
_dummy_thread.py | File | 4769 bytes | April 17 2024 16:58:20. | |
_markupbase.py | File | 14598 bytes | April 17 2024 16:58:15. | |
_osx_support.py | File | 18855 bytes | April 17 2024 16:58:20. | |
_pyio.py | File | 72905 bytes | April 17 2024 16:58:17. | |
_strptime.py | File | 21674 bytes | April 17 2024 16:58:20. | |
_sysconfigdata.py | File | 22842 bytes | April 17 2024 16:58:20. | |
_threading_local.py | File | 7410 bytes | April 17 2024 16:58:15. | |
_weakrefset.py | File | 5705 bytes | April 17 2024 16:58:14. | |
abc.py | File | 8057 bytes | April 17 2024 16:58:15. | |
aifc.py | File | 31054 bytes | April 17 2024 16:58:21. | |
antigravity.py | File | 475 bytes | April 17 2024 16:58:16. | |
argparse.py | File | 89069 bytes | April 17 2024 16:58:20. | |
ast.py | File | 12142 bytes | April 17 2024 16:58:20. | |
asynchat.py | File | 11588 bytes | April 17 2024 16:58:19. | |
asyncore.py | File | 20753 bytes | April 17 2024 16:58:21. | |
base64.py | File | 13986 bytes | April 17 2024 16:58:17. | |
bdb.py | File | 21894 bytes | April 17 2024 16:58:19. | |
binhex.py | File | 13708 bytes | April 17 2024 16:58:14. | |
bisect.py | File | 2595 bytes | April 17 2024 16:58:13. | |
bz2.py | File | 18473 bytes | April 17 2024 16:58:20. | |
cProfile.py | File | 6361 bytes | April 17 2024 16:58:14. | |
calendar.py | File | 22940 bytes | April 17 2024 16:58:20. | |
cgi.py | File | 35554 bytes | April 17 2024 16:58:20. | |
cgitb.py | File | 12041 bytes | April 17 2024 16:58:21. | |
chunk.py | File | 5377 bytes | April 17 2024 16:58:17. | |
cmd.py | File | 14860 bytes | April 17 2024 16:58:14. | |
code.py | File | 10030 bytes | April 17 2024 16:58:16. | |
codecs.py | File | 35956 bytes | April 17 2024 16:58:15. | |
codeop.py | File | 5994 bytes | April 17 2024 16:58:14. | |
colorsys.py | File | 3691 bytes | April 17 2024 16:58:15. | |
compileall.py | File | 9743 bytes | April 17 2024 16:58:14. | |
configparser.py | File | 49437 bytes | April 17 2024 16:58:15. | |
contextlib.py | File | 9125 bytes | April 17 2024 16:58:14. | |
copy.py | File | 8991 bytes | April 17 2024 16:58:15. | |
copyreg.py | File | 6611 bytes | April 17 2024 16:58:20. | |
crypt.py | File | 1879 bytes | April 17 2024 16:58:14. | |
csv.py | File | 16185 bytes | April 17 2024 16:58:15. | |
datetime.py | File | 74954 bytes | April 17 2024 16:58:21. | |
decimal.py | File | 228558 bytes | April 17 2024 16:58:19. | |
difflib.py | File | 82519 bytes | April 17 2024 16:58:17. | |
dis.py | File | 10134 bytes | April 17 2024 16:58:15. | |
doctest.py | File | 102933 bytes | April 17 2024 16:58:15. | |
dummy_threading.py | File | 2815 bytes | April 17 2024 16:58:14. | |
filecmp.py | File | 9597 bytes | April 17 2024 16:58:15. | |
fileinput.py | File | 14256 bytes | April 17 2024 16:58:17. | |
fnmatch.py | File | 3163 bytes | April 17 2024 16:58:15. | |
formatter.py | File | 14930 bytes | April 17 2024 16:58:15. | |
fractions.py | File | 23033 bytes | April 17 2024 16:58:14. | |
ftplib.py | File | 40253 bytes | April 17 2024 16:58:15. | |
functools.py | File | 13596 bytes | April 17 2024 16:58:21. | |
genericpath.py | File | 3093 bytes | April 17 2024 16:58:21. | |
getopt.py | File | 7488 bytes | April 17 2024 16:58:20. | |
getpass.py | File | 5793 bytes | April 17 2024 16:58:14. | |
gettext.py | File | 20637 bytes | April 17 2024 16:58:20. | |
glob.py | File | 2838 bytes | April 17 2024 16:58:14. | |
gzip.py | File | 24403 bytes | April 17 2024 16:58:20. | |
hashlib.py | File | 6193 bytes | April 17 2024 16:58:21. | |
heapq.py | File | 17997 bytes | April 17 2024 16:58:13. | |
hmac.py | File | 4440 bytes | April 17 2024 16:58:17. | |
imaplib.py | File | 50111 bytes | April 17 2024 16:58:20. | |
imghdr.py | File | 3528 bytes | April 17 2024 16:58:20. | |
imp.py | File | 9727 bytes | April 17 2024 16:58:15. | |
inspect.py | File | 78960 bytes | April 17 2024 16:58:19. | |
io.py | File | 3280 bytes | April 17 2024 16:58:15. | |
ipaddress.py | File | 70303 bytes | April 17 2024 16:58:20. | |
keyword.py | File | 2060 bytes | April 17 2024 16:58:20. | |
linecache.py | File | 3864 bytes | April 17 2024 16:58:16. | |
locale.py | File | 93215 bytes | April 17 2024 16:58:19. | |
lzma.py | File | 17454 bytes | April 17 2024 16:58:20. | |
macpath.py | File | 5617 bytes | April 17 2024 16:58:15. | |
macurl2path.py | File | 2732 bytes | April 17 2024 16:58:15. | |
mailbox.py | File | 79093 bytes | April 17 2024 16:58:19. | |
mailcap.py | File | 7437 bytes | April 17 2024 16:58:14. | |
mimetypes.py | File | 20735 bytes | April 17 2024 16:58:19. | |
modulefinder.py | File | 23198 bytes | April 17 2024 16:58:14. | |
netrc.py | File | 5747 bytes | April 17 2024 16:58:17. | |
nntplib.py | File | 42786 bytes | April 17 2024 16:58:13. | |
ntpath.py | File | 20437 bytes | April 17 2024 16:58:14. | |
nturl2path.py | File | 2396 bytes | April 17 2024 16:58:20. | |
numbers.py | File | 10398 bytes | April 17 2024 16:58:20. | |
opcode.py | File | 5098 bytes | April 17 2024 16:58:21. | |
optparse.py | File | 60346 bytes | April 17 2024 16:58:20. | |
os.py | File | 34779 bytes | April 17 2024 16:58:14. | |
os2emxpath.py | File | 4659 bytes | April 17 2024 16:58:15. | |
pdb.py | File | 60653 bytes | April 17 2024 16:58:16. | |
pickle.py | File | 47858 bytes | April 17 2024 16:58:17. | |
pickletools.py | File | 81349 bytes | April 17 2024 16:58:15. | |
pipes.py | File | 8916 bytes | April 17 2024 16:58:20. | |
pkgutil.py | File | 21539 bytes | April 17 2024 16:58:15. | |
platform.py | File | 50742 bytes | April 17 2024 16:58:15. | |
plistlib.py | File | 14777 bytes | April 17 2024 16:58:13. | |
poplib.py | File | 11372 bytes | April 17 2024 16:58:13. | |
posixpath.py | File | 14254 bytes | April 17 2024 16:58:16. | |
pprint.py | File | 12700 bytes | April 17 2024 16:58:15. | |
profile.py | File | 21448 bytes | April 17 2024 16:58:17. | |
pstats.py | File | 26372 bytes | April 17 2024 16:58:14. | |
pty.py | File | 5055 bytes | April 17 2024 16:58:14. | |
py_compile.py | File | 6717 bytes | April 17 2024 16:58:19. | |
pyclbr.py | File | 13438 bytes | April 17 2024 16:58:13. | |
pydoc.py | File | 101644 bytes | April 17 2024 16:58:15. | |
queue.py | File | 8835 bytes | April 17 2024 16:58:20. | |
quopri.py | File | 7315 bytes | April 17 2024 16:58:20. | |
random.py | File | 25660 bytes | April 17 2024 16:58:14. | |
re.py | File | 14973 bytes | April 17 2024 16:58:17. | |
reprlib.py | File | 5110 bytes | April 17 2024 16:58:15. | |
rlcompleter.py | File | 5526 bytes | April 17 2024 16:58:21. | |
runpy.py | File | 10413 bytes | April 17 2024 16:58:14. | |
sched.py | File | 6399 bytes | April 17 2024 16:58:19. | |
shelve.py | File | 8243 bytes | April 17 2024 16:58:20. | |
shlex.py | File | 11502 bytes | April 17 2024 16:58:21. | |
shutil.py | File | 39147 bytes | April 17 2024 16:58:20. | |
site.py | File | 21971 bytes | April 17 2024 16:58:19. | |
smtpd.py | File | 30207 bytes | April 17 2024 16:58:16. | |
smtplib.py | File | 38021 bytes | April 17 2024 16:58:14. | |
sndhdr.py | File | 6219 bytes | April 17 2024 16:58:20. | |
socket.py | File | 14913 bytes | April 17 2024 16:58:20. | |
socketserver.py | File | 24196 bytes | April 17 2024 16:58:21. | |
sre_compile.py | File | 16345 bytes | April 17 2024 16:58:14. | |
sre_constants.py | File | 7231 bytes | April 17 2024 16:58:14. | |
sre_parse.py | File | 30212 bytes | April 17 2024 16:58:16. | |
ssl.py | File | 24478 bytes | April 17 2024 16:58:19. | |
stat.py | File | 4304 bytes | April 17 2024 16:58:19. | |
string.py | File | 9410 bytes | April 17 2024 16:58:20. | |
stringprep.py | File | 12917 bytes | April 17 2024 16:58:17. | |
struct.py | File | 238 bytes | April 17 2024 16:58:16. | |
subprocess.py | File | 67578 bytes | April 17 2024 16:58:14. | |
sunau.py | File | 17523 bytes | April 17 2024 16:58:15. | |
symbol.py | File | 2051 bytes | April 17 2024 16:58:14. | |
symtable.py | File | 7383 bytes | April 17 2024 16:58:20. | |
sysconfig.py | File | 25174 bytes | April 17 2024 16:58:20. | |
tabnanny.py | File | 11410 bytes | April 17 2024 16:58:20. | |
tarfile.py | File | 88864 bytes | April 17 2024 16:58:15. | |
telnetlib.py | File | 27349 bytes | April 17 2024 16:58:15. | |
tempfile.py | File | 23013 bytes | April 17 2024 16:58:14. | |
textwrap.py | File | 16488 bytes | April 17 2024 16:58:14. | |
this.py | File | 1003 bytes | April 17 2024 16:58:17. | |
threading.py | File | 45641 bytes | April 17 2024 16:58:19. | |
timeit.py | File | 12395 bytes | April 17 2024 16:58:15. | |
token.py | File | 3034 bytes | April 17 2024 16:58:14. | |
tokenize.py | File | 24876 bytes | April 17 2024 16:58:20. | |
trace.py | File | 31487 bytes | April 17 2024 16:58:13. | |
traceback.py | File | 11982 bytes | April 17 2024 16:58:20. | |
tty.py | File | 879 bytes | April 17 2024 16:58:13. | |
types.py | File | 3167 bytes | April 17 2024 16:58:14. | |
uu.py | File | 6766 bytes | April 17 2024 16:58:14. | |
uuid.py | File | 22349 bytes | April 17 2024 16:58:15. | |
warnings.py | File | 13825 bytes | April 17 2024 16:58:15. | |
wave.py | File | 18579 bytes | April 17 2024 16:58:15. | |
weakref.py | File | 11495 bytes | April 17 2024 16:58:19. | |
webbrowser.py | File | 22913 bytes | April 17 2024 16:58:20. | |
xdrlib.py | File | 5381 bytes | April 17 2024 16:58:21. | |
zipfile.py | File | 66424 bytes | April 17 2024 16:58:21. |
"""Guess the MIME type of a file. This module defines two useful functions: guess_type(url, strict=True) -- guess the MIME type and encoding of a URL. guess_extension(type, strict=True) -- guess the extension for a given MIME type. It also contains the following, for tuning the behavior: Data: knownfiles -- list of files to parse inited -- flag set when init() has been called suffix_map -- dictionary mapping suffixes to suffixes encodings_map -- dictionary mapping suffixes to encodings types_map -- dictionary mapping suffixes to types Functions: init([files]) -- parse a list of files, default knownfiles (on Windows, the default values are taken from the registry) read_mime_types(file) -- parse one file, return a dictionary or None """ import os import sys import posixpath import urllib.parse try: import winreg as _winreg except ImportError: _winreg = None __all__ = [ "guess_type","guess_extension","guess_all_extensions", "add_type","read_mime_types","init" ] knownfiles = [ "/etc/mime.types", "/etc/httpd/mime.types", # Mac OS X "/etc/httpd/conf/mime.types", # Apache "/etc/apache/mime.types", # Apache 1 "/etc/apache2/mime.types", # Apache 2 "/usr/local/etc/httpd/conf/mime.types", "/usr/local/lib/netscape/mime.types", "/usr/local/etc/httpd/conf/mime.types", # Apache 1.2 "/usr/local/etc/mime.types", # Apache 1.3 ] inited = False _db = None class MimeTypes: """MIME-types datastore. This datastore can handle information from mime.types-style files and supports basic determination of MIME type from a filename or URL, and can guess a reasonable extension given a MIME type. """ def __init__(self, filenames=(), strict=True): if not inited: init() self.encodings_map = encodings_map.copy() self.suffix_map = suffix_map.copy() self.types_map = ({}, {}) # dict for (non-strict, strict) self.types_map_inv = ({}, {}) for (ext, type) in types_map.items(): self.add_type(type, ext, True) for (ext, type) in common_types.items(): self.add_type(type, ext, False) for name in filenames: self.read(name, strict) def add_type(self, type, ext, strict=True): """Add a mapping between a type and an extension. When the extension is already known, the new type will replace the old one. When the type is already known the extension will be added to the list of known extensions. If strict is true, information will be added to list of standard types, else to the list of non-standard types. """ self.types_map[strict][ext] = type exts = self.types_map_inv[strict].setdefault(type, []) if ext not in exts: exts.append(ext) def guess_type(self, url, strict=True): """Guess the type of a file based on its URL. Return value is a tuple (type, encoding) where type is None if the type can't be guessed (no or unknown suffix) or a string of the form type/subtype, usable for a MIME Content-type header; and encoding is None for no encoding or the name of the program used to encode (e.g. compress or gzip). The mappings are table driven. Encoding suffixes are case sensitive; type suffixes are first tried case sensitive, then case insensitive. The suffixes .tgz, .taz and .tz (case sensitive!) are all mapped to '.tar.gz'. (This is table-driven too, using the dictionary suffix_map.) Optional `strict' argument when False adds a bunch of commonly found, but non-standard types. """ scheme, url = urllib.parse.splittype(url) if scheme == 'data': # syntax of data URLs: # dataurl := "data:" [ mediatype ] [ ";base64" ] "," data # mediatype := [ type "/" subtype ] *( ";" parameter ) # data := *urlchar # parameter := attribute "=" value # type/subtype defaults to "text/plain" comma = url.find(',') if comma < 0: # bad data URL return None, None semi = url.find(';', 0, comma) if semi >= 0: type = url[:semi] else: type = url[:comma] if '=' in type or '/' not in type: type = 'text/plain' return type, None # never compressed, so encoding is None base, ext = posixpath.splitext(url) while ext in self.suffix_map: base, ext = posixpath.splitext(base + self.suffix_map[ext]) if ext in self.encodings_map: encoding = self.encodings_map[ext] base, ext = posixpath.splitext(base) else: encoding = None types_map = self.types_map[True] if ext in types_map: return types_map[ext], encoding elif ext.lower() in types_map: return types_map[ext.lower()], encoding elif strict: return None, encoding types_map = self.types_map[False] if ext in types_map: return types_map[ext], encoding elif ext.lower() in types_map: return types_map[ext.lower()], encoding else: return None, encoding def guess_all_extensions(self, type, strict=True): """Guess the extensions for a file based on its MIME type. Return value is a list of strings giving the possible filename extensions, including the leading dot ('.'). The extension is not guaranteed to have been associated with any particular data stream, but would be mapped to the MIME type `type' by guess_type(). Optional `strict' argument when false adds a bunch of commonly found, but non-standard types. """ type = type.lower() extensions = self.types_map_inv[True].get(type, []) if not strict: for ext in self.types_map_inv[False].get(type, []): if ext not in extensions: extensions.append(ext) return extensions def guess_extension(self, type, strict=True): """Guess the extension for a file based on its MIME type. Return value is a string giving a filename extension, including the leading dot ('.'). The extension is not guaranteed to have been associated with any particular data stream, but would be mapped to the MIME type `type' by guess_type(). If no extension can be guessed for `type', None is returned. Optional `strict' argument when false adds a bunch of commonly found, but non-standard types. """ extensions = self.guess_all_extensions(type, strict) if not extensions: return None return extensions[0] def read(self, filename, strict=True): """ Read a single mime.types-format file, specified by pathname. If strict is true, information will be added to list of standard types, else to the list of non-standard types. """ with open(filename, encoding='utf-8') as fp: self.readfp(fp, strict) def readfp(self, fp, strict=True): """ Read a single mime.types-format file. If strict is true, information will be added to list of standard types, else to the list of non-standard types. """ while 1: line = fp.readline() if not line: break words = line.split() for i in range(len(words)): if words[i][0] == '#': del words[i:] break if not words: continue type, suffixes = words[0], words[1:] for suff in suffixes: self.add_type(type, '.' + suff, strict) def read_windows_registry(self, strict=True): """ Load the MIME types database from Windows registry. If strict is true, information will be added to list of standard types, else to the list of non-standard types. """ # Windows only if not _winreg: return def enum_types(mimedb): i = 0 while True: try: ctype = _winreg.EnumKey(mimedb, i) except EnvironmentError: break else: yield ctype i += 1 with _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, '') as hkcr: for subkeyname in enum_types(hkcr): try: with _winreg.OpenKey(hkcr, subkeyname) as subkey: # Only check file extensions if not subkeyname.startswith("."): continue # raises EnvironmentError if no 'Content Type' value mimetype, datatype = _winreg.QueryValueEx( subkey, 'Content Type') if datatype != _winreg.REG_SZ: continue self.add_type(mimetype, subkeyname, strict) except EnvironmentError: continue def guess_type(url, strict=True): """Guess the type of a file based on its URL. Return value is a tuple (type, encoding) where type is None if the type can't be guessed (no or unknown suffix) or a string of the form type/subtype, usable for a MIME Content-type header; and encoding is None for no encoding or the name of the program used to encode (e.g. compress or gzip). The mappings are table driven. Encoding suffixes are case sensitive; type suffixes are first tried case sensitive, then case insensitive. The suffixes .tgz, .taz and .tz (case sensitive!) are all mapped to ".tar.gz". (This is table-driven too, using the dictionary suffix_map). Optional `strict' argument when false adds a bunch of commonly found, but non-standard types. """ if _db is None: init() return _db.guess_type(url, strict) def guess_all_extensions(type, strict=True): """Guess the extensions for a file based on its MIME type. Return value is a list of strings giving the possible filename extensions, including the leading dot ('.'). The extension is not guaranteed to have been associated with any particular data stream, but would be mapped to the MIME type `type' by guess_type(). If no extension can be guessed for `type', None is returned. Optional `strict' argument when false adds a bunch of commonly found, but non-standard types. """ if _db is None: init() return _db.guess_all_extensions(type, strict) def guess_extension(type, strict=True): """Guess the extension for a file based on its MIME type. Return value is a string giving a filename extension, including the leading dot ('.'). The extension is not guaranteed to have been associated with any particular data stream, but would be mapped to the MIME type `type' by guess_type(). If no extension can be guessed for `type', None is returned. Optional `strict' argument when false adds a bunch of commonly found, but non-standard types. """ if _db is None: init() return _db.guess_extension(type, strict) def add_type(type, ext, strict=True): """Add a mapping between a type and an extension. When the extension is already known, the new type will replace the old one. When the type is already known the extension will be added to the list of known extensions. If strict is true, information will be added to list of standard types, else to the list of non-standard types. """ if _db is None: init() return _db.add_type(type, ext, strict) def init(files=None): global suffix_map, types_map, encodings_map, common_types global inited, _db inited = True # so that MimeTypes.__init__() doesn't call us again db = MimeTypes() if files is None: if _winreg: db.read_windows_registry() files = knownfiles for file in files: if os.path.isfile(file): db.read(file) encodings_map = db.encodings_map suffix_map = db.suffix_map types_map = db.types_map[True] common_types = db.types_map[False] # Make the DB a global variable now that it is fully initialized _db = db def read_mime_types(file): try: f = open(file) except IOError: return None with f: db = MimeTypes() db.readfp(f, True) return db.types_map[True] def _default_mime_types(): global suffix_map global encodings_map global types_map global common_types suffix_map = { '.svgz': '.svg.gz', '.tgz': '.tar.gz', '.taz': '.tar.gz', '.tz': '.tar.gz', '.tbz2': '.tar.bz2', '.txz': '.tar.xz', } encodings_map = { '.gz': 'gzip', '.Z': 'compress', '.bz2': 'bzip2', '.xz': 'xz', } # Before adding new types, make sure they are either registered with IANA, # at http://www.iana.org/assignments/media-types # or extensions, i.e. using the x- prefix # If you add to these, please keep them sorted! types_map = { '.a' : 'application/octet-stream', '.ai' : 'application/postscript', '.aif' : 'audio/x-aiff', '.aifc' : 'audio/x-aiff', '.aiff' : 'audio/x-aiff', '.au' : 'audio/basic', '.avi' : 'video/x-msvideo', '.bat' : 'text/plain', '.bcpio' : 'application/x-bcpio', '.bin' : 'application/octet-stream', '.bmp' : 'image/x-ms-bmp', '.c' : 'text/plain', # Duplicates :( '.cdf' : 'application/x-cdf', '.cdf' : 'application/x-netcdf', '.cpio' : 'application/x-cpio', '.csh' : 'application/x-csh', '.css' : 'text/css', '.dll' : 'application/octet-stream', '.doc' : 'application/msword', '.dot' : 'application/msword', '.dvi' : 'application/x-dvi', '.eml' : 'message/rfc822', '.eps' : 'application/postscript', '.etx' : 'text/x-setext', '.exe' : 'application/octet-stream', '.gif' : 'image/gif', '.gtar' : 'application/x-gtar', '.h' : 'text/plain', '.hdf' : 'application/x-hdf', '.htm' : 'text/html', '.html' : 'text/html', '.ico' : 'image/vnd.microsoft.icon', '.ief' : 'image/ief', '.jpe' : 'image/jpeg', '.jpeg' : 'image/jpeg', '.jpg' : 'image/jpeg', '.js' : 'application/javascript', '.ksh' : 'text/plain', '.latex' : 'application/x-latex', '.m1v' : 'video/mpeg', '.m3u' : 'application/vnd.apple.mpegurl', '.m3u8' : 'application/vnd.apple.mpegurl', '.man' : 'application/x-troff-man', '.me' : 'application/x-troff-me', '.mht' : 'message/rfc822', '.mhtml' : 'message/rfc822', '.mif' : 'application/x-mif', '.mov' : 'video/quicktime', '.movie' : 'video/x-sgi-movie', '.mp2' : 'audio/mpeg', '.mp3' : 'audio/mpeg', '.mp4' : 'video/mp4', '.mpa' : 'video/mpeg', '.mpe' : 'video/mpeg', '.mpeg' : 'video/mpeg', '.mpg' : 'video/mpeg', '.ms' : 'application/x-troff-ms', '.nc' : 'application/x-netcdf', '.nws' : 'message/rfc822', '.o' : 'application/octet-stream', '.obj' : 'application/octet-stream', '.oda' : 'application/oda', '.p12' : 'application/x-pkcs12', '.p7c' : 'application/pkcs7-mime', '.pbm' : 'image/x-portable-bitmap', '.pdf' : 'application/pdf', '.pfx' : 'application/x-pkcs12', '.pgm' : 'image/x-portable-graymap', '.pl' : 'text/plain', '.png' : 'image/png', '.pnm' : 'image/x-portable-anymap', '.pot' : 'application/vnd.ms-powerpoint', '.ppa' : 'application/vnd.ms-powerpoint', '.ppm' : 'image/x-portable-pixmap', '.pps' : 'application/vnd.ms-powerpoint', '.ppt' : 'application/vnd.ms-powerpoint', '.ps' : 'application/postscript', '.pwz' : 'application/vnd.ms-powerpoint', '.py' : 'text/x-python', '.pyc' : 'application/x-python-code', '.pyo' : 'application/x-python-code', '.qt' : 'video/quicktime', '.ra' : 'audio/x-pn-realaudio', '.ram' : 'application/x-pn-realaudio', '.ras' : 'image/x-cmu-raster', '.rdf' : 'application/xml', '.rgb' : 'image/x-rgb', '.roff' : 'application/x-troff', '.rtx' : 'text/richtext', '.sgm' : 'text/x-sgml', '.sgml' : 'text/x-sgml', '.sh' : 'application/x-sh', '.shar' : 'application/x-shar', '.snd' : 'audio/basic', '.so' : 'application/octet-stream', '.src' : 'application/x-wais-source', '.sv4cpio': 'application/x-sv4cpio', '.sv4crc' : 'application/x-sv4crc', '.svg' : 'image/svg+xml', '.swf' : 'application/x-shockwave-flash', '.t' : 'application/x-troff', '.tar' : 'application/x-tar', '.tcl' : 'application/x-tcl', '.tex' : 'application/x-tex', '.texi' : 'application/x-texinfo', '.texinfo': 'application/x-texinfo', '.tif' : 'image/tiff', '.tiff' : 'image/tiff', '.tr' : 'application/x-troff', '.tsv' : 'text/tab-separated-values', '.txt' : 'text/plain', '.ustar' : 'application/x-ustar', '.vcf' : 'text/x-vcard', '.wav' : 'audio/x-wav', '.wiz' : 'application/msword', '.wsdl' : 'application/xml', '.xbm' : 'image/x-xbitmap', '.xlb' : 'application/vnd.ms-excel', # Duplicates :( '.xls' : 'application/excel', '.xls' : 'application/vnd.ms-excel', '.xml' : 'text/xml', '.xpdl' : 'application/xml', '.xpm' : 'image/x-xpixmap', '.xsl' : 'application/xml', '.xwd' : 'image/x-xwindowdump', '.zip' : 'application/zip', } # These are non-standard types, commonly found in the wild. They will # only match if strict=0 flag is given to the API methods. # Please sort these too common_types = { '.jpg' : 'image/jpg', '.mid' : 'audio/midi', '.midi': 'audio/midi', '.pct' : 'image/pict', '.pic' : 'image/pict', '.pict': 'image/pict', '.rtf' : 'application/rtf', '.xul' : 'text/xul' } _default_mime_types() if __name__ == '__main__': import getopt USAGE = """\ Usage: mimetypes.py [options] type Options: --help / -h -- print this message and exit --lenient / -l -- additionally search of some common, but non-standard types. --extension / -e -- guess extension instead of type More than one type argument may be given. """ def usage(code, msg=''): print(USAGE) if msg: print(msg) sys.exit(code) try: opts, args = getopt.getopt(sys.argv[1:], 'hle', ['help', 'lenient', 'extension']) except getopt.error as msg: usage(1, msg) strict = 1 extension = 0 for opt, arg in opts: if opt in ('-h', '--help'): usage(0) elif opt in ('-l', '--lenient'): strict = 0 elif opt in ('-e', '--extension'): extension = 1 for gtype in args: if extension: guess = guess_extension(gtype, strict) if not guess: print("I don't know anything about type", gtype) else: print(guess) else: guess, encoding = guess_type(gtype, strict) if not guess: print("I don't know anything about type", gtype) else: print('type:', guess, 'encoding:', encoding)
SILENT KILLER Tool