-#! /usr/bin/env python
+#! /usr/bin/env python3
"""Rescan filesystem and update database
Rescan images directories; remove unknown images from DB; add new images.
import os
import subprocess
+
from sqlobject import SQLObjectNotFound
from sqlobject.sqlbuilder import Insert, Update, Delete
+from m_lib.defenc import default_encoding
+
from xsetbg_conf import xsetbg_dir, xsetbg_conf
from xsetbg_db import recreate_db, SQLiteMassInsert
def is_image(full_path):
# Run `identify` from ImageMagic; convert retcode to bool
- return not subprocess.call(['identify', full_path],
+ return not subprocess.call(['identify', full_path.encode(fs_encoding)],
stdout=NULL, stderr=subprocess.STDOUT)
# List images in all subdirectories
for dirpath, dirs, files in os.walk(image_dir):
for file in files:
- full_name = os.path.join(dirpath, file).decode(fs_encoding)
+ if default_encoding != fs_encoding:
+ file = file.encode().decode(fs_encoding)
+ full_name = os.path.join(dirpath, file)
try:
row = xsetbg_db.byFull_name(full_name)
except SQLObjectNotFound:
- values = {'full_name': full_name.encode('utf-8'),
- 'is_image': is_image(full_name),
+ image_and_show = is_image(full_name)
+ values = {'full_name': full_name,
+ 'is_image': image_and_show,
'flag': True,
+ 'show': image_and_show,
}
query = txn.sqlrepr(Insert(xsetbg_db.sqlmeta.table,
values=values))
count_new += 1
else:
if row.is_image is None:
- row.is_image = is_image(full_name)
+ row.is_image = image_and_show = is_image(full_name)
+ row.show = image_and_show
row.flag = True
count_old += 1
count_del = xsetbg_db.select('flag IS NULL').count()