Skip to content

Commit

Permalink
Add urlparse
Browse files Browse the repository at this point in the history
  • Loading branch information
caruccio committed Nov 6, 2024
1 parent 5ede3a7 commit 824e2ae
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions urlparse
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit 824e2ae

Please sign in to comment.