Skip to content

Commit 9ca1638

Browse files
authored
Add 12h support and fix holidays times
1 parent 98d41ff commit 9ca1638

File tree

1 file changed

+40
-13
lines changed

1 file changed

+40
-13
lines changed

custom_components/hebcal/sensor.py

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@
3030
TIME_BEFORE_CHECK,
3131
JERUSALEM_CANDLE,
3232
TZEIT_HAKOCHAVIM,
33+
USE_12H_TIME,
3334
OMER_COUNT_TYPE,
3435
DEFAULT_HAVDALAH_MINUTES,
3536
DEFAULT_TIME_BEFORE_CHECK,
3637
DEFAULT_TIME_AFTER_CHECK,
3738
DEFAULT_JERUSALEM_CANDLE,
3839
DEFAULT_TZEIT_HAKOCHAVIM,
40+
DEFAULT_USE_12H_TIME,
3941
DEFAULT_OMER_COUNT_TYPE,
4042
OMER_DAYS,
4143
HEBREW_WEEKDAY,
@@ -50,7 +52,7 @@
5052

5153
_LOGGER = logging.getLogger(__name__)
5254

53-
version = "2.5.1"
55+
version = "2.6.0"
5456

5557
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
5658
{
@@ -62,6 +64,7 @@
6264
vol.Optional(TIME_AFTER_CHECK, default=DEFAULT_TIME_AFTER_CHECK): cv.positive_int,
6365
vol.Optional(JERUSALEM_CANDLE, default=DEFAULT_JERUSALEM_CANDLE): cv.boolean,
6466
vol.Optional(TZEIT_HAKOCHAVIM, default=DEFAULT_TZEIT_HAKOCHAVIM): cv.boolean,
67+
vol.Optional(USE_12H_TIME, default=DEFAULT_USE_12H_TIME): cv.boolean,
6568
vol.Optional(OMER_COUNT_TYPE, default=DEFAULT_OMER_COUNT_TYPE): cv.positive_int,
6669
vol.Optional(LANGUAGE, default=DEFAULT_LANGUAGE): cv.string,
6770
vol.Optional(
@@ -95,6 +98,7 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
9598
time_after = config.get(TIME_AFTER_CHECK)
9699
jerusalem_candle = config.get(JERUSALEM_CANDLE)
97100
tzeit_hakochavim = config.get(TZEIT_HAKOCHAVIM)
101+
use_12h_time = config.get(USE_12H_TIME)
98102
omer_count_type = config.get(OMER_COUNT_TYPE)
99103
language = config.get(LANGUAGE)
100104

@@ -120,11 +124,11 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
120124
time_after,
121125
jerusalem_candle,
122126
tzeit_hakochavim,
127+
use_12h_time,
123128
omer_count_type,
124129
language,
125130
)
126131
)
127-
128132
async_add_entities(entities, False)
129133

130134

@@ -160,6 +164,7 @@ def __init__(
160164
time_after,
161165
jerusalem_candle,
162166
tzeit_hakochavim,
167+
use_12h_time,
163168
omer_count_type,
164169
language,
165170

@@ -179,6 +184,7 @@ def __init__(
179184
self._time_after = time_after
180185
self._jerusalem_candle = jerusalem_candle
181186
self._tzeit_hakochavim = tzeit_hakochavim
187+
self.use_12h_time = use_12h_time
182188
self._omer_count_type = omer_count_type
183189
self._language = language
184190
self.config_path = hass.config.path() + PLATFORM_FOLDER
@@ -355,7 +361,12 @@ async def filter_db(self, temp_db, state):
355361
self.temp_data.append(extract_data)
356362
if "day_zmanim" in list(extract_data.values()):
357363
for x in LANGUAGE_DATA[self._language][4]:
358-
self.zmanim.update({LANGUAGE_DATA[self._language][4][x]: extract_data[x][11:16]})
364+
if self.use_12h_time:
365+
temp_time = datetime.datetime.strptime(extract_data[x][11:16], "%H:%M")
366+
temp_time = temp_time.strftime("%I:%M %p")
367+
self.zmanim.update({LANGUAGE_DATA[self._language][4][x]: str(temp_time)})
368+
else:
369+
self.zmanim.update({LANGUAGE_DATA[self._language][4][x]: extract_data[x][11:16]})
359370
self.zmanim.update({'title': 'day_zmanim'})
360371
self.temp_data.append(self.zmanim)
361372
# self.zmanim.pop('title')
@@ -526,29 +537,41 @@ async def set_local_timezone(self):
526537
async def get_shabbat_time_in(self):
527538
"""Get Shabbat entrance time"""
528539
if self.shabbat_in:
529-
return self.is_time_format(str(self.shabbat_in)[11:16])
540+
if self.use_12h_time:
541+
temp_time = self.shabbat_in.strftime("%Y-%m-%dT%I:%M %p")
542+
return self.is_time_format(str(temp_time)[11:], self.use_12h_time)
543+
return self.is_time_format(str(self.shabbat_in)[11:16], self.use_12h_time)
530544
return LANGUAGE_DATA[self._language][0]
531545

532546
async def get_shabbat_time_out(self):
533547
"""Get Shabbat exit time"""
534548
if self.shabbat_out:
535-
return self.is_time_format(str(self.shabbat_out)[11:16])
549+
if self.use_12h_time:
550+
temp_time = self.shabbat_out.strftime("%Y-%m-%dT%I:%M %p")
551+
return self.is_time_format(str(temp_time)[11:], self.use_12h_time)
552+
return self.is_time_format(str(self.shabbat_out)[11:16], self.use_12h_time)
536553
return LANGUAGE_DATA[self._language][0]
537554

538555
async def get_yomtov_time_in(self):
539556
"""Get Shabbat entrance time"""
540557
today = self.utc_to_local(datetime.datetime.utcnow(), self.local_timezone)
541558
if self.yomtov_in and self.yomtov_out:
542-
if self.yomtov_out.date() > today.date():
543-
return self.is_time_format(str(self.yomtov_in)[11:16])
559+
if self.yomtov_out.date() >= today.date():
560+
if self.use_12h_time:
561+
temp_time = self.yomtov_in.strftime("%Y-%m-%dT%I:%M %p")
562+
return self.is_time_format(str(temp_time)[11:], self.use_12h_time)
563+
return self.is_time_format(str(self.yomtov_in)[11:16], self.use_12h_time)
544564
return LANGUAGE_DATA[self._language][0]
545565

546566
async def get_yomtov_time_out(self):
547567
"""Get Shabbat exit time"""
548568
today = self.utc_to_local(datetime.datetime.utcnow(), self.local_timezone)
549569
if self.yomtov_in and self.yomtov_out:
550-
if self.yomtov_out.date() > today.date():
551-
return self.is_time_format(str(self.yomtov_out)[11:16])
570+
if self.yomtov_out.date() >= today.date():
571+
if self.use_12h_time:
572+
temp_time = self.yomtov_out.strftime("%Y-%m-%dT%I:%M %p")
573+
return self.is_time_format(str(temp_time)[11:], self.use_12h_time)
574+
return self.is_time_format(str(self.yomtov_out)[11:16], self.use_12h_time)
552575
return LANGUAGE_DATA[self._language][0]
553576

554577
async def get_parasha(self) -> str:
@@ -665,7 +688,7 @@ async def get_yomtov_name(self) -> str:
665688
if x == "yomtov":
666689
today = self.utc_to_local(datetime.datetime.utcnow(), self.local_timezone)
667690
date = datetime.datetime.strptime(extract_data["date"][:10], "%Y-%m-%d").date()
668-
if date > today.date():
691+
if date >= today.date():
669692
result = HEBREW_WEEKDAY[date.isoweekday()]
670693
result = result + " " + extract_data["title"]
671694
return result
@@ -686,10 +709,14 @@ async def get_zmanim(self):
686709
return "זמנים הלכתיים עבור יום " + str(self.file_time_stamp)
687710

688711
@classmethod
689-
def is_time_format(cls, input_time) -> str:
712+
def is_time_format(cls, input_time, use_12h_time) -> str:
690713
"""Check if the time is correct"""
691714
try:
692-
time.strptime(input_time, "%H:%M")
693-
return input_time
715+
if use_12h_time:
716+
time.strptime(input_time, "%H:%M %p")
717+
return input_time
718+
else:
719+
time.strptime(input_time, "%H:%M")
720+
return input_time
694721
except ValueError:
695722
return "Error"

0 commit comments

Comments
 (0)