def METHOD_NAME(self, keyword, season=None, episode=None, year=None):
    params = keyword
    if season and episode:
        params += ' S{season:02d}E{episode:02d}'.format(season=season, episode=episode)
    elif year:
        params += ' {:4d}'.format(year)
    logger.debug('Searching subtitles %r', params)
    subtitles = []
    search_link = self.server_url + self.search_url.format(params)
    while True:
        r = self.session.get(search_link, timeout=30)
        r.raise_for_status()
        if not r.content:
            logger.debug('No data returned from provider')
            return []
        soup = ParserBeautifulSoup(r.content.decode('utf-8', 'ignore'), ['lxml', 'html.parser'])
        # loop over subtitles cells
        for cell in soup.select('td.latest_name > a:nth-of-type(1)'):
            # read the item
            subtitle_id = int(cell['href'].rsplit('/', 2)[1])
            page_link = cell['href']
            language = Language.fromalpha2(cell.parent.find('img')['src'].split('/')[-1].split('.')[0])
            version = cell.text.strip() or None
            if version is None:
                version = ""
            subtitle = self.subtitle_class(language, page_link, version, self.download_url.format(subtitle_id))
            logger.debug('Found subtitle %r', subtitle)
            subtitles.append(subtitle)
        anchors = soup.select('td a')
        next_page_available = False
        for anchor in anchors:
            if 'Next' in anchor.text and 'search.php' in anchor['href']:
                search_link = self.server_url + anchor['href']
                next_page_available = True
                break
        if not next_page_available:
            break
    return subtitles