af529bcd4e
Using kirbybase to store downloaded images A nasty bug that always returned the wrong result when checking whether an image had already been downloaded has been fixed
60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
import os
|
|
import modules.kirbybase
|
|
from util import confdir,raw_input_with_default
|
|
import config
|
|
|
|
class _Backend(object):
|
|
""" A class that communicates with the datastore """
|
|
def __init__(self):
|
|
self.table = os.path.join(confdir, "images.tbl")
|
|
self.store = modules.kirbybase.KirbyBase()
|
|
self.__collection = ""
|
|
self.__new_collection = []
|
|
|
|
self.load()
|
|
|
|
def create_store_if_needed(self):
|
|
if not os.path.exists(self.table):
|
|
return self.store.create(self.table, ["filename:String"])
|
|
return True
|
|
|
|
def add(self, filename):
|
|
self.__new_collection.append(filename)
|
|
|
|
def check(self, filename):
|
|
collected = filename in self.__collection
|
|
downloaded = filename in self.__new_collection
|
|
|
|
if not downloaded:
|
|
self.add(filename)
|
|
|
|
if collected or downloaded:
|
|
return True
|
|
|
|
return False
|
|
|
|
def save(self):
|
|
os.remove(self.table)
|
|
self.create_store_if_needed()
|
|
for f in self.__new_collection:
|
|
self.store.insert(self.table, [f])
|
|
|
|
def load(self):
|
|
if os.path.exists(self.table):
|
|
self.__collection = self.store.select(self.table, ['recno'], ['*'], ['filename'], returnType="report")
|
|
|
|
_backend = None
|
|
def Backend():
|
|
global _backend
|
|
|
|
if _backend == None:
|
|
_backend = _Backend()
|
|
return _backend
|
|
|
|
if __name__ == "__main__":
|
|
backend = Backend()
|
|
config._optioncreator = raw_input_with_default
|
|
cfg = config.Configuration()
|
|
|
|
for f in os.listdir(cfg.get_archive_location()):
|
|
backend.add(f)
|