From 824e2ae59170e819c89edc5c2e47919db6ef5a30 Mon Sep 17 00:00:00 2001 From: Mateus Caruccio Date: Wed, 6 Nov 2024 20:42:11 +0000 Subject: [PATCH] Add urlparse --- urlparse | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 urlparse diff --git a/urlparse b/urlparse new file mode 100755 index 0000000..15c1a86 --- /dev/null +++ b/urlparse @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 + +import sys +from urllib.parse import urlparse, parse_qs +from collections import defaultdict + +help = f''' +Usage: + {sys.argv[0]} [URL] [PRINT_FORMAT] + +Valid format: + scheme, netloc, path, params, query, fragment, username, password, hostname, port + +Example: + $ {sys.argv[0]} "http://docs.python.org:80/3/library/urllib.parse.html?highlight=params#url-parsing" "{{query[highlight]}} (port={{port}})" + docs.python.org:80 -> params (port=80) +''' + +try: + url, fmt = sys.argv[1:3] +except ValueError: + print(help) + sys.exit(1) + +if '://' not in url: + url = '//' + url + +u = urlparse(url) +query = defaultdict(str, { k : v[0] for k, v in parse_qs(u.query).items() }) + +#print(u) +#print(query) +#print(query['ref']) + +s = fmt.format( + scheme=u.scheme or '', + netloc=u.netloc or '', + path=u.path or '', + params=u.params or '', + query=query, + fragment=u.fragment or '', + username=u.username or '', + password=u.password or '', + hostname=u.hostname or '', + port=u.port or '' +) + +print(s)