42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
|
#!/usr/bin/env python3
|
||
|
from xmltodict import parse
|
||
|
from nntpdl import get_file
|
||
|
|
||
|
def get_files(nzb_dict):
|
||
|
out = {}
|
||
|
for f in nzb_dict["nzb"]["file"]:
|
||
|
fn = f["@subject"].split('"')[1]
|
||
|
|
||
|
if type(f["segments"]["segment"]) is not list:
|
||
|
segments = [f["segments"]["segment"]["#text"]]
|
||
|
sizes = [f["segments"]["segment"]["@bytes"]]
|
||
|
else:
|
||
|
segments = []
|
||
|
sizes = []
|
||
|
for segment in f["segments"]["segment"]:
|
||
|
segments.append(segment["#text"])
|
||
|
sizes.append(int(segment["@bytes"]))
|
||
|
|
||
|
if type(f["groups"]["group"]) is not list:
|
||
|
out[fn] = (f["groups"]["group"], segments, sizes)
|
||
|
else:
|
||
|
out[fn] = ( [g["#text"] for g in f["groups"]["group"]], segments, sizes)
|
||
|
return out
|
||
|
|
||
|
def main():
|
||
|
from argparse import ArgumentParser
|
||
|
parser = ArgumentParser()
|
||
|
parser.add_argument("nzb")
|
||
|
args = parser.parse_args()
|
||
|
with open(args.nzb) as f:
|
||
|
data = parse(f.read())
|
||
|
files = get_files(data)
|
||
|
for k,v in files.items():
|
||
|
print(f"downloading {k}")
|
||
|
get_file(v[1], group=v[0], filename=k, sizes=v[2])
|
||
|
return 0
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
from sys import exit
|
||
|
exit(main())
|