Fixed progressbar bug.
[automanga.git] / automanga
1 #!/usr/bin/python
2
3 import sys, getopt
4 import manga.lib, manga.reader, manga.profile, manga.local
5 import glib, gobject, gtk
6
7 gobject.threads_init()
8 gtk.gdk.threads_init()
9
10 def usage(out):
11     out.write("usage: automanga [-h] [-p PROFILE] {DIRECTORY|-l LIBRARY ID|-a ALIAS}\n")
12     out.write("       automanga -a ALIAS=LIBRARY:ID\n")
13     out.write("       automanga -s LIBRARY NAME\n")
14
15 libname = None
16 search = False
17 profile = ""
18 alias = None
19 opts, args = getopt.getopt(sys.argv[1:], "hl:sp:a:")
20 for o, a in opts:
21     if o == "-h":
22         usage(sys.stdout)
23         sys.exit(0)
24     elif o == "-l":
25         libname = a
26     elif o == "-a":
27         alias = a
28     elif o == "-s":
29         search = True
30     elif o == "-p":
31         if a == "":
32             profile = None
33         else:
34             profile = a
35 if profile == "":
36     try:
37         profile = manga.profile.profile.last()
38     except KeyError:
39         profile = manga.profile.profile.byname("default")
40 elif profile is not None:
41     profile = manga.profile.profile.byname(profile)
42
43 if search:
44     if len(args) < 2:
45         usage(sys.stderr)
46         sys.exit(1)
47     try:
48         lib = manga.lib.findlib(args[0])
49     except ImportError:
50         sys.stderr.write("automanga: no such library: %s\n" % args[0])
51         sys.exit(1)
52     for manga in lib.byname(args[1]):
53         sys.stdout.write("\"%s\": %s\n" % (manga.name, manga.id))
54     sys.exit(0)
55
56 if alias and (alias.find('=') > 0):
57     alias, nm = alias.split('=', 1)
58     if not ':' in nm:
59         usage(sys.stderr)
60         sys.exit(1)
61     libname, mid = nm.split(':', 1)
62     try:
63         lib = manga.lib.findlib(libname)
64     except ImportError:
65         sys.stderr.write("automanga: no such library: %s\n" % libname)
66         sys.exit(1)
67     try:
68         mng = lib.byid(mid)
69     except KeyError:
70         sys.stderr.write("automanga: no such manga: %s\n" % mid)
71         sys.exit(1)
72     profile.setalias(alias, libname, mng.id)
73     sys.exit(0)
74
75 if alias:
76     try:
77         libname, mid = profile.getalias(alias)
78     except KeyError:
79         sys.stderr("automanga: no such alias: %s\n" % alias)
80         sys.exit(1)
81     try:
82         lib = manga.lib.findlib(libname)
83     except ImportError:
84         sys.stderr.write("automanga: no such library: %s\n" % libname)
85         sys.exit(1)
86     try:
87         mng = lib.byid(mid)
88     except KeyError:
89         sys.stderr.write("automanga: manga no longer found: %s\n" % mid)
90         sys.exit(1)
91 elif libname is not None:
92     if len(args) < 1:
93         usage(sys.stderr)
94         sys.exit(1)
95     try:
96         lib = manga.lib.findlib(libname)
97     except ImportError:
98         sys.stderr.write("automanga: no such library: %s\n" % libname)
99         sys.exit(1)
100     try:
101         mng = lib.byid(args[0])
102     except KeyError:
103         sys.stderr.write("automanga: no such manga: %s\n" % args[0])
104         sys.exit(1)
105 else:
106     libname = "local"
107     try:
108         if len(args) > 0:
109             mdir = args[0]
110         else:
111             mdir = "."
112         mng = manga.local.manga(mdir)
113     except TypeError:
114         sys.stderr.write("automanga: not a valid manga directory: %s\n" % mdir)
115         sys.exit(1)
116
117 mprof = None if profile is None else profile.getmanga(libname, mng.id, True)
118 if profile is not None:
119     profile.setlast()
120
121 reader = manga.reader.reader(mng, mprof)
122 reader.show()
123 gtk.main()