]> git.phdru.name Git - xsetbg.git/blobdiff - print-filename.py
Fix(DB): Fix column encoding
[xsetbg.git] / print-filename.py
index 6348f68693cce5c2015ea4eabbef259c048ba0d1..e9f217b75b46920f4561b72ce29c0ac6dfcd0cf8 100755 (executable)
@@ -1,72 +1,61 @@
-#! /usr/bin/env python
-"""Print background filename
+#! /usr/bin/env python3
+"""print(background filename)
 
-Print the filename of the current or previous background image.
+print(the filename of the current or previous background image.)
 
 This file is a part of XSetBg.
 
 """
 
-__author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2004-2014 PhiloSoft Design"
-__license__ = "GNU GPL"
-
-
-import sys, os
-from xsetbg_conf import xsetbg_conf
+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 [index]\n" % sys.argv[0])
+    sys.exit(code)
 
 
 def get_args():
-   from getopt import getopt, GetoptError
-
-   try:
-      options, arguments = getopt(sys.argv[1:], "he:o",
-                                  ["help", "output-encoding=", "old"])
-   except GetoptError:
-      usage(1)
-
-   old = False
-   output_encoding = None
-
-   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)
-
-   if output_encoding is None:
-      from m_lib.defenc import default_encoding
-      output_encoding = default_encoding
-   return old, output_encoding
-
-old, output_encoding = get_args()
-
-
-filename_key = "filename"
-old_filename_key = "old_filename"
-
-if old:
-   key = old_filename_key
-else:
-   key = filename_key
-
-filename = xsetbg_db[key]
-xsetbg_db.close()
-
-fs_encoding = xsetbg_conf.get("images", "fs_encoding")
-filename = unicode(filename, fs_encoding)
-
-print filename.encode(output_encoding)
+    from getopt import getopt, GetoptError
+
+    try:
+        options, arguments = getopt(sys.argv[1:], "he:",
+                                    ["help", "output-encoding="])
+    except GetoptError:
+        usage(1)
+
+    index = 0
+    output_encoding = None
+
+    for option, value in options:
+        if option in ("-h", "--help"):
+            usage()
+        elif option in ("-e", "--output-encoding"):
+            output_encoding = value
+        else:
+            usage(2)
+
+    if arguments:
+        if len(arguments) == 1:
+            try:
+                index = int(arguments[0])
+            except ValueError:
+                usage(3)
+        else:
+            usage(4)
+
+    if output_encoding is None:
+        from m_lib.defenc import default_encoding
+        output_encoding = default_encoding
+    return index, output_encoding
+
+
+index, output_encoding = get_args()
+filename = xsetbg_db.select('last_shown IS NOT NULL',
+                            orderBy='-last_shown')[index].full_name
+
+sys.stdout.buffer.write(filename.encode(output_encoding) + b'\n')