summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar ryuslash2010-04-27 21:06:41 +0200
committerGravatar ryuslash2010-04-27 21:06:41 +0200
commit0323ddbed81302750c9e70096014abe24e2b655c (patch)
treef333283080f2340ad359fe8bd1d39578bd807c2f
parentef79c9991b55975157607c6d7b0cca52a6929023 (diff)
download4grab-0323ddbed81302750c9e70096014abe24e2b655c.tar.gz
4grab-0323ddbed81302750c9e70096014abe24e2b655c.zip
interrupt, save
On keyboard interrupt in the regular flow of downloading the collected images of this session and of last session are saved so as not to destroy the archive accidentally this way. If an item is added to the new collection, it is removed from the old one. If a save is being dumped (uncleanly saved because of KB interrupt), the old collection is appended to the new one. Upon loading the returned string is split to enable removing of the old items.
-rwxr-xr-x4grab.py4
-rw-r--r--backend.py12
2 files changed, 14 insertions, 2 deletions
diff --git a/4grab.py b/4grab.py
index c728dfc..0e20745 100755
--- a/4grab.py
+++ b/4grab.py
@@ -30,6 +30,7 @@ import util
import download
import progressbar
import sorter
+import backend
config._optioncreator = raw_input_with_default
@@ -202,6 +203,9 @@ if __name__ == "__main__":
print "Failed: ", failed
print "Total: ", total
except KeyboardInterrupt:
+ be = backend.Backend()
+ be.save(True) # Make sure that the downloaded images are saved anyway
+
print
print "So you don't want these images? Fine! I'll stop then."
util.log(util.LogType.Err, "Quit on user request")
diff --git a/backend.py b/backend.py
index f2f2a1b..d41a2c8 100644
--- a/backend.py
+++ b/backend.py
@@ -19,6 +19,9 @@ class _Backend(object):
return True
def add(self, filename):
+ if filename in self.__collection:
+ self.__collection.remove(filename)
+
self.__new_collection.append(filename)
def check(self, filename):
@@ -33,7 +36,10 @@ class _Backend(object):
return False
- def save(self):
+ def save(self, dump = False):
+ if dump:
+ self.__new_collection.extend(self.__collection)
+
if os.path.exists(self.table):
os.remove(self.table)
@@ -43,7 +49,9 @@ class _Backend(object):
def load(self):
if os.path.exists(self.table):
- self.__collection = self.store.select(self.table, ['recno'], ['*'], ['filename'], returnType="report")
+ collection = self.store.select(self.table, ['recno'], ['*'], ['filename'], returnType="report")
+ if collection != '':
+ self.__collection = collection.split()
_backend = None
def Backend():