from urllib.parse import urlparse class TwLink: """ Disclaimer. I have no relation with fxtwitter, nor vxtwitter, or anything else being used there. """ _user: str _post_id: str _url: str _prefix: [str] # List of valid fxshit _valid_url = False def __init__(self, url: str): self._url = url self.__review_url() self._prefix = [ "https://fxtwitter.com", "https://vxtwitter.com" ] pass def __review_url(self) -> None: """ Checks if twitter URL is a valid post. It requires: - Twitter domain. - /status/ - Username - Post ID :return: STR, returns "fixed" URL if given URL is valid. Returns nothing if isn't valid. """ valid_twitter_hosts = ["twitter.com"] parsed_url = urlparse(url=self._url) host = parsed_url.netloc path: str | [str] = parsed_url.path if path.startswith("/"): # Remove initial / path = path[1:] path = path.split("/") if host not in valid_twitter_hosts \ or len(path) > 3 \ or path[1].lower() != "status": print(f"URL '{self._url}' is NOT valid!") else: print(f"URL '{self._url}' is valid") self._valid_url = True self._user = path[0] self._post_id = path[2] @property def __return_url(self) -> str: """ Returns the URL if the class been flagged as valid URL. Retrusn an empty string if it's not flagged as valid URL. :return: """ if self._valid_url: return f"{self._prefix[0]}/{self._user}/status/{self._post_id}" else: return "" def __str__(self) -> str: return self.__return_url def __bool__(self) -> bool: if self.__return_url is not None: return True def __call__(self, *args, **kwargs) -> str: return self.__str__() def __int__(self): return len(self.__str__())