]> git.phdru.name Git - xsetbg.git/blobdiff - print-filename.py
Decode filename to unicode, encode to utf-8 for Insert
[xsetbg.git] / print-filename.py
index 583f54a3b669aeeabe9795bd820e597528a8e16f..1a448d345b62eabc45a95cd76aa9ef3f34896809 100755 (executable)
@@ -7,66 +7,62 @@ This file is a part of XSetBg.
 
 """
 
-__version__ = "$Revision$"[11:-2]
-__revision__ = "$Id$"[5:-2]
-__date__ = "$Date$"[7:-2]
-
 __author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2004-2010 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2004-2015 PhiloSoft Design"
 __license__ = "GNU GPL"
 
 
-import sys, os, shelve
+import sys
+from xsetbg_db import xsetbg_db
+
+if not xsetbg_db:
+    sys.exit("Error: no database found")
 
 
 def usage(code=0):
-   sys.stderr.write("Usage: %s [-o|--old]\n" % sys.argv[0])
-   sys.exit(code)
+    sys.stderr.write("Usage: %s [-o|--old]\n" % sys.argv[0])
+    sys.exit(code)
 
 
 def get_args():
-   from getopt import getopt, GetoptError
-
-   try:
-      options, arguments = getopt(sys.argv[1:], "ho", ["help", "old"])
-   except GetoptError:
-      usage(1)
-
-   old = False
-
-   for option, value in options:
-      if option in ("-h", "--help"):
-         usage()
-      elif option in ("-o", "--old"):
-         old = True
-      else:
-         usage(2)
+    from getopt import getopt, GetoptError
 
-   if arguments:
-      usage(3)
+    try:
+        options, arguments = getopt(sys.argv[1:], "he:o",
+                                    ["help", "output-encoding=", "old"])
+    except GetoptError:
+        usage(1)
 
-   return old
+    old = False
+    output_encoding = None
 
-old = get_args()
+    for option, value in options:
+        if option in ("-h", "--help"):
+            usage()
+        elif option in ("-e", "--output-encoding"):
+            output_encoding = value
+        elif option in ("-o", "--old"):
+            old = True
+        else:
+            usage(2)
 
+    if arguments:
+        usage(3)
 
-xsetbg_dir = os.path.join(os.environ["HOME"], "lib", "xsetbg")
-os.chdir(xsetbg_dir)
+    if output_encoding is None:
+        from m_lib.defenc import default_encoding
+        output_encoding = default_encoding
+    return old, output_encoding
 
-global_db_name = "xsetbg.db"
-filename_key = "filename"
-old_filename_key = "old_filename"
+old, output_encoding = get_args()
 
 
-global_db = shelve.open(global_db_name, flag='r')
 if old:
-   key = old_filename_key
+    index = 1
 else:
-   key = filename_key
-filename = global_db[key]
-global_db.close()
+    index = 0
 
-from m_lib.defenc import default_encoding
-filename = unicode(filename, default_encoding)
+filename = xsetbg_db.select('last_shown IS NOT NULL',
+                            orderBy='-last_shown')[index].full_name
 
-print filename.encode(default_encoding)
+print filename.encode(output_encoding)