Files
shabbat/šabbat.py

91 lines
3.9 KiB
Python

import wx, urllib3, threading
from wx import adv
def get_sabbat(geotag: int = 281184, shabat_min: int = 50, d = None, m = None, y = None):
if geotag == 0:
geotag = 281184
if d and m and y:
raw_data = urllib3.PoolManager().request('GET',f'https://www.hebcal.com/shabbat/?cfg=json&geonameid={geotag}&m={shabat_min}&gy={y}&gm={m}&gd={d}').data.decode()
else:
raw_data = urllib3.PoolManager().request('GET',f'https://www.hebcal.com/shabbat/?cfg=json&geonameid={geotag}&m={shabat_min}').data.decode()
data =[i for i in eval(raw_data)['items'] if i["category"] == "havdalah" or i["category"] == "candles"]
return [data[0]['title'],data[-1]['title']]
def get_in(geotag: int = 281184, shabat_min: int = 72, d = None, m = None, y = None):
return get_sabbat(geotag, shabat_min, d, m, y)[0][get_sabbat()[0].find(r":")+2:]
def get_out(geotag: int = 281184, shabat_min: int = 72, d = None, m = None, y = None):
return get_sabbat(geotag, shabat_min, d, m, y)[-1][get_sabbat(geotag, shabat_min, d, m, y)[-1].find(r":")+2:]
def convert_time(time: str):
if eval(time.split(":")[0]) > 12 or time.find("m") < 0:
return time
if time.find("am") > -1:
return time.split("am")[0]
time = time.split("pm")[0]
time = str(eval(time.split(":")[0])+12) + ":" + time.split(":")[1]
return time
cities = {"מודיעין":282926,"מודיעין־מכבים־רעות":282926,"תל־אביב–יפו":293397,"ירושלים":281184,"חיפה":294801,"בחר עיר":0}
cit = sorted(list(cities.keys()))
class dater(adv.DatePickerCtrl):
def __init__(self, parent, dt=wx.DateTime.Now(), style=adv.DP_DROPDOWN):
super().__init__(parent, dt=dt, style=style)
class Panel(wx.Panel):
def __init__(self, parent):
super().__init__(parent)
self.Sizer = wx.GridSizer(3, 2, wx.Size(50,50))
self.Sizer.Add(wx.StaticText(self,label="זמן כניסת השבת:\t"))
self.s_in = wx.TextCtrl(self)
self.s_in.Value = convert_time(get_in())
self.s_in.SetEditable(False)
self.Sizer.Add(self.s_in)
self.Sizer.Add(wx.StaticText(self,label="זמן יציאת השבת:\t"))
self.s_out = wx.TextCtrl(self)
self.s_out.SetEditable(False)
self.s_out.Value = convert_time(get_out())
self.Sizer.Add(self.s_out)
self.city = wx.ComboBox(self,choices = cit, value = "בחר עיר")
self.city.Bind(wx.EVT_COMBOBOX_CLOSEUP,self.choose)
self.city.Bind(wx.EVT_KEY_DOWN, self.choose_enter)
self.Sizer.Add(self.city)
self.date = dater(self)
self.date.Bind(adv.EVT_DATE_CHANGED, self.date_change)
self.Sizer.Add(self.date)
self.dy , self.dm , self.dd = str(self.date.Value).split(" ")[0].split("/")[2] , str(self.date.Value).split(" ")[0].split("/")[1] , str(self.date.Value).split(" ")[0].split("/")[0]
def choose(self, event: wx.Event):
self.set_values()
event.Skip()
def choose_enter(self, event: wx.KeyEvent):
self.set_values()
event.Skip()
def date_change(self, event: adv.DateEvent):
self.dy , self.dm , self.dd = str(self.date.Value).split(" ")[0].split("/")[2] , str(self.date.Value).split(" ")[0].split("/")[1] , str(self.date.Value).split(" ")[0].split("/")[0]
self.set_values()
event.Skip()
def set_values(self):
self.s_in.Value = convert_time(get_in(cities[self.city.Value],d = self.dd, y = self.dy , m = self.dm))
self.s_out.Value = convert_time(get_out(cities[self.city.Value],d = self.dd, y = self.dy , m = self.dm))
class Frame(wx.Frame):
def __init__(self, parent, title=""):
super().__init__(parent, title=title)
self.panel = Panel(self)
class App(wx.App):
def OnInit(self):
self.frame = Frame(None, "שבת")
self.frame.Show()
return True
if __name__ == "__main__":
app = App()
app.MainLoop()