#!/usr/pkg/bin/python3.13
# vim:fileencoding=utf-8
from calibre.web.feeds.news import BasicNewsRecipe, classes


class NYTCooking(BasicNewsRecipe):
    title          = 'NY Times Cooking'
    description = 'NY Times Cooking Magazine'
    __author__ = 'gourav'
    language = 'en_US'
    encoding = 'utf-8'
    oldest_article = 2
    max_articles_per_feed = 30
    keep_only_tags = [
        classes('recipe-title recipe-subhead recipe-intro recipe-instructions')
    ]
    remove_tags = [
        classes('recipe-details-share'),
        dict(name='source'),
    ]

    def parse_index(self):
        url = 'https://cooking.nytimes.com/topics/what-to-cook-this-week'
        soup = self.index_to_soup(url)

        articles = soup.find_all('div', class_='card-info-wrapper')
        feed = []

        for i in articles:
            article = {}
            article['url'] = i.find('a')['href']
            if article['url'].startswith('/'):
                article['url'] = 'https://cooking.nytimes.com' + article['url']
            article['title'] = i.find('h3').text.strip()
            author = i.find('p', class_='card-byline')
            article['author'] = author.text if author is not None else 'Unknown'
            feed.append(article)

        return [('Recipes', feed)]
