diff options
Diffstat (limited to 'gallery_dl/downloader/__init__.py')
| -rw-r--r-- | gallery_dl/downloader/__init__.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gallery_dl/downloader/__init__.py b/gallery_dl/downloader/__init__.py new file mode 100644 index 0000000..97972cd --- /dev/null +++ b/gallery_dl/downloader/__init__.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- + +# Copyright 2015-2019 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 +# published by the Free Software Foundation. + +"""Downloader modules""" + +import importlib + +modules = [ + "http", + "text", + "ytdl", +] + + +def find(scheme): + """Return downloader class suitable for handling the given scheme""" + try: + return _cache[scheme] + except KeyError: + klass = None + try: + if scheme in modules: # prevent unwanted imports + module = importlib.import_module("." + scheme, __package__) + klass = module.__downloader__ + except (ImportError, AttributeError, TypeError): + pass + _cache[scheme] = klass + return klass + + +# -------------------------------------------------------------------- +# internals + +_cache = {} |
