Skip to content

Instantly share code, notes, and snippets.

@moonexpr
Created December 27, 2022 23:16
Show Gist options
  • Save moonexpr/69e2330d8895f2266300cbd37d2c7639 to your computer and use it in GitHub Desktop.
Save moonexpr/69e2330d8895f2266300cbd37d2c7639 to your computer and use it in GitHub Desktop.
Uploads a file to https://0x0.st
#!/usr/bin/env python3
import requests
import sys
def dbgoff():
sys.tracebacklimit = 0
def dbgon():
sys.tracebacklimit = 1
def parse_args():
try:
# argparse: attempt to nicely parse our arguments #
import argparse
parser = argparse.ArgumentParser(
prog = 'upload',
description = 'Uploads files to https://0x0.st/ passes from arg.'
)
parser.add_argument('-s', '--secret')
parser.add_argument('-E', '--expires')
parser.add_argument('filename')
args = parser.parse_args()
return {
'filename': args.filename,
'secret': args.secret,
'expires': args.expires
}
# argparse #
except ModuleNotFoundError:
return {
'filename': sys.argv[max(0, len(sys.argv) - 1)],
'secret': None,
'expires': None
}
args = parse_args()
dbgoff()
req = None
with open(args['filename'], 'r') as file:
files = {'file': file}
headers = {}
if not args['secret'] is None:
headers['secret'] = args['secret']
if not args['expires'] is None:
# arrow: attempt to parse expires using human friendly time format.
try:
import arrow
headers['expires'] = str(arrow.now().dehumanize(args['expires']).int_timestamp)
except ModuleNotFoundError:
print('W: \'Arrow\' dateimte module is not installed, interpreting expires literally.')
headers['expires'] = int(args['expires'])
req = requests.post('https://0x0.st/', files=files, headers=headers)
dbgon()
def success(req):
print(req.text)
# pyperclip: attempt to copy to clipboard #
try:
import pyperclip
pyperclip.copy(req.text)
print('The URL has been copied to your clipboard.')
except ModuleNotFoundError:
pass
# pyperclip #
sys.exit(0)
def fail(req):
print('0x0.st: ', file=sys.stderr, end='')
print(req.text, file=sys.stderr)
sys.exit(1)
if 200 <= req.status_code <= 299:
success(req)
else:
fail(req)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment