From 352950eebeed9fb2ff6d6746e5905df196dbf0b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Thu, 12 Nov 2015 02:29:59 +0100 Subject: [PATCH] new method to import downloaders --- gallery_dl/downloader/__init__.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gallery_dl/downloader/__init__.py b/gallery_dl/downloader/__init__.py index 8b137891..0750caa8 100644 --- a/gallery_dl/downloader/__init__.py +++ b/gallery_dl/downloader/__init__.py @@ -1 +1,27 @@ +# -*- coding: utf-8 -*- +# Copyright 2015 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. + +import importlib + +def find(scheme): + """Return downloader class suitable for handling the given scheme""" + try: + return _cache[scheme] + except KeyError: + try: + module = importlib.import_module("."+scheme, __package__) + klass = getattr(module, "Downloader") + _cache[scheme] = klass + return klass + except ImportError: + return None + +# -------------------------------------------------------------------- +# internals + +_cache = {}