mirror of
https://github.com/JimmXinu/FanFicFare.git
synced 2026-05-08 21:01:01 +02:00
Add --mozilla-cookies CLI option.
This commit is contained in:
parent
d7f149e990
commit
81ef198d00
3 changed files with 54 additions and 30 deletions
|
|
@ -163,6 +163,11 @@ def mkParser(calibre, parser=None):
|
|||
parser.add_option('--color',
|
||||
action='store_true', dest='color',
|
||||
help='Display a errors and warnings in a contrasting color. Requires package colorama on Windows.', )
|
||||
parser.add_option('--mozilla-cookies',
|
||||
dest='mozillacookies',
|
||||
help='Read and use cookies from COOKIEFILE in Mozilla/Netscape cookies.txt format.',
|
||||
metavar='COOKIEFILE')
|
||||
|
||||
|
||||
def printVersion(*args):
|
||||
print("Version: %s" % version)
|
||||
|
|
@ -175,6 +180,8 @@ def mkParser(calibre, parser=None):
|
|||
## undocumented feature for development use. Save page cache and
|
||||
## cookies between runs. Saves in PWD as files global_cache and
|
||||
## global_cookies
|
||||
## *does* honor --mozilla-cookies setting and writes cookies to
|
||||
## *set file instead of global_cookies.
|
||||
parser.add_option('--save-cache', '--save_cache',
|
||||
action='store_true', dest='save_cache',
|
||||
help=SUPPRESS_HELP, )
|
||||
|
|
@ -655,13 +662,23 @@ def get_configuration(url,
|
|||
## All CLI downloads are sequential and share one cookiejar,
|
||||
## loaded the first time through here.
|
||||
if not hasattr(options,'cookiejar'):
|
||||
options.cookiejar = configuration.get_cookiejar()
|
||||
cookiefile = None
|
||||
if options.mozillacookies:
|
||||
cookiefile = options.mozillacookies
|
||||
options.cookiejar = configuration.get_cookiejar(filename=cookiefile,
|
||||
mozilla=True)
|
||||
else:
|
||||
options.cookiejar = configuration.get_cookiejar()
|
||||
if options.save_cache:
|
||||
if not cookiefile:
|
||||
cookiefile = global_cookies
|
||||
options.cookiejar.set_autosave(True,filename=cookiefile)
|
||||
|
||||
if cookiefile:
|
||||
try:
|
||||
options.cookiejar.load_cookiejar(global_cookies)
|
||||
options.cookiejar.load_cookiejar(cookiefile)
|
||||
except Exception as e:
|
||||
logger.warning("Didn't load --save-cache %s\nContinue without loading cookies"%e)
|
||||
options.cookiejar.set_autosave(True,filename=global_cookies)
|
||||
logger.warning("Didn't load cookie file %s\nContinue without loading cookies"%e)
|
||||
else:
|
||||
configuration.set_cookiejar(options.cookiejar)
|
||||
|
||||
|
|
|
|||
|
|
@ -1060,8 +1060,8 @@ class Configuration(ConfigParser):
|
|||
def set_sleep_override(self,val):
|
||||
return self.sleeper.set_sleep_override(val)
|
||||
|
||||
def get_cookiejar(self,filename=None):
|
||||
return self.get_fetcher().get_cookiejar(filename)
|
||||
def get_cookiejar(self,filename=None,mozilla=False):
|
||||
return self.get_fetcher().get_cookiejar(filename,mozilla)
|
||||
|
||||
def set_cookiejar(self,cookiejar):
|
||||
self.get_fetcher().set_cookiejar(cookiejar)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
# py2 vs py3 transition
|
||||
from .six.moves.urllib.parse import quote_plus
|
||||
from .six.moves.http_cookiejar import LWPCookieJar
|
||||
from .six.moves.http_cookiejar import LWPCookieJar, MozillaCookieJar
|
||||
from .six import text_type as unicode
|
||||
from .six import ensure_binary, ensure_text
|
||||
|
||||
|
|
@ -297,28 +297,6 @@ class FetcherResponse(object):
|
|||
self.fromcache = fromcache
|
||||
self.json = json
|
||||
|
||||
class BasicCookieJar(LWPCookieJar,object):
|
||||
def __init__(self,*args,**kargs):
|
||||
super(BasicCookieJar,self).__init__(*args,**kargs)
|
||||
self.autosave = False
|
||||
# self.filename from parent(s)
|
||||
|
||||
## used by CLI --save-cache dev debugging feature
|
||||
def set_autosave(self,autosave=False,filename=None):
|
||||
self.autosave = autosave
|
||||
self.filename = filename
|
||||
|
||||
def load_cookiejar(self,filename=None):
|
||||
self.load(self.filename or filename,
|
||||
ignore_discard=True,
|
||||
ignore_expires=True)
|
||||
|
||||
def save_cookiejar(self,filename=None):
|
||||
self.save(filename or self.filename,
|
||||
ignore_discard=True,
|
||||
ignore_expires=True)
|
||||
|
||||
|
||||
class Fetcher(object):
|
||||
def __init__(self,getConfig_fn,getConfigList_fn):
|
||||
self.getConfig = getConfig_fn
|
||||
|
|
@ -326,8 +304,36 @@ class Fetcher(object):
|
|||
|
||||
self.cookiejar = None
|
||||
|
||||
def get_cookiejar(self,filename=None):
|
||||
def get_cookiejar(self,filename=None,mozilla=False):
|
||||
|
||||
if self.cookiejar is None:
|
||||
if mozilla:
|
||||
ParentCookieJar = MozillaCookieJar
|
||||
else:
|
||||
ParentCookieJar = LWPCookieJar
|
||||
|
||||
class BasicCookieJar(ParentCookieJar,object):
|
||||
def __init__(self,*args,**kargs):
|
||||
super(BasicCookieJar,self).__init__(*args,**kargs)
|
||||
self.autosave = False
|
||||
# self.filename from parent(s)
|
||||
|
||||
## used by CLI --save-cache dev debugging feature
|
||||
def set_autosave(self,autosave=False,filename=None):
|
||||
self.autosave = autosave
|
||||
self.filename = filename
|
||||
|
||||
def load_cookiejar(self,filename=None):
|
||||
self.load(self.filename or filename,
|
||||
ignore_discard=True,
|
||||
ignore_expires=True)
|
||||
|
||||
def save_cookiejar(self,filename=None):
|
||||
self.save(filename or self.filename,
|
||||
ignore_discard=True,
|
||||
ignore_expires=True)
|
||||
|
||||
|
||||
self.cookiejar = BasicCookieJar(filename=filename)
|
||||
if filename:
|
||||
try:
|
||||
|
|
@ -360,6 +366,7 @@ class Fetcher(object):
|
|||
referer=None,
|
||||
usecache=True):
|
||||
# logger.debug("fetcher do_request")
|
||||
# logger.debug(self.get_cookiejar())
|
||||
headers = self.make_headers(url,referer=referer)
|
||||
fetchresp = self.request(method,url,
|
||||
headers=headers,
|
||||
|
|
|
|||
Loading…
Reference in a new issue