Files
biliup/ykdl/compact.py
T
2019-06-15 15:23:35 +08:00

105 lines
3.4 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import platform
import struct
if sys.version_info[0] == 3:
from urllib.request import Request, urlopen, HTTPSHandler, build_opener, HTTPCookieProcessor, install_opener, ProxyHandler
from urllib.parse import urlencode, urlparse, urlsplit
from http.client import HTTPConnection
from http.server import BaseHTTPRequestHandler
import socketserver as SocketServer
import queue as Queue
import _thread as thread
from html import unescape
compact_str = str
compact_bytes = bytes
from urllib.parse import unquote as compact_unquote
from urllib.parse import quote
from tempfile import NamedTemporaryFile
def compact_tempfile(mode='w+b', encoding=None, suffix='', prefix='tmp', dir=None):
if platform.system() == 'Windows':
_del_ = False
else:
_del_ = True
return NamedTemporaryFile(mode=mode, encoding=encoding, suffix=suffix, prefix=prefix, dir=dir, delete=_del_)
def compact_isstr(s):
return isinstance(s, str)
else:
from urllib2 import Request, urlopen, HTTPSHandler, build_opener, HTTPCookieProcessor, install_opener, ProxyHandler
from urllib import urlencode
from urlparse import urlparse, urlsplit
from httplib import HTTPConnection
from BaseHTTPServer import BaseHTTPRequestHandler
import SocketServer
import Queue
import thread
import types
compact_str = unicode
def compact_bytes(string, encode):
return string.encode(encode)
from urllib import quote
def compact_unquote(string, encoding = 'utf-8'):
from urllib import unquote
return unquote(str(string)).decode(encoding)
from tempfile import NamedTemporaryFile
__tmp__ = []
import codecs
def compact_tempfile(mode='w+b', encoding=None, suffix='', prefix='tmp', dir=None):
if platform.system() == 'Windows':
_del_ = False
else:
_del_ = True
tmp = NamedTemporaryFile(mode=mode, suffix=suffix, prefix=prefix, dir=dir, delete=_del_)
__tmp__.append(tmp)
return codecs.open(tmp.name, mode, encoding)
def compact_isstr(s):
return isinstance(s, types.UnicodeType) or isinstance(s, str)
import HTMLParser
def unescape(s):
html_parser = HTMLParser.HTMLParser()
return html_parser.unescape(s)
# Return addrlist sequence at random, it can help create_connection function
import socket
import random
def getaddrinfo(*args, **kwargs):
addrlist = _getaddrinfo(*args, **kwargs)
random.shuffle(addrlist)
return addrlist
_getaddrinfo = socket.getaddrinfo
socket.getaddrinfo = getaddrinfo
try:
struct.pack('!I', 0)
except TypeError:
# In Python 2.6 and 2.7.x < 2.7.7, struct requires a bytes argument
# See https://bugs.python.org/issue19099
def compat_struct_pack(spec, *args):
if isinstance(spec, compat_str):
spec = spec.encode('ascii')
return struct.pack(spec, *args)
def compat_struct_unpack(spec, *args):
if isinstance(spec, compat_str):
spec = spec.encode('ascii')
return struct.unpack(spec, *args)
else:
compat_struct_pack = struct.pack
compat_struct_unpack = struct.unpack
def tmp_null():
if platform.system() == 'Windows':
null = 'nul'
else:
null = '/dev/null'
return open(null, 'w')
compact_dev_null = tmp_null()
del tmp_null