First commit

This commit is contained in:
2023-12-07 09:52:04 +01:00
commit d5960063f4
3 changed files with 70 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
venv/
.idea/

66
main.py Normal file
View File

@@ -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"])

2
requirements.txt Normal file
View File

@@ -0,0 +1,2 @@
pytimeparse
requests