diff --git a/calibre-plugin/fff_plugin.py b/calibre-plugin/fff_plugin.py index 3a5d4510..34f15d73 100644 --- a/calibre-plugin/fff_plugin.py +++ b/calibre-plugin/fff_plugin.py @@ -1312,7 +1312,7 @@ class FanFicFarePlugin(InterfaceAction): b = minslp - m slp = min(maxslp,m*float(options['ffnetcount'])+b) #print("m:%s b:%s = %s"%(m,b,slp)) - configuration.set_sleep(slp) + configuration.set_sleep_override(slp) if not bgmeta: story = self.get_story_metadata_only(adapter) diff --git a/fanficfare/configurable.py b/fanficfare/configurable.py index 5594b777..2e947970 100644 --- a/fanficfare/configurable.py +++ b/fanficfare/configurable.py @@ -538,6 +538,7 @@ class Configuration(ConfigParser): ConfigParser.__init__(self) self.fetcher = None # the network layer for getting pages the + self.sleeper = None # caching layer for getting pages, created now for # get_empty_pagecache() etc. self.cache = fetcher.BasicCache() @@ -964,15 +965,16 @@ class Configuration(ConfigParser): self.getConfigList) ######################################################## - ## Adding fetcher decorators. Order matters--last in, + ## Adding fetcher decorators. Order matters--last added, ## first called. If ProgressBarDecorator is added before ## Cache, it's never called for cache hits, for example. - fetcher.SleepDecorator().decorate_fetcher(self.fetcher) + ## doesn't sleep when fromcache==True + ## saved for set_sleep + self.sleeper = fetcher.SleepDecorator() + self.sleeper.decorate_fetcher(self.fetcher) - # cache decorator terminates the chain when found. Cache - # created in __init__ because of get_empty_pagecache() - # etc, but not used until now. + ## cache decorator terminates the chain when found. logger.debug("use_pagecache:%s"%self.getConfig('use_pagecache')) if self.getConfig('use_pagecache'): fetcher.BasicCacheDecorator(self.cache).decorate_fetcher(self.fetcher) @@ -986,8 +988,8 @@ class Configuration(ConfigParser): ## Or Fetcher ## used by plugin to change time for ffnet. - def set_sleep(self,val): - return self.get_fetcher().set_sleep(val) + 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) diff --git a/fanficfare/fetcher.py b/fanficfare/fetcher.py index 78488eb5..c4beb236 100644 --- a/fanficfare/fetcher.py +++ b/fanficfare/fetcher.py @@ -108,21 +108,15 @@ class ProgressBarDecorator(FetcherDecorator): class SleepDecorator(FetcherDecorator): def __init__(self): super(SleepDecorator,self).__init__() - self.override_sleep = None + self.sleep_override = None def decorate_fetcher(self,fetcher): super(SleepDecorator,self).decorate_fetcher(fetcher) - fetcher.set_sleep = partial(self.fetcher_set_sleep, - fetcher, - fetcher.set_sleep) - def fetcher_set_sleep(self, - fetcher, - chainfn, - val): + ## used by plugin for ffnet variable timing + def set_sleep_override(self,val): logger.debug("\n===========\n set sleep time %s\n==========="%val) - self.override_sleep = val - return chainfn(val) + self.sleep_override = val def fetcher_do_request(self, fetcher, @@ -149,9 +143,8 @@ class SleepDecorator(FetcherDecorator): if extrasleep: logger.debug("extra sleep:%s"%extrasleep) time.sleep(float(extrasleep)) - t = None - if self.override_sleep: - t = float(self.override_sleep) + if self.sleep_override: + t = float(self.sleep_override) elif fetcher.getConfig('slow_down_sleep_time'): t = float(fetcher.getConfig('slow_down_sleep_time')) ## sleep randomly between 0.5 time and 1.5 time. @@ -296,11 +289,6 @@ class Fetcher(object): ignore_discard=True, ignore_expires=True) - # used by plugin for ffnet variable timing - ## this will need to be moved. XXX - def set_sleep(self,val): - pass - def make_headers(self,url,referer=None): headers = {} headers['User-Agent']=self.getConfig('user_agent')