diff --git a/recipes/economist.recipe b/recipes/economist.recipe index 3280577461..8165f5699c 100644 --- a/recipes/economist.recipe +++ b/recipes/economist.recipe @@ -11,6 +11,7 @@ from mechanize import Request from calibre import browser from calibre.ptempfile import PersistentTemporaryFile +from calibre.utils.date import parse_only_date from calibre.web.feeds.news import BasicNewsRecipe @@ -246,6 +247,17 @@ class Economist(BasicNewsRecipe): br = BasicNewsRecipe.get_browser(self, *args, **kwargs) return br + def publication_date(self): + edition_date = self.recipe_specific_options.get('date') + if edition_date and isinstance(edition_date, str): + return parse_only_date(edition_date, as_utc=False) + try: + url = self.browser.open('https://www.economist.com/printedition').geturl() + except Exception as e: + self.log('Failed to fetch publication date with error: ' + str(e)) + return super().publication_date() + return parse_only_date(url.split('/')[-1], as_utc=False) + def economist_return_index(self, ans): if not ans: raise NoArticles( diff --git a/recipes/economist_free.recipe b/recipes/economist_free.recipe index 3280577461..8165f5699c 100644 --- a/recipes/economist_free.recipe +++ b/recipes/economist_free.recipe @@ -11,6 +11,7 @@ from mechanize import Request from calibre import browser from calibre.ptempfile import PersistentTemporaryFile +from calibre.utils.date import parse_only_date from calibre.web.feeds.news import BasicNewsRecipe @@ -246,6 +247,17 @@ class Economist(BasicNewsRecipe): br = BasicNewsRecipe.get_browser(self, *args, **kwargs) return br + def publication_date(self): + edition_date = self.recipe_specific_options.get('date') + if edition_date and isinstance(edition_date, str): + return parse_only_date(edition_date, as_utc=False) + try: + url = self.browser.open('https://www.economist.com/printedition').geturl() + except Exception as e: + self.log('Failed to fetch publication date with error: ' + str(e)) + return super().publication_date() + return parse_only_date(url.split('/')[-1], as_utc=False) + def economist_return_index(self, ans): if not ans: raise NoArticles(