Skip to content

Commit

Permalink
improve --clear-cache (#1230)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
mikf committed May 4, 2021
1 parent e13cae1 commit 755164b
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 16 deletions.
2 changes: 1 addition & 1 deletion gallery_dl/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
37 changes: 23 additions & 14 deletions gallery_dl/cache.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -168,24 +168,33 @@ def wrap(func):
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():
Expand Down
2 changes: 1 addition & 1 deletion gallery_dl/option.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.",
)

Expand Down

0 comments on commit 755164b

Please sign in to comment.