def METHOD_NAME(self, task, config):
    url = config.get('url').rstrip('/')
    list = config.get('list')
    rank = RANKS.index(config.get('rank', 'all'))
    if isinstance(config.get('category'), int):
        category = config['category']
    else:
        category = CATEGORIES.get(config.get('category', 'All'))
    if list == 'top':
        if category:
            list_url = f'{url}/precompiled/data_top100_{category}.json'
        else:
            list_url = f'{url}/precompiled/data_top100_all.json'
    elif list == 'top48h':
        if category:
            list_url = f'{url}/precompiled/data_top100_48h_{category}.json'
        else:
            list_url = f'{url}/precompiled/data_top100_48h.json'
    else:  # list == 'recent'
        if category:
            list_url = f'{url}/q.php?q=category:{category}'
        else:
            # top100_recent has multiple pages, starting at data_top100_recent.json, then data_top100_recent_1.json
            # to 30, and appears not filtered by categories
            list_url = f'{url}/precompiled/data_top100_recent.json'
    json_results = task.requests.get(list_url).json()
    for result in json_results:
        if result['id'] == '0':
            # no result found
            break
        if RANKS.index(result['status'].lower()) < rank:
            # filter by rank/status, useful for recent torrents
            logger.debug(
                f"{result['name']} has been dropped due to low rank ({result['status']})."
            )
            continue
        yield self.json_to_entry(result)