from urllib.parse import urlparse def urlparse_w(url): parseresult = urlparse(url) splitted_path = parseresult.path.split('/') # add some more metadata gitea_username = splitted_path[1] gitea_reponame = splitted_path[2] return { "raw": parseresult, "username": gitea_username, "reponame": gitea_reponame, } class GiteaRepo: def __init__(self, urlspec): """ Return a GiteaRepo from a urlspec (see urllib.parse.ParseResult) and some other metadata For implementation details, see urlparse_w. If you want to take an actual url, use the .from_url classmethod. """ self.urlspec = urlspec @classmethod def from_url(cls, url): """ Return a GiteaRepo from a url. """ parsed = urlparse_w(url) return cls(parsed)