X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=automanga;h=bb6c4d5f1ca331f688966d19958b76c0f1128886;hb=e4aeea7390c65e0f0328690b3ea75737f0ccc6af;hp=d6eddeba09e82941444ecd437ac8f3961b942d67;hpb=299d3f50467a6e719819ca95e7f5416a16b535fc;p=automanga.git diff --git a/automanga b/automanga index d6eddeb..bb6c4d5 100755 --- a/automanga +++ b/automanga @@ -1,22 +1,26 @@ -#!/usr/bin/python +#!/usr/bin/python3 import sys, getopt import manga.lib, manga.reader, manga.profile, manga.local -import glib, gobject, gtk +from gi.repository import Gtk, Gdk, GObject -gobject.threads_init() -gtk.gdk.threads_init() +GObject.threads_init() +Gdk.threads_init() 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") libname = None search = None profile = "" alias = None -opts, args = getopt.getopt(sys.argv[1:], "hl:sSp:a:") +settags = False +listtag = None +opts, args = getopt.getopt(sys.argv[1:], "hl:sSp:a:tL:") for o, a in opts: if o == "-h": usage(sys.stdout) @@ -34,6 +38,10 @@ for o, a in opts: profile = None else: profile = a + elif o == "-t": + settags = True + elif o == "-L": + listtag = a if profile == "": try: profile = manga.profile.profile.last() @@ -43,6 +51,8 @@ elif profile is not None: profile = manga.profile.profile.byname(profile) def main(): + global libname + if search: if len(args) < 2: usage(sys.stderr) @@ -66,8 +76,19 @@ def main(): sys.stdout.write("\"%s\": %s\n" % (mng.name, mng.id)) return + if listtag is not None: + if profile is not None: + for mprof in profile.bytag(listtag): + try: + mng = mprof.open() + except KeyError: + sys.stderr.write("%s %s: no longer found\n" % (mprof.libnm, mprof.id)) + continue + sys.stdout.write("%s %s: \"%s\"\n" % (mprof.libnm, mprof.id, mng.name)) + return + if alias and (alias.find('=') > 0): - alias, nm = alias.split('=', 1) + tgt, nm = alias.split('=', 1) if not ':' in nm: usage(sys.stderr) sys.exit(1) @@ -79,17 +100,17 @@ def main(): sys.exit(1) try: mng = lib.byid(mid) - except KeyError: - sys.stderr.write("automanga: no such manga: %s\n" % mid) + except KeyError as e: + sys.stderr.write("automanga: no such manga: %s\n" % str(e)) sys.exit(1) - profile.setalias(alias, libname, mng.id) + profile.setalias(tgt, libname, mng.id) return if alias: 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) @@ -111,15 +132,15 @@ def main(): sys.stderr.write("automanga: no such library: %s\n" % libname) sys.exit(1) try: - mng = lib.byid(args[0]) - except KeyError: - sys.stderr.write("automanga: no such manga: %s\n" % args[0]) + mng = lib.byid(args.pop(0)) + except KeyError as e: + sys.stderr.write("automanga: no such manga: %s\n" % str(e)) sys.exit(1) else: libname = "local" try: if len(args) > 0: - mdir = args[0] + mdir = args.pop(0) else: mdir = "." mng = manga.local.manga(mdir) @@ -131,9 +152,17 @@ def main(): if profile is not None: profile.setlast() + if settags: + if mprof is not None: + ntags = [tag for tag in args if tag[:1] != "-"] + rtags = [tag[1:] for tag in args if tag[:1] == "-"] + 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()