Dolda2000 GitWeb
/
automanga.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Provide proper referers for nelo and kakalot.
[automanga.git]
/
getmanga
diff --git
a/getmanga
b/getmanga
index
9a4fa31
..
bd8401e
100755
(executable)
--- a/
getmanga
+++ b/
getmanga
@@
-12,7
+12,7
@@
def msg(vl, msg, *args):
sys.stderr.write("getmanga: " + (msg % args) + "\n")
def getprop(nm, default=None):
sys.stderr.write("getmanga: " + (msg % args) + "\n")
def getprop(nm, default=None):
- if "dl-" + nm in mprof.props:
+ if
mprof and
"dl-" + nm in mprof.props:
return mprof.props["dl-" + nm]
if nm in props:
return props[nm]
return mprof.props["dl-" + nm]
if nm in props:
return props[nm]
@@
-37,33
+37,35
@@
def expand(pattern, page):
ret = ""
si = 0
fp = 0
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:
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" %
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]
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 m == "%":
ret += "%"
else:
- if si >= len(
page.
stack):
+ if si >= len(stack):
sys.stderr.write("getmanga: pattern %s did not match page %s\n" %
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)
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":
si += 1
if m == "i":
ret += "%0*i" % (digits(len(t) + 1), ti + 1)
elif m == "n":
- ret += t.name
+ ret +=
c
t.name
elif m == "d":
elif m == "d":
- ret += t.id
+ ret +=
c
t.id
else:
else:
- sys.stderr.write("getmanga: %s: unknown specifie
d `%s'\n" % (
m))
+ sys.stderr.write("getmanga: %s: unknown specifie
r `%s'\n" % (pattern,
m))
sys.exit(1)
def download(mng, tdir, pattern):
sys.exit(1)
def download(mng, tdir, pattern):
@@
-81,11
+83,17
@@
def download(mng, tdir, pattern):
msg(1, "getting %s...", nm)
with page.open() as fp:
with open(path, "wb") as out:
msg(1, "getting %s...", nm)
with page.open() as fp:
with open(path, "wb") as out:
- while True:
- data = fp.read(65536)
- if data == b"":
- break
- out.write(data)
+ done = False
+ try:
+ while True:
+ data = fp.read(65536)
+ if data == b"":
+ done = True
+ break
+ out.write(data)
+ finally:
+ if not done:
+ os.unlink(path)
try:
img = Image.open(path)
except OSError:
try:
img = Image.open(path)
except OSError:
@@
-102,13
+110,18
@@
def download(mng, tdir, pattern):
time.sleep(cwait)
def usage(out):
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")
+ out.write("\tpattern templates:\n")
+ out.write("\t %i\tSequence number\n")
+ out.write("\t %n\tName\n")
+ out.write("\t %d\tID\n")
def main():
global verbose, wait, mprof, props
def main():
global verbose, wait, mprof, props
- opts, args = getopt.getopt(sys.argv[1:], "hvp:w:")
- profnm = ""
+ opts, args = getopt.getopt(sys.argv[1:], "hvp:w:P:")
+ profnm = None
+ pattern = None
for o, a in opts:
if o == "-h":
usage(sys.stdout)
for o, a in opts:
if o == "-h":
usage(sys.stdout)
@@
-119,6
+132,8
@@
def main():
verbose += 1
elif o == "-w":
wait = int(a)
verbose += 1
elif o == "-w":
wait = int(a)
+ elif o == "-P":
+ pattern = a
if len(args) < 1:
usage(sys.stderr)
sys.exit(1)
if len(args) < 1:
usage(sys.stderr)
sys.exit(1)
@@
-132,14
+147,16
@@
def main():
props = {}
if os.path.exists(pfile):
with open(pfile, "r") as fp:
props = {}
if os.path.exists(pfile):
with open(pfile, "r") as fp:
- for words in
splitlines(f
):
+ for words in
manga.profile.splitlines(fp
):
if words[0] == "set" and len(words) > 2:
props[words[1]] = words[2]
elif words[0] == "lset" and len(words) > 1:
props[words[1]] = words[2:]
if words[0] == "set" and len(words) > 2:
props[words[1]] = words[2]
elif words[0] == "lset" and len(words) > 1:
props[words[1]] = words[2:]
- if profnm
== ""
:
+ if profnm
is None
:
profile = manga.profile.profile.last()
profile = manga.profile.profile.last()
+ elif profnm == "":
+ profile = None
else:
profile = manga.profile.profile.byname(profnm)
else:
profile = manga.profile.profile.byname(profnm)
@@
-163,9
+180,12
@@
def main():
except KeyError:
sys.stderr.write("getmanga: no such manga: %s\n" % (mid))
sys.exit(1)
except KeyError:
sys.stderr.write("getmanga: no such manga: %s\n" % (mid))
sys.exit(1)
- mprof = profile.getmanga(libnm, mng.id)
+ if profile is not None:
+ mprof = profile.getmanga(libnm, mng.id)
+ else:
+ mprof = None
- download(m
prof.open(), tdir,
getprop("pattern"))
+ download(m
ng, tdir, pattern or
getprop("pattern"))
if __name__ == "__main__":
try:
if __name__ == "__main__":
try: