From d5960063f43cfbf171ade6ef12e9afd1cbbe0558 Mon Sep 17 00:00:00 2001 From: Heufneutje Date: Thu, 7 Dec 2023 09:52:04 +0100 Subject: [PATCH] First commit --- .gitignore | 2 ++ main.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 2 ++ 3 files changed, 70 insertions(+) create mode 100644 .gitignore create mode 100644 main.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4e0bbdf --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +venv/ +.idea/ diff --git a/main.py b/main.py new file mode 100644 index 0000000..3ca6bf5 --- /dev/null +++ b/main.py @@ -0,0 +1,66 @@ +import json +import requests +from argparse import ArgumentParser +from pytimeparse.timeparse import timeparse + +base_url = "https://paste.heufneutje.net/" + + +def upload(filename, sunset): + with open(filename, "rb") as file: + files = {"c": file} + data = {} + headers = {"Accept": "application/json"} + sunset_seconds = timeparse(sunset) + + if sunset_seconds and sunset_seconds > 0: + data["sunset"] = sunset_seconds + + return requests.post(base_url, files=files, data=data, headers=headers) + pass + + +def delete(uuid): + headers = {"Accept": "application/json"} + url = f"{base_url}{uuid}" + return requests.delete(url, headers=headers) + + +def try_load_json(myjson): + try: + return json.loads(myjson) + except ValueError: + return None + + +if __name__ == '__main__': + parser = ArgumentParser(prog="PBUploader", description="A tool for uploading to a pb instance.") + group = parser.add_argument_group("Main options", f"The main options for interacting with {base_url}.") + required_group = group.add_mutually_exclusive_group(required=True) + required_group.add_argument("-f", "--filename", help="the file to upload") + required_group.add_argument("-d", "--delete", help="uuid of the paste that should be deleted") + + group = parser.add_argument_group("Optional flags") + group.add_argument("-s", "--sunset", default="1h", + help="time to keep the file on the server (defaults to 1 hour)") + group.add_argument("-v", "--verbose", action="store_true", + help="if enabled the entire JSON result will be printed") + + args = parser.parse_args() + + if args.delete: + response = delete(args.delete) + else: + response = upload(args.filename, args.sunset) + + json_data = try_load_json(response.content) + if not json_data: + print(response.content.decode()) + elif args.verbose: + print(json.dumps(json_data, indent=4)) + elif response.status_code != 200: + print(json_data["status"]) + elif args.delete: + print(json_data["status"]) + else: + print(json_data["url"]) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..681e7ef --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +pytimeparse +requests