def METHOD_NAME(self, search_strings, age=0, ep_obj=None, **kwargs):
    """
    Search a provider and parse the results.
    :param search_strings: A dict with mode (key) and the search value (value)
    :param age: Not used
    :param ep_obj: Not used
    :returns: A list of search results (structure)
    """
    results = []
    if self.custom_url:
        if not validators.url(self.custom_url):
            log.warning('Invalid custom url: {0}', self.custom_url)
            return results
        self.url = self.custom_url
    self.urls = {
        'login': urljoin(self.url, '/torrents/'),
        'search': urljoin(self.url, '/t.json'),
        'download': urljoin(self.url, '/download.php/')
    }
    if not self.login():
        return results
    for mode in search_strings:
        log.debug('Search mode: {0}', mode)
        for search_string in search_strings[mode]:
            if mode != 'RSS':
                log.debug('Search string: {search}',
                          {'search': search_string})
            search_string = '+'.join(search_string.split())
            params = dict({'q': search_string}, **self.categories[mode])
            response = self.session.get(self.urls['search'], params=params)
            if not response or not response.text:
                log.debug('No data returned from provider')
                continue
            try:
                jdata = json.loads(response.text, cls=ReplaceBackslashDecoder)
            except JSONDecodeError:
                log.error(f'Torrentday parse error with response output: \n{response.text}')
                continue
            except ValueError as error:
                log.error("Couldn't deserialize JSON document. Error: {0!r}", error)
                continue
            results += self.parse(jdata, mode)
    return results