#!/usr/bin/python import sys, getopt import manga.lib, manga.reader, manga.profile, manga.local import glib, gobject, gtk gobject.threads_init() gtk.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 -s LIBRARY NAME\n") libname = None search = False profile = "" alias = None opts, args = getopt.getopt(sys.argv[1:], "hl:sp:a:") for o, a in opts: if o == "-h": usage(sys.stdout) sys.exit(0) elif o == "-l": libname = a elif o == "-a": alias = a elif o == "-s": search = True elif o == "-p": if a == "": profile = None else: profile = a if profile == "": try: profile = manga.profile.profile.last() except KeyError: profile = manga.profile.profile.byname("default") elif profile is not None: profile = manga.profile.profile.byname(profile) if search: if len(args) < 2: usage(sys.stderr) sys.exit(1) try: lib = manga.lib.findlib(args[0]) except ImportError: sys.stderr.write("automanga: no such library: %s\n" % args[0]) sys.exit(1) for manga in lib.byname(args[1]): sys.stdout.write("\"%s\": %s\n" % (manga.name, manga.id)) sys.exit(0) if alias and (alias.find('=') > 0): alias, nm = alias.split('=', 1) if not ':' in nm: usage(sys.stderr) sys.exit(1) libname, mid = nm.split(':', 1) try: lib = manga.lib.findlib(libname) except ImportError: sys.stderr.write("automanga: no such library: %s\n" % libname) sys.exit(1) try: mng = lib.byid(mid) except KeyError: sys.stderr.write("automanga: no such manga: %s\n" % mid) sys.exit(1) profile.setalias(alias, libname, mng.id) sys.exit(0) if alias: try: libname, mid = profile.getalias(alias) except KeyError: sys.stderr("automanga: no such alias: %s\n" % alias) sys.exit(1) try: lib = manga.lib.findlib(libname) except ImportError: sys.stderr.write("automanga: no such library: %s\n" % libname) sys.exit(1) try: mng = lib.byid(mid) except KeyError: sys.stderr.write("automanga: manga no longer found: %s\n" % mid) sys.exit(1) elif libname is not None: if len(args) < 1: usage(sys.stderr) sys.exit(1) try: lib = manga.lib.findlib(libname) except ImportError: 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]) sys.exit(1) else: libname = "local" try: if len(args) > 0: mdir = args[0] else: mdir = "." mng = manga.local.manga(mdir) except TypeError: sys.stderr.write("automanga: not a valid manga directory: %s\n" % mdir) sys.exit(1) mprof = None if profile is None else profile.getmanga(libname, mng.id, True) if profile is not None: profile.setlast() reader = manga.reader.reader(mng, mprof) reader.show() gtk.main()