ret = ""
si = 0
fp = 0
+ stack = list(zip([t for t, i in page.stack], [t for t, i in page.stack[1:]] + [page], [i for t, i in page.stack]))
while True:
p = pattern.find('%', fp)
if p < 0:
- if si < len(page.stack):
+ if si < len(stack):
sys.stderr.write("getmanga: pattern %s did not match page %s\n" %
- (pattern, "/".join(t.name for t, i in page.stack)))
+ (pattern, "/".join(c.name for t, c, i in stack)))
sys.exit(1)
return ret + pattern[fp:]
ret += pattern[fp:p]
- m = pattern[p:p + 1]
+ m = pattern[p + 1:p + 2]
+ fp = p + 2
if m == "%":
ret += "%"
else:
- if si >= len(page.stack):
+ if si >= len(stack):
sys.stderr.write("getmanga: pattern %s did not match page %s\n" %
- (pattern, "/".join(t.name for t, i in page.stack)))
+ (pattern, "/".join(c.name for t, c, i in stack)))
sys.exit(1)
- t, ti = page.stack[si]
+ t, ct, ti = stack[si]
si += 1
if m == "i":
ret += "%0*i" % (digits(len(t) + 1), ti + 1)
elif m == "n":
- ret += t.name
+ ret += ct.name
elif m == "d":
- ret += t.id
+ ret += ct.id
else:
- sys.stderr.write("getmanga: %s: unknown specified `%s'\n" % (m))
+ sys.stderr.write("getmanga: %s: unknown specifier `%s'\n" % (pattern, m))
sys.exit(1)
def download(mng, tdir, pattern):
time.sleep(cwait)
def usage(out):
- out.write("usage: getmanga [-hv] [-w WAIT] [-p PROFILE] DIRECTORY [LIBRARY ID]\n")
+ out.write("usage: getmanga [-hv] [-w WAIT] [-p PROFILE] [-P PATTERN] DIRECTORY [LIBRARY ID]\n")
def main():
global verbose, wait, mprof, props
- opts, args = getopt.getopt(sys.argv[1:], "hvp:w:")
+ opts, args = getopt.getopt(sys.argv[1:], "hvp:w:P:")
profnm = ""
+ pattern = None
for o, a in opts:
if o == "-h":
usage(sys.stdout)
verbose += 1
elif o == "-w":
wait = int(a)
+ elif o == "-P":
+ pattern = a
if len(args) < 1:
usage(sys.stderr)
sys.exit(1)
sys.exit(1)
mprof = profile.getmanga(libnm, mng.id)
- download(mprof.open(), tdir, getprop("pattern"))
+ download(mprof.open(), tdir, pattern or getprop("pattern"))
if __name__ == "__main__":
try: