import requests, json, time, argparse, sys, os from PIL import Image from io import BytesIO parser = argparse.ArgumentParser() parser.add_argument('-u', type=str, required=True) parser.add_argument('-o', type=str, required=True) args = parser.parse_args() r = requests.get(args.u + ".json") print("Got main request from " + args.u + ".json" ) rjson = r.json() board = args.u.split("/")[3] for i in rjson['posts']: if "ext" in i: ir = requests.get("https://i.4cdn.org/" + board + "/" + str(i['tim']) + i['ext']) print("Got post request for: " + board + "/" + str(i['tim']) + i['ext']) bstream = BytesIO(ir.content) try: ir = requests.get("https://i.4cdn.org/" + board + "/" + str(i['tim']) + i['ext']) im = Image.open(bstream) print("Converted bytes to image") im.save(args.o + "/" + board + "-" + str(i['tim']) + i['ext']) print("Saved image: " + board + "-" + str(i['tim']) + i['ext']) except KeyboardInterrupt: print('Closing') try: sys.exit(130) except SystemExit: os._exit(130) except: try: with open(args.o + "/" + board + str(i['tim']) + i['ext'], 'wb') as f: f.write(bstream.getbuffer()) f.close() print("Saved video: " + board + "-" + str(i['tim']) + i['ext']) except Exception as err: print("Cant convert data to image or video maybe not an image or video format") print("NO: " + str(i['no'])) print(err) time.sleep(1) print("Done!!")