summaryrefslogtreecommitdiffstats
path: root/gallery_dl/downloader
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/downloader')
-rw-r--r--gallery_dl/downloader/__init__.py16
-rw-r--r--gallery_dl/downloader/http.py8
-rw-r--r--gallery_dl/downloader/ytdl.py16
3 files changed, 24 insertions, 16 deletions
diff --git a/gallery_dl/downloader/__init__.py b/gallery_dl/downloader/__init__.py
index 6fb09e1..e1b936e 100644
--- a/gallery_dl/downloader/__init__.py
+++ b/gallery_dl/downloader/__init__.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2015-2019 Mike Fährmann
+# Copyright 2015-2021 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@@ -8,8 +8,6 @@
"""Downloader modules"""
-import importlib
-
modules = [
"http",
"text",
@@ -24,22 +22,22 @@ def find(scheme):
except KeyError:
pass
- klass = None
+ cls = None
if scheme == "https":
scheme = "http"
if scheme in modules: # prevent unwanted imports
try:
- module = importlib.import_module("." + scheme, __package__)
+ module = __import__(scheme, globals(), None, (), 1)
except ImportError:
pass
else:
- klass = module.__downloader__
+ cls = module.__downloader__
if scheme == "http":
- _cache["http"] = _cache["https"] = klass
+ _cache["http"] = _cache["https"] = cls
else:
- _cache[scheme] = klass
- return klass
+ _cache[scheme] = cls
+ return cls
# --------------------------------------------------------------------
diff --git a/gallery_dl/downloader/http.py b/gallery_dl/downloader/http.py
index 8d72dc2..bc42d7c 100644
--- a/gallery_dl/downloader/http.py
+++ b/gallery_dl/downloader/http.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2014-2020 Mike Fährmann
+# Copyright 2014-2021 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@@ -31,6 +31,7 @@ class HttpDownloader(DownloaderBase):
self.downloading = False
self.adjust_extension = self.config("adjust-extensions", True)
+ self.headers = self.config("headers")
self.minsize = self.config("filesize-min")
self.maxsize = self.config("filesize-max")
self.retries = self.config("retries", extractor._retries)
@@ -93,13 +94,16 @@ class HttpDownloader(DownloaderBase):
time.sleep(tries)
tries += 1
- headers = {}
+ headers = {"Accept": "*/*"}
file_header = None
# check for .part file
file_size = pathfmt.part_size()
if file_size:
headers["Range"] = "bytes={}-".format(file_size)
+ # general headers
+ if self.headers:
+ headers.update(self.headers)
# file-specific headers
extra = pathfmt.kwdict.get("_http_headers")
if extra:
diff --git a/gallery_dl/downloader/ytdl.py b/gallery_dl/downloader/ytdl.py
index 8086b5d..e116188 100644
--- a/gallery_dl/downloader/ytdl.py
+++ b/gallery_dl/downloader/ytdl.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2018-2020 Mike Fährmann
+# Copyright 2018-2021 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@@ -8,7 +8,6 @@
"""Downloader module for URLs requiring youtube-dl support"""
-from youtube_dl import YoutubeDL, DEFAULT_OUTTMPL
from .common import DownloaderBase
from .. import text
import os
@@ -16,8 +15,14 @@ import os
class YoutubeDLDownloader(DownloaderBase):
scheme = "ytdl"
+ module = None
def __init__(self, job):
+ module = self.module
+ if not module:
+ module_name = self.config("module") or "youtube_dl"
+ module = YoutubeDLDownloader.module = __import__(module_name)
+
DownloaderBase.__init__(self, job)
extractor = job.extractor
@@ -42,10 +47,11 @@ class YoutubeDLDownloader(DownloaderBase):
options["logger"] = self.log
self.forward_cookies = self.config("forward-cookies", False)
- outtmpl = self.config("outtmpl")
- self.outtmpl = DEFAULT_OUTTMPL if outtmpl == "default" else outtmpl
+ self.outtmpl = self.config("outtmpl")
+ if self.outtmpl == "default":
+ self.outtmpl = module.DEFAULT_OUTTMPL
- self.ytdl = YoutubeDL(options)
+ self.ytdl = module.YoutubeDL(options)
def download(self, url, pathfmt):
if self.forward_cookies: