-#! /usr/bin/env python
+#! /usr/bin/env python3
"""Reload a dump into DB
This file is a part of XSetBg.
from xsetbg_db import recreate_db, SQLiteMassInsert
-def convert_str(s):
+def convert_str(s, convert=int):
if s == "None":
return None
else:
- return int(float(s))
+ return convert(float(s))
-fs_encoding = xsetbg_conf.get("images", "fs_encoding")
-dump_file = open(sys.argv[1], 'r')
+dump_file = open(sys.argv[1], 'r',
+ encoding=xsetbg_conf.get("images", "fs_encoding"))
xsetbg_db = recreate_db()
-count_new = count_old = 0
+count_new = count_old = count_updated = 0
with SQLiteMassInsert() as txn:
for line in dump_file:
- id, timestamp, filename = line.strip().split(None, 2)
+ id, timestamp, is_image, show, filename = line.strip().split(None, 4)
id = convert_str(id)
timestamp = convert_str(timestamp)
- filename = filename.decode(fs_encoding)
+ is_image = convert_str(is_image, bool)
+ show = convert_str(show, bool)
try:
if id:
row = xsetbg_db.get(id)
row = xsetbg_db.byFull_name(filename)
except SQLObjectNotFound:
values = {'last_shown': timestamp,
- 'full_name': filename.encode('utf-8')}
+ 'full_name': filename.encode('utf-8'),
+ 'is_image': is_image,
+ 'show': show,
+ }
if id:
values['id'] = id
query = txn.sqlrepr(Insert(xsetbg_db.sqlmeta.table, values=values))
assert id is None or row.id == id
if row.last_shown is not None:
assert row.last_shown == timestamp
- count_old += 1
+ if row.full_name == filename:
+ count_old += 1
+ else:
+ row.full_name = filename
+ count_updated += 1
+ if row.is_image != is_image:
+ row.is_image = is_image
+ if row.show != show:
+ row.show = show
dump_file.close()
-print "New images:", count_new
-print "Existing images:", count_old
+print("New images:", count_new)
+print("Existing images:", count_old)
+print("Updated images:", count_updated)