improve --clear-cache (#1230)

Allow for an optional argument to only delete cached entries from
a specific module.

delete all cache entries
$ gallery-dl --clear-cache
or
$ gallery-dl --clear-cache all

only delete entries for instagram
$ gallery-dl --clear-cache instagram
pull/1550/head
Mike Fährmann 3 years ago
parent e13cae182b
commit 755164b36a
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -186,7 +186,7 @@ def main():
elif args.clear_cache:
from . import cache
log = logging.getLogger("cache")
cnt = cache.clear()
cnt = cache.clear(args.clear_cache)
if cnt is None:
log.error("Database file not available")

@ -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():

@ -114,7 +114,7 @@ def build_parser():
)
general.add_argument(
"--clear-cache",
dest="clear_cache", action="store_true",
dest="clear_cache", metavar="MODULE", nargs="?", const="all",
help="Delete all cached login sessions, cookies, etc.",
)

Loading…
Cancel
Save