Fix Czech local time handling in Denik N recipe

Using strftime requires locale change which is not thread safe.
Keeping it simple and using a hardcoded list of day and month names,
this should work the same way on python 2 and 3 as well.
This commit is contained in:
Robert Mihaly 2019-11-26 19:48:15 +01:00
parent c821f59818
commit e86be7b3bc
No known key found for this signature in database
GPG Key ID: 7DD677BCDAAE858E

View File

@ -2,25 +2,26 @@
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import unicode_literals, division, absolute_import, print_function from __future__ import unicode_literals, division, absolute_import, print_function
from calibre.web.feeds.news import BasicNewsRecipe from calibre.web.feeds.news import BasicNewsRecipe
from calibre import strftime from datetime import datetime
import locale
CZ_DAYS = ['Po', 'Út', 'St', 'Čt', 'Pá', 'So', 'Ne']
CZ_MONTHS = ['led', 'úno', 'bře', 'dub', 'kvě', 'čen', 'čec', 'srp', 'zář', 'říj', 'lis', 'pro']
def cz_title_time(): def cz_title_time():
""" """
Helper function to return date with czech locale. Helper function to return date with czech locale.
Uses hardcoded lookup table of day and month names as strftime requires
locale change that is not thread safe.
""" """
today = datetime.today()
orig_locale = locale.getlocale(locale.LC_TIME) weekday = CZ_DAYS[today.weekday()]
try: month = CZ_MONTHS[today.month-1]
locale.setlocale(locale.LC_TIME, 'cs_CZ') return '{weekday}, {day} {month} {year}'.format(weekday=weekday,
except Exception: day=today.day,
return '' month=month,
try: year=today.year)
timestr = strftime('%a, %d %b %Y')
finally:
locale.setlocale(locale.LC_TIME, orig_locale)
return timestr
class DenikNRecipe(BasicNewsRecipe): class DenikNRecipe(BasicNewsRecipe):