From 9c73fd456403d1eb1dca034dd1321ae881b689db Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Mon, 20 Aug 2018 17:49:33 +0300 Subject: [PATCH] Feat: Update `is_image` --- rescan_fs.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/rescan_fs.py b/rescan_fs.py index 07d3fa3..1b74f8f 100755 --- a/rescan_fs.py +++ b/rescan_fs.py @@ -8,6 +8,7 @@ This file is a part of XSetBg. """ import os +import subprocess from sqlobject import SQLObjectNotFound from sqlobject.sqlbuilder import Insert, Update, Delete from xsetbg_conf import xsetbg_dir, xsetbg_conf @@ -43,6 +44,15 @@ fs_encoding = xsetbg_conf.get("images", "fs_encoding") xsetbg_db = recreate_db() count_new = count_old = count_del = 0 +NULL = open(os.devnull, 'w') + + +def is_image(full_path): + # Run `identify` from ImageMagic; convert retcode to bool + return not subprocess.call(['identify', full_path], + stdout=NULL, stderr=subprocess.STDOUT) + + with SQLiteMassInsert() as txn: for image_dir in image_dirs: # List images in all subdirectories @@ -53,12 +63,16 @@ with SQLiteMassInsert() as txn: row = xsetbg_db.byFull_name(full_name) except SQLObjectNotFound: values = {'full_name': full_name.encode('utf-8'), - 'flag': True} + 'is_image': is_image(full_name), + 'flag': True, + } query = txn.sqlrepr(Insert(xsetbg_db.sqlmeta.table, values=values)) txn.query(query) count_new += 1 else: + if row.is_image is None: + row.is_image = is_image(full_name) row.flag = True count_old += 1 count_del = xsetbg_db.select('flag IS NULL').count() @@ -67,6 +81,7 @@ with SQLiteMassInsert() as txn: query = txn.sqlrepr(Update(xsetbg_db.sqlmeta.table, {'flag': None})) txn.query(query) +NULL.close() print "New images:", count_new print "Existing images:", count_old print "Removed images:", count_del -- 2.39.5