summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/common.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/common.py')
-rw-r--r--gallery_dl/extractor/common.py38
1 files changed, 15 insertions, 23 deletions
diff --git a/gallery_dl/extractor/common.py b/gallery_dl/extractor/common.py
index 5a2d3a3..e3559f9 100644
--- a/gallery_dl/extractor/common.py
+++ b/gallery_dl/extractor/common.py
@@ -55,6 +55,7 @@ class Extractor():
self._retries = self.config("retries", 4)
self._timeout = self.config("timeout", 30)
self._verify = self.config("verify", True)
+ self._proxies = util.build_proxy_map(self.config("proxy"), self.log)
self._interval = util.build_duration_func(
self.config("sleep-request", self.request_interval),
self.request_interval_min,
@@ -65,7 +66,6 @@ class Extractor():
self._init_session()
self._init_cookies()
- self._init_proxies()
@classmethod
def from_url(cls, url):
@@ -104,10 +104,12 @@ class Extractor():
def request(self, url, *, method="GET", session=None, retries=None,
encoding=None, fatal=True, notfound=None, **kwargs):
- if retries is None:
- retries = self._retries
if session is None:
session = self.session
+ if retries is None:
+ retries = self._retries
+ if "proxies" not in kwargs:
+ kwargs["proxies"] = self._proxies
if "timeout" not in kwargs:
kwargs["timeout"] = self._timeout
if "verify" not in kwargs:
@@ -289,20 +291,6 @@ class Extractor():
session.mount("https://", adapter)
session.mount("http://", adapter)
- def _init_proxies(self):
- """Update the session's proxy map"""
- proxies = self.config("proxy")
- if proxies:
- if isinstance(proxies, str):
- proxies = {"http": proxies, "https": proxies}
- if isinstance(proxies, dict):
- for scheme, proxy in proxies.items():
- if "://" not in proxy:
- proxies[scheme] = "http://" + proxy.lstrip("/")
- self.session.proxies = proxies
- else:
- self.log.warning("invalid proxy specifier: %s", proxies)
-
def _init_cookies(self):
"""Populate the session's cookiejar"""
self._cookiefile = None
@@ -371,20 +359,25 @@ class Extractor():
for cookie in self._cookiejar:
if cookie.name in names and (
not domain or cookie.domain == domain):
+
if cookie.expires:
diff = int(cookie.expires - now)
+
if diff <= 0:
self.log.warning(
"Cookie '%s' has expired", cookie.name)
+ continue
+
elif diff <= 86400:
hours = diff // 3600
self.log.warning(
"Cookie '%s' will expire in less than %s hour%s",
cookie.name, hours + 1, "s" if hours else "")
- else:
- names.discard(cookie.name)
- if not names:
- return True
+ continue
+
+ names.discard(cookie.name)
+ if not names:
+ return True
return False
def _prepare_ddosguard_cookies(self):
@@ -616,8 +609,7 @@ class BaseExtractor(Extractor):
if index:
self.category, self.root = self.instances[index-1]
if not self.root:
- url = text.ensure_http_scheme(match.group(0))
- self.root = url[:url.index("/", 8)]
+ self.root = text.root_from_url(match.group(0))
else:
self.root = group
self.category = group.partition("://")[2]