code: def site_url(self, url):
          
          # Regular expression to URL validate
          regex = re.compile(
              r'^(?:http|https)://'  # Scheme only HTTP/HTTPS
              r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?| \
              [A-Z0-9-]{2,}(?<!-)\.?)|'  # Domain
              r'localhost|'  # localhost...
              r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|'  # or ipv4
              r'\[?[A-F0-9]*:[A-F0-9:]+\]?)'  # or ipv6
              r'(?::\d+)?'  # Port
              r'(?:/?|[/?]\S+)$', re.IGNORECASE)
  
          # Validate URL
          if re.match('^(?:http|https)://', url):
              if re.search(regex, url):
                  self.__site_url = url
              else:
                  raise PybooruError("Invalid URL: {0}".format(url))
          else:
              raise PybooruError(
                  "Invalid URL scheme, use HTTP or HTTPS: {0}".format(url))
docs: URL setter and validator for site_url property.
  
          Parameters:
              url (str): URL of on Moebooru/Danbooru based sites.
  
          Raises:
              PybooruError: When URL scheme or URL are invalid.