]> git.phdru.name Git - xsetbg.git/blobdiff - rescan_fs.py
Fix(DB): Fix column encoding
[xsetbg.git] / rescan_fs.py
index 0abed44c1b3feaec860317f64ee930138570ac05..24302fea4966a2f7259077ac8d24e65813dea435 100755 (executable)
@@ -9,8 +9,11 @@ This file is a part of XSetBg.
 
 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
 
@@ -49,7 +52,7 @@ 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],
+    return not subprocess.call(['identify', full_path.encode(fs_encoding)],
                                stdout=NULL, stderr=subprocess.STDOUT)
 
 
@@ -58,11 +61,13 @@ with SQLiteMassInsert() as txn:
         # 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'),
+                    values = {'full_name': full_name,
                               'is_image': is_image(full_name),
                               'flag': True,
                               }