def METHOD_NAME(self):
    """Login method used for logging in before doing search and torrent downloads."""
    if len(self.session.cookies) >= 4:
        return True
    # Get the _token
    response_token = self.session.get(self.urls['login'])
    if not response_token or not response_token.text:
        log.warning('Provider not reachable')
        return False
    match_token = re.search(r'<meta name="csrf-token" content="([^"]+)">', response_token.text)
    match_captcha = re.search(r'<input type="hidden" name="_captcha" value="([^"]+)" />', response_token.text)
    match_hash = re.search(r'<input type="hidden".+name="([^"]+)".+value="(\d+)"', response_token.text)
    if not match_token or not match_captcha or not match_hash:
        log.warning('Could not get token or captcha')
        return False
    self._token = match_token.group(1)
    captcha = match_captcha.group(1)
    hash_key = match_hash.group(1)
    hash_value = match_hash.group(2)
    login_params = {
        '_token': self._token,
        'username': self.username,
        'password': self.password,
        'remember': 'on',
        '_captcha': captcha,
        '_username': '',
        hash_key: hash_value
    }
    response = self.session.post(self.urls['login'], data=login_params)
    if not response or not response.text:
        log.warning('Unable to connect to provider')
        return False
    if re.search('These credentials do not match our records', response.text):
        log.warning('Invalid username or password. Check your settings')
        return False
    return True