Fixed progressbar bug.
[automanga.git] / automanga
CommitLineData
e26514bb
FT
1#!/usr/bin/python
2
3import sys, getopt
012c4cae 4import manga.lib, manga.reader, manga.profile, manga.local
e26514bb
FT
5import glib, gobject, gtk
6
7gobject.threads_init()
8gtk.gdk.threads_init()
9
10def usage(out):
271d68da
FT
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")
e26514bb
FT
14
15libname = None
16search = False
012c4cae 17profile = ""
271d68da
FT
18alias = None
19opts, args = getopt.getopt(sys.argv[1:], "hl:sp:a:")
e26514bb
FT
20for o, a in opts:
21 if o == "-h":
22 usage(sys.stdout)
23 sys.exit(0)
24 elif o == "-l":
25 libname = a
271d68da
FT
26 elif o == "-a":
27 alias = a
e26514bb
FT
28 elif o == "-s":
29 search = True
012c4cae
FT
30 elif o == "-p":
31 if a == "":
32 profile = None
33 else:
34 profile = a
35if profile == "":
36 try:
37 profile = manga.profile.profile.last()
38 except KeyError:
39 profile = manga.profile.profile.byname("default")
40elif profile is not None:
41 profile = manga.profile.profile.byname(profile)
e26514bb
FT
42
43if search:
44 if len(args) < 2:
45 usage(sys.stderr)
46 sys.exit(1)
47 try:
31ea855c
FT
48 lib = manga.lib.findlib(args[0])
49 except ImportError:
e26514bb
FT
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
271d68da
FT
56if 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)
1caa1dca 72 profile.setalias(alias, libname, mng.id)
271d68da
FT
73 sys.exit(0)
74
75if 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)
91elif libname is not None:
e26514bb
FT
92 if len(args) < 1:
93 usage(sys.stderr)
94 sys.exit(1)
95 try:
31ea855c
FT
96 lib = manga.lib.findlib(libname)
97 except ImportError:
e26514bb
FT
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)
105else:
012c4cae 106 libname = "local"
462b7343
FT
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)
e26514bb 116
7f4e185b 117mprof = None if profile is None else profile.getmanga(libname, mng.id, True)
012c4cae
FT
118if profile is not None:
119 profile.setlast()
120
7f4e185b 121reader = manga.reader.reader(mng, mprof)
e26514bb
FT
122reader.show()
123gtk.main()