diff options
Diffstat (limited to 'gallery_dl/cache.py')
| -rw-r--r-- | gallery_dl/cache.py | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/gallery_dl/cache.py b/gallery_dl/cache.py index a874f63..5ab68bf 100644 --- a/gallery_dl/cache.py +++ b/gallery_dl/cache.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2016-2020 Mike Fährmann +# Copyright 2016-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 @@ -168,24 +168,33 @@ def cache(maxage=3600, keyarg=None): return wrap -def clear(): - """Delete all database entries""" +def clear(module="all"): + """Delete database entries for 'module'""" db = DatabaseCacheDecorator.db + if not db: + return None - if db: - rowcount = 0 - cursor = db.cursor() - try: + rowcount = 0 + cursor = db.cursor() + module = module.lower() + + try: + if module == "all": cursor.execute("DELETE FROM data") - except sqlite3.OperationalError: - pass # database is not initialized, can't be modified, etc. else: - rowcount = cursor.rowcount - db.commit() + cursor.execute( + "DELETE FROM data " + "WHERE key LIKE 'gallery_dl.extractor.' || ? || '.%'", + (module,) + ) + except sqlite3.OperationalError: + pass # database is not initialized, can't be modified, etc. + else: + rowcount = cursor.rowcount + db.commit() + if rowcount: cursor.execute("VACUUM") - return rowcount - - return None + return rowcount def _path(): |
