mirror of
https://github.com/gryf/ebook-converter.git
synced 2026-01-04 18:14:11 +01:00
Here is the first batch of modules, which are needed for converting several formats to LRF. Some of the logic has been change, more cleanups will follow.
53 lines
2.1 KiB
Python
53 lines
2.1 KiB
Python
#!/usr/bin/env python2
|
|
# vim:fileencoding=utf-8
|
|
# License: GPL v3 Copyright: 2018, Kovid Goyal <kovid at kovidgoyal.net>
|
|
|
|
from __future__ import absolute_import
|
|
|
|
from ebook_converter.polyglot.builtins import is_py3
|
|
|
|
if is_py3:
|
|
from urllib.request import (build_opener, getproxies, install_opener, # noqa
|
|
HTTPBasicAuthHandler, HTTPCookieProcessor, HTTPDigestAuthHandler, # noqa
|
|
url2pathname, urlopen, Request) # noqa
|
|
from urllib.parse import (parse_qs, quote, unquote as uq, quote_plus, urldefrag, # noqa
|
|
urlencode, urljoin, urlparse, urlunparse, urlsplit, urlunsplit) # noqa
|
|
from urllib.error import HTTPError, URLError # noqa
|
|
|
|
def unquote(x, encoding='utf-8', errors='replace'):
|
|
binary = isinstance(x, bytes)
|
|
if binary:
|
|
x = x.decode(encoding, errors)
|
|
ans = uq(x, encoding, errors)
|
|
if binary:
|
|
ans = ans.encode(encoding, errors)
|
|
return ans
|
|
|
|
else:
|
|
from urllib import (getproxies, quote, unquote as uq, quote_plus, url2pathname, # noqa
|
|
urlencode) # noqa
|
|
from urllib2 import (build_opener, install_opener, HTTPBasicAuthHandler, # noqa
|
|
HTTPCookieProcessor, HTTPDigestAuthHandler, HTTPError, URLError, # noqa
|
|
urlopen, Request) # noqa
|
|
from urlparse import (parse_qs, urldefrag, urljoin, urlparse, urlunparse, # noqa
|
|
urlsplit, urlunsplit) # noqa
|
|
|
|
def unquote(x, encoding='utf-8', errors='replace'):
|
|
# unquote must run on a bytestring and will return a bytestring
|
|
# If it runs on a unicode object, it returns a double encoded unicode
|
|
# string: unquote(u'%C3%A4') != unquote(b'%C3%A4').decode('utf-8')
|
|
# and the latter is correct
|
|
binary = isinstance(x, bytes)
|
|
if not binary:
|
|
x = x.encode(encoding, errors)
|
|
ans = uq(x)
|
|
if not binary:
|
|
ans = ans.decode(encoding, errors)
|
|
return ans
|
|
|
|
|
|
def unquote_plus(x, encoding='utf-8', errors='replace'):
|
|
q, repl = (b'+', b' ') if isinstance(x, bytes) else ('+', ' ')
|
|
x = x.replace(q, repl)
|
|
return unquote(x, encoding=encoding, errors=errors)
|