diff --git a/šabbat.py b/šabbat.py new file mode 100644 index 0000000..c1dbe62 --- /dev/null +++ b/šabbat.py @@ -0,0 +1,91 @@ +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() \ No newline at end of file