X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=reload_db.py;h=3c9c56e64ef3d26ca6fcc0f3cd9f9589309fff4d;hb=5be27ee9d6b805200db0295a9426d22159336cbe;hp=1bee46e92dde9517f826152043dced4f5ff87469;hpb=76c9a423c497a1b7c2831087e02e6d8dbda5cb58;p=xsetbg.git diff --git a/reload_db.py b/reload_db.py index 1bee46e..3c9c56e 100755 --- a/reload_db.py +++ b/reload_db.py @@ -5,18 +5,48 @@ This file is a part of XSetBg. """ -__author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 2007-2014 PhiloSoft Design" -__license__ = "GNU GPL" +import sys +from sqlobject import SQLObjectNotFound +from sqlobject.sqlbuilder import Insert +from xsetbg_conf import xsetbg_conf +from xsetbg_db import recreate_db, SQLiteMassInsert -import sys, shelve -from xsetbg_db import xsetbg_db_path +def convert_str(s): + if s == "None": + return None + else: + return int(float(s)) + + +fs_encoding = xsetbg_conf.get("images", "fs_encoding") dump_file = open(sys.argv[1], 'rU') +xsetbg_db = recreate_db() +count_new = count_old = 0 + +with SQLiteMassInsert() as txn: + for line in dump_file: + id, timestamp, filename = line.strip().split(None, 2) + id = convert_str(id) + timestamp = convert_str(timestamp) + filename = filename.decode(fs_encoding) + try: + row = xsetbg_db.byFull_name(filename) + except SQLObjectNotFound: + values = {'last_shown': timestamp, + 'full_name': filename.encode('utf-8')} + if id: + values['id'] = id + query = txn.sqlrepr(Insert(xsetbg_db.sqlmeta.table, values=values)) + txn.query(query) + count_new += 1 + else: + assert id is None or row.id == id + if row.last_shown is not None: + assert row.last_shown == timestamp + count_old += 1 -xsetbg_db = shelve.open(xsetbg_db_path, flag='n') -for line in dump_file: - timestamp, filename = line.strip().split(None, 1) - xsetbg_db[filename] = float(timestamp) -xsetbg_db.close() dump_file.close() + +print "New images:", count_new +print "Existing images:", count_old