X-Git-Url: http://dolda2000.com/gitweb/?p=automanga.git;a=blobdiff_plain;f=automanga;h=39262a75e1912cd0f3a3370577f9cb38d86844ca;hp=8fad81758b93a560e0f6bd87cf619d18b8e15e3b;hb=HEAD;hpb=5c000565c156ae32de0480e83d98f12e65f14f03 diff --git a/automanga b/automanga index 8fad817..6e51e29 100755 --- a/automanga +++ b/automanga @@ -1,18 +1,15 @@ -#!/usr/bin/python +#!/usr/bin/python3 -import sys, getopt +import sys, getopt, pathlib import manga.lib, manga.reader, manga.profile, manga.local -import glib, gobject, gtk - -gobject.threads_init() -gtk.gdk.threads_init() +from gi.repository import Gtk, Gdk, GObject def usage(out): out.write("usage: automanga [-h] [-p PROFILE] {DIRECTORY|-l LIBRARY ID|-a ALIAS}\n") out.write(" automanga -a ALIAS=LIBRARY:ID\n") out.write(" automanga -t {DIRECTORY|-l LIBRARY ID|-a ALIAS} [-]TAG...\n") out.write(" automanga -{s|S} LIBRARY NAME\n") - out.write(" automanga -L TAG\n") + out.write(" automanga -L TAG [-o ORDER]\n") libname = None search = None @@ -20,7 +17,8 @@ profile = "" alias = None settags = False listtag = None -opts, args = getopt.getopt(sys.argv[1:], "hl:sSp:a:tL:") +listorder = None +opts, args = getopt.getopt(sys.argv[1:], "hl:sSp:a:tL:o:") for o, a in opts: if o == "-h": usage(sys.stdout) @@ -42,6 +40,8 @@ for o, a in opts: settags = True elif o == "-L": listtag = a + elif o == "-o": + listorder = a if profile == "": try: profile = manga.profile.profile.last() @@ -78,9 +78,30 @@ def main(): if listtag is not None: if profile is not None: + results = [] for mprof in profile.bytag(listtag): - mng = mprof.open() - sys.stdout.write("%s %s: \"%s\"\n" % (mprof.libnm, mprof.id, mng.name)) + try: + mng = mprof.open() + except KeyError: + sys.stderr.write("%s %s: no longer found\n" % (mprof.libnm, mprof.id)) + continue + except Exception as exc: + sys.stderr.write("%s %s: unexpected error: %s\n" % (mprof.libnm, mprof.id, str(exc))) + continue + line = "%s %s: \"%s\"" % (mprof.libnm, mprof.id, mng.name) + if listorder is None: + sys.stdout.write("%s\n" % (line,)) + else: + if listorder == "mtime": + key = -mprof.mtime() + else: + sys.stderr.write("automanga: undefined order: %s\n" % (listorder,)) + sys.exit(1) + results.append((line, key)) + if len(results) > 0: + results.sort(key=lambda o: o[1]) + for line, key in results: + sys.stdout.write("%s\n" % (line,)) return if alias and (alias.find('=') > 0): @@ -106,7 +127,7 @@ def main(): try: libname, mid = profile.getalias(alias) except KeyError: - sys.stderr("automanga: no such alias: %s\n" % alias) + sys.stderr.write("automanga: no such alias: %s\n" % alias) sys.exit(1) try: lib = manga.lib.findlib(libname) @@ -135,11 +156,11 @@ def main(): else: libname = "local" try: - if len(args) > 0: - mdir = args.pop(0) - else: - mdir = "." - mng = manga.local.manga(mdir) + if len(args) < 1: + usage(sys.stderr) + sys.exit(1) + mdir = args.pop(0) + mng = manga.local.manga(pathlib.Path(mdir)) except TypeError: sys.stderr.write("automanga: not a valid manga directory: %s\n" % mdir) sys.exit(1) @@ -152,14 +173,13 @@ def main(): if mprof is not None: ntags = [tag for tag in args if tag[:1] != "-"] rtags = [tag[1:] for tag in args if tag[:1] == "-"] - print ntags, rtags if ntags: mprof.tags.add(*ntags) if rtags: mprof.tags.remove(*rtags) return reader = manga.reader.reader(mng, mprof) reader.show() - gtk.main() + Gtk.main() try: main()