This commit is contained in:
Kovid Goyal 2024-12-30 18:40:21 +05:30
commit d1572df28b
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -12,6 +12,7 @@ import re
import sys import sys
from calibre.web.feeds.news import BasicNewsRecipe from calibre.web.feeds.news import BasicNewsRecipe
from calibre.utils.date import now as nowf
class WeeklyLWN(BasicNewsRecipe): class WeeklyLWN(BasicNewsRecipe):
@ -82,6 +83,19 @@ class WeeklyLWN(BasicNewsRecipe):
return url return url
def publication_date(self):
return self.pub_date
def parse_publication_date(self, soup):
from dateutil.parser import parse, ParserError
try:
date_match = re.match(r'.* +for +([^\[]*)', self.tag_to_string(soup.head.title.string))
# dateutil.parser.parse() is considered thread-safe
self.pub_date = parse(date_match[1])
except (TypeError, ParserError):
self.log.warning('Failed to parse publication date from title: %r, using current time' % soup.head.title.string)
self.pub_date = nowf()
def parse_index(self): def parse_index(self):
past_edition = self.recipe_specific_options.get('issue') past_edition = self.recipe_specific_options.get('issue')
if past_edition and isinstance(past_edition, str): if past_edition and isinstance(past_edition, str):
@ -91,6 +105,7 @@ class WeeklyLWN(BasicNewsRecipe):
else: else:
index_url = self.print_version('/free/bigpage') index_url = self.print_version('/free/bigpage')
soup = self.index_to_soup(index_url) soup = self.index_to_soup(index_url)
self.parse_publication_date(soup)
curr = soup.body curr = soup.body
articles = {} articles = {}