aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/cache.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/cache.py')
-rw-r--r--gallery_dl/cache.py37
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():