async def get_prayertimes_local(self, location, calculation_method): async def get_information(location): url = "http://api.aladhan.com/v1/hijriCalendarByAddress" params = {"address": location} async with self.session.get(url, headers=headers, params=params) as resp: data = await resp.json() meta = data['data'][0]['meta'] coordinates = (meta['latitude'], meta['longitude']) timezone_name = meta['timezone'] time = dt.datetime.now(gettz(timezone_name)) timezone_offset = time.utcoffset() / timedelta(hours=1) return coordinates, time, timezone_offset def get_method_name(method_id): id_to_name = { 3: 'MWL', 2: 'ISNA', 5: 'Egypt', 4: 'Makkah', 1: 'Karachi', 7: 'Tehran', 0: 'Jafari', 8: 'Gulf', #TODO add this method to praytimes.py 9: 'Kuwait', #TODO add this method to praytimes.py 10: 'Qatar', #TODO add this method to praytimes.py 11: 'Singapore', #TODO add this method to praytimes.py 12: 'France', #TODO add this method to praytimes.py 13: 'Turkey', #TODO add this method to praytimes.py 14: 'Russia', #TODO add this method to praytimes.py # didn't include method 'MOONSIGHTING' because it uses 'shafaq' parameter, # which isn't used in praytimes.py } return id_to_name[method_id] coordinates, time, time_offset = await get_information(location) date = (time.year, time.month, time.day) method_name = get_method_name(calculation_method) prayTimes = PrayTimes() prayTimes.setMethod(method_name) prayTimes.adjust({"highLats": "AngleBased"}) prayTimes.adjust({"asr": "Standard"}) times = prayTimes.getTimes(date, coordinates, time_offset) prayTimes.adjust({"asr": "Hanafi"}) timesWithHanafiAsr = prayTimes.getTimes(date, coordinates, time_offset) fajr = times['fajr'] sunrise = times['sunrise'] dhuhr = times['dhuhr'] asr = times['asr'] hanafi_asr = timesWithHanafiAsr['asr'] maghrib = times['maghrib'] isha = times['isha'] imsak = times['imsak'] midnight = times['midnight'] sunrise = times['sunrise'] readable_date = time.strftime('%d %B, %Y') return fajr, sunrise, dhuhr, asr, hanafi_asr, maghrib, isha, imsak, midnight, readable_date
def getTimes(for_date): prayTimes = PrayTimes() prayTimes.setMethod('test') new_settings = { "imsak": '10 min', "dhuhr": '0 min', "asr": 'Standard', "highLats": 'AngleBased', "maghrib": '-6 min' } offset = { "fajr": -2, "dhuhr": +5, "asr": +5, "maghrib": 0, "isha": -3 } prayTimes.adjust(new_settings) prayTimes.tune(offset) isSummerTime = 1 times = prayTimes.getTimes(for_date, places['berlin'], 1, dst=isSummerTime) return times
def Resolve(cls, method, config, location, date): def buildCacheKey(loc, date): return "%s:%s:%s" % (method, resolver.CacheKey(loc, date), date.strftime("%Y-%m-%d")) if method in TimetableResolver._resolvers: # Dedicated resolver, vs. calculation. # We assume this lookup is costly (calling a remote API, and cache it). resolver = TimetableResolver._resolvers[method] query_cache_key = buildCacheKey(location, date) if query_cache_key in TimetableResolver._cache: return TimetableResolver._cache[query_cache_key] try: cache_obj = TimetableCachedTimes.objects.get(key=query_cache_key) TimetableResolver._cache[query_cache_key] = (cache_obj.location_geoname, cache_obj.times) except TimetableCachedTimes.DoesNotExist: multi_day_times = resolver.Times(location, date) # The resolver returns a list of (location, date, timedict) tuples. # Obviously the location shouldn't ever change over a range, but oh well, we're storing it discretely anyway. for location_geoname, date, times in multi_day_times: day_cache_key = buildCacheKey(location, date) TimetableResolver._cache[day_cache_key] = (location_geoname, times) TimetableCachedTimes.objects(key=day_cache_key).update(key=day_cache_key, location_geoname=location_geoname, times=times, upsert=True) return TimetableResolver._cache[query_cache_key] else: pt = PrayTimes() pt.setMethod(method) pt.adjust({"asr": config["asr"]}) return None, pt.getTimes(date, location, 0, format="Float")
def Resolve(cls, method, config, location, date): def buildCacheKey(loc, date): return "%s:%s:%s" % (method, resolver.CacheKey( loc, date), date.strftime("%Y-%m-%d")) if method in TimetableResolver._resolvers: # Dedicated resolver, vs. calculation. # We assume this lookup is costly (calling a remote API, and cache it). resolver = TimetableResolver._resolvers[method] query_cache_key = buildCacheKey(location, date) if query_cache_key in TimetableResolver._cache: return TimetableResolver._cache[query_cache_key] try: cache_obj = TimetableCachedTimes.objects.get( key=query_cache_key) TimetableResolver._cache[query_cache_key] = ( cache_obj.location_geoname, cache_obj.times) except TimetableCachedTimes.DoesNotExist: multi_day_times = resolver.Times(location, date) # The resolver returns a list of (location, date, timedict) tuples. # Obviously the location shouldn't ever change over a range, but oh well, we're storing it discretely anyway. for location_geoname, date, times in multi_day_times: day_cache_key = buildCacheKey(location, date) TimetableResolver._cache[day_cache_key] = ( location_geoname, times) TimetableCachedTimes.objects(key=day_cache_key).update( key=day_cache_key, location_geoname=location_geoname, times=times, upsert=True) return TimetableResolver._cache[query_cache_key] else: pt = PrayTimes() pt.setMethod(method) pt.adjust({"asr": config["asr"]}) return None, pt.getTimes(date, location, 0, format="Float")
#Get Prayer Times #If located in southern hemisphere, use a negative latitude value #-------------------- #User location lat = 51.5171 long = 0.1062 #System time and date now = datetime.datetime.now() #Prayer time calculation #Additional options available in praytimes.py PT = PrayTimes('ISNA') times = PT.getTimes((now.year, now.month, now.day), (lat, long), 0, 1) print times['fajr'] print times['dhuhr'] print times['asr'] print times['maghrib'] print times['isha'] #Update Crontab with Prayer Times #--------------------------------- from crontab import CronTab #Function to add azaan time to cron def addAzaanTime(strPrayerName, strPrayerTime, objCronTab, strCommand):
def tanggap(updates): for update in updates["result"]: text = update["message"]["text"] chat = update["message"]["chat"]["id"] if text.startswith("halo") : send_message("<i>halo juga kak</i>",chat,'HTML') elif text.startswith("kernelbot") : msg = os.uname()[1]+" "+os.uname()[2]+" "+os.uname()[4] send_message(msg,chat,None) elif text.startswith("boot") : p = terminal.Popen(['systemd-analyze'],stdout=terminal.PIPE,stderr=terminal.PIPE,stdin=terminal.PIPE) msg,err = p.communicate() send_message('`'+msg.decode()+'`',chat,'Markdown') elif text.startswith("modaro"): send_message("shutting down now...",chat,None) text_split = text.split(' ',1) passwd = text_split[1] if 'raspberry' in passwd: send_message("matiin raspberry pi 3b sekarang", chat,None) command = 'poweroff' p = terminal.Popen(['sudo', '-S', command], stdin=terminal.PIPE, stderr=terminal.PIPE, universal_newlines=True) sudo_prompt = p.communicate(passwd + '\n')[1] #msg = p.returncode #send_message(msg, chat) else: send_message("sorry bro kamu ngga punya akses", chat,None) elif text.startswith("suhu"): # command ini disesuaikan dengan letak path file ceklamalogindantemp.sh bash script berada command= '/home/pi/ceklamalogindantemp.sh'.split() p = terminal.Popen(command,stdout=terminal.PIPE,stderr=terminal.PIPE,stdin=terminal.PIPE) msg,error = p.communicate() send_message('`'+msg.decode()+'`',chat,'Markdown') elif text.startswith("humidity"): msg = "suhu dan humidity ruangan server bot: \n" msg += read_filesuhu('/home/pi/suhuruangan.txt') send_message(msg, chat,None) elif text.startswith("benchmark"): command = 'sysbench --num-threads=4 --test=cpu --cpu-max-prime=20000 --validate run'.split() p = terminal.Popen(command,stdout=terminal.PIPE, stderr=terminal.PIPE, stdin=terminal.PIPE) msg,error = p.communicate(); print(msg.decode()) send_message("`"+msg.decode()+"`",chat,'Markdown') elif text.startswith('chmod'): textsplit = text.split(' ', 2) command = 'chmod {} /home/pi/{}'.format(textsplit[1], textsplit[2]).split() p = terminal.Popen(command, stdout=terminal.PIPE, stderr=terminal.PIPE, stdin=terminal.PIPE) msg,err = p.communicate() if err.decode() is not "": send_message('galat maaf bray belajar chmod dulu sono', chat,None) else: if msg.decode() is not "": send_message(msg, chat,None) else: send_message('sukses chmod', chat,None) elif text.startswith("sholat"): textsplit = text.split(' ',1) kota = textsplit[1]; urlkota = "https://hacker-news.firebaseio.com/v0/newstories.json?print=pretty" latdanlng = get_news(urlkota) if latdanlng is None: send_message("latlon belum ketemu",chat,None) return j = PrayTimes() times = j.getTimes(date.today(), latdanlng , 7) string_reply = "Jadwal Sholat untuk kota {} dalam wib sekarang jam {} wib \n".format(kota, datetime.now().time()) for u in ['Imsak','Fajr','Sunrise','Dhuhr','Asr','Maghrib','Isha']: string_reply += (u + ': '+times[u.lower()])+'\n' send_message('<b>'+string_reply+'</b>', chat,'HTML') elif text.startswith("cocok"): textsplit = text.split(' ',2) unitext = textsplit[1]+textsplit[2] lentext = len(unitext) alentext = lentext + 20 kalitext = lentext + alentext string_replay = "kecocokan {} dan {} sekitar {}%".format(textsplit[1], textsplit[2], kalitext) send_message(string_replay, chat,None) elif text.startswith("write_code"): textsplit = text.split(' ', 3) if os.path.isfile("/home/pi/"+textsplit[1]+"."+textsplit[2]): send_message("file telah dibuat", chat, None) else: send_message('creating source code {}.{}'.format(textsplit[1], textsplit[2]), chat,None) create_source(textsplit[1], textsplit[2], textsplit[3]) send_document(chat,"file yang terbentuk", open('{}.{}'.format(textsplit[1],textsplit[2]),'rb')) elif text.startswith("compile_code"): textsplit = text.split(' ', 2) if os.path.isfile('/home/pi/{}'.format(textsplit[1])): if textsplit[1].endswith('go'): command = 'go build /home/pi/{}'.format(textsplit[1]).split() elif textsplit[1].endswith('ts'): command ='tsc /home/pi/{}'.format(textsplit[1]).split() else: command = 'gcc -std=gnu99 -o {} /home/pi/{}'.format(textsplit[2], textsplit[1]).split() p = terminal.Popen(command,stdout=terminal.PIPE,stderr=terminal.PIPE,stdin=terminal.PIPE) msg,error = p.communicate() #print "{} and {}".format(msg, error) if error.decode() is not "": print("{}".format(error)) if "error" in error.decode(): send_message("galat waktu ngompile %s"%(error.decode()), chat,None) else: send_message("sukses %s"%(error.decode()), chat, None) else: send_message('sukses compile', chat,None) else: send_message('source code tidak ditemukan', chat,None) elif text.startswith("read_code"): textsplit = text.split(' ') if os.path.isfile('/home/pi/{}'.format(textsplit[1])): msg= "your source code is:\n`" msg += read_source(textsplit[1]) msg += "`" print(msg) send_message(msg.encode(), chat, "json|Markdown"); else: send_message('source code dengan nama file {} belum dibuat'.format(textsplit[1]), chat,None) elif text.startswith("run_code"): textsplit = text.split(' ', 1) if os.path.isfile('/home/pi/{}'.format(textsplit[1])): if textsplit[1].endswith('py'): command = 'python /home/pi/{}'.format(textsplit[1]).split() elif textsplit[1].endswith('go'): command = 'go run /home/pi/{}'.format(textsplit[1]).split() elif textsplit[1].endswith('sh'): command = 'sh /home/pi/{}'.format(textsplit[1]).split() elif textsplit[1].endswith('js'): command = 'node /home/pi/{}'.format(textsplit[1]).split() else: command = '/home/pi/{}'.format(textsplit[1]).split() p = terminal.Popen(command,stdout=terminal.PIPE,stderr=terminal.PIPE,stdin=terminal.PIPE) msg,error = p.communicate() psn="" if error.decode() is not "": psn = "galat `" psn += error.decode() psn += "`" else: psn = "`" psn += msg.decode() psn += "`" send_message(psn, chat ,'Markdown') else: send_message("program {} tidak ditemukan".format(textsplit[1]), chat,None) elif text.startswith("play"): send_message('<b><i> putar lagu free software song </i></b>',chat, 'HTML') command = 'mpv --no-video /media/pi/data/Lagu-Lagu/freeSWSong.ogg'.split() p=terminal.Popen(command,stdout=terminal.PIPE,stderr=terminal.PIPE,stdin=terminal.PIPE) p.communicate() elif text.startswith("run_gpio"): textsplit = text.split(' ', 1) if os.path.isfile('/home/pi/{}'.format(textsplit[1])): if textsplit[1].endswith('py'): command = 'sudo python /home/pi/{}'.format(textsplit[1]).split() elif textsplit[1].endswith('go'): command = 'sudo go run /home/pi/{}'.format(textsplit[1]).split() elif textsplit[1].endswith('sh'): command = 'sudo sh /home/pi/{}'.format(textsplit[1]).split() else: command = 'sudo /home/pi/{}'.format(textsplit[1]).split() p = terminal.Popen(command,stdout=terminal.PIPE,stderr=terminal.PIPE,stdin=terminal.PIPE) msg,error = p.communicate() psn="" if error.decode('utf-8') is not "": psn = "galat `" psn += error.decode('utf-8') psn += "`" else: psn = "`" psn += msg.decode('utf-8') psn += "`" send_message(psn, chat,'Markdown') else: send_message('program {} tidak ditemukan'.format(textsplit[1]), chat,None) elif text.startswith("wakeup"): textsplit= text.split(' ') bunyi = Bunyi(textsplit[1]) send_message('<b>set alarm jam {}</b>'.format(bunyi.read_file()),chat,'HTML') elif text.startswith("/start"): msg=""" silahkan pilih command yang tersedia untuk umum: 1. halo untuk menyapa bot 2. sholat <spasi> <nama kota> untuk informasi waktu sholat 3. aku untuk informasi bot berjalan di system apa hehe""" send_message("`"+msg+"`",chat,"Markdown") elif text.startswith("log"): command = "cat /var/log/lastlog".split() p = terminal.Popen(command, stdout=terminal.PIPE, stderr=terminal.PIPE, stdin=terminal.PIPE) msg,err = p.communicate() if err.decode('utf-8') is not "": mer= "galat `" mer += err.decode('utf-8') mer += "`" print (chat) send_message(mer, chat, "Markdown") else: psn ="`" psn += msg.decode('utf-8') psn += "`" print(chat) print(psn) send_message(psn, chat, "json|Markdown") #send_message(psn, chat, "Markdown") elif text.lower().startswith("kirimdoc"): textsplit = text.split(' ') file = textsplit[1] if os.path.isfile('{}'.format(file)): caption= "mengirim berkas {}".format(file) send_document(chat, caption, open(file, 'rb')) else: send_message("maaf berkas tidak tersedia", chat, None) elif text.lower().startswith("kirimaudio"): textsplit= text.split(" ") file = textsplit[1] if os.path.isfile('/media/pi/data/Lagu-Lagu/{}'.format(file)): caption= "mengirim audio {}".format(file) send_audio(chat, caption, open('/media/pi/data/Lagu-Lagu/{}'.format(file), 'rb')) else: send_message("maaf berkas audio {} tidak ditemukan.".format(file), chat, None) elif text.lower().startswith("kirimphoto"): textsplit = text.split(' ') file = textsplit[1] if os.path.isfile("/media/pi/data/{}".format(file)): caption = "mengirim berkas gambar {}".format(file) send_photo(chat, caption, open('/media/pi/data/{}'.format(file), 'rb')) else: send_message("maaf berkas gambar {} tidak ditemukan".format(file), chat, None)
job.minute.on(0) job.hour.on(0) job.set_comment(strJobComment) print job return #--------------------------------- #--------------------------------- #HELPER FUNCTIONS END # Remove existing jobs created by this script system_cron.remove_all(comment=strJobComment) # Calculate prayer times times = PT.getTimes((now.year, now.month, now.day), (lat, long), utcOffset, isDst) print times['fajr'] print times['dhuhr'] print times['asr'] print times['maghrib'] print times['isha'] # Add times to crontab addAzaanTime('fajr', times['fajr'], system_cron, strPlayFajrAzaanMP3Command) addAzaanTime('dhuhr', times['dhuhr'], system_cron, strPlayAzaanMP3Command) addAzaanTime('asr', times['asr'], system_cron, strPlayAzaanMP3Command) addAzaanTime('maghrib', times['maghrib'], system_cron, strPlayAzaanMP3Command) addAzaanTime('isha', times['isha'], system_cron, strPlayAzaanMP3Command) # Run this script again overnight addUpdateCronJob(system_cron, strUpdateCommand)
job = objCronTab.new(command=strCommand) job.day.on(1) job.minute.on(0) job.hour.on(0) job.set_comment(strJobComment) print job return #--------------------------------- #--------------------------------- #HELPER FUNCTIONS END # Remove existing jobs created by this script system_cron.remove_all(comment=strJobComment) # Calculate prayer times times = PT.getTimes((now.year,now.month,now.day), (lat, long), utcOffset, isDst) print times['fajr'] print times['dhuhr'] print times['asr'] print times['maghrib'] print times['isha'] # Add times to crontab addAzaanTime('fajr',times['fajr'],system_cron,strPlayFajrAzaanMP3Command) addAzaanTime('dhuhr',times['dhuhr'],system_cron,strPlayAzaanMP3Command) addAzaanTime('asr',times['asr'],system_cron,strPlayAzaanMP3Command) addAzaanTime('maghrib',times['maghrib'],system_cron,strPlayAzaanMP3Command) addAzaanTime('isha',times['isha'],system_cron,strPlayAzaanMP3Command) # Run this script again overnight addUpdateCronJob(system_cron, strUpdateCommand)
import datetime from praytimes import PrayTimes #Get Prayer Times #-------------------- lat = 48.1844202348964 long = 11.57306412752331 now = datetime.datetime.now() PT = PrayTimes('ISNA') times = PT.getTimes((now.year,now.month,now.day), (lat, long), 0,1) print times['fajr'] print times['dhuhr'] print times['asr'] print times['maghrib'] print times['isha'] #Update Crontab with Prayer Times #--------------------------------- from crontab import CronTab #Function to add azaan time to cron
}) translasi = { 'imsak': 'Imsak', 'fajr': 'Subuh', 'dhuhr': 'Duhur', 'asr': 'Ashar', 'maghrib': 'Maghrib', 'isha': 'Isya\'', 'sunrise': 'matari terbit', 'sunset': 'terdengar burung hantu' } Notify.init("Ingat Sholat") notifier = Notify.Notification.new('Sholat dulu..') waktu_shalat = praytime.getTimes(date.today(), [-6.1744444,106.8294444], 7) while True: jam_sekarang = time.strftime('%H:%M', time.localtime()) for waktu, jam in waktu_shalat.iteritems(): if jam==jam_sekarang: if waktu in ['asr', 'dhuhr', 'fajr', 'isha', 'maghrib']: summary = 'Waktunya sholat {}'.format(translasi[waktu]) body = 'segerakan sholat ' else: summary = 'Sekedar info' body = 'Sekarang waktunya {}, rehat sekejap jika kau lelah'.format(translasi[waktu]) notifier.update(summary, body) notifier.show() time.sleep(60)
class prayerindicator: def __init__(self, timeout): self.load_configuration_on_start() self.ind = AppIndicator.Indicator.new("salatuk-indicator", get_resource_path('img/icon.svg'), AppIndicator.IndicatorCategory.APPLICATION_STATUS) self.ind.set_status (AppIndicator.IndicatorStatus.ACTIVE) self.ind.set_attention_icon("new-messages-red") #change it to uclean icon with red color self.win = SalatukWindow(self) #preferences window # self.audio = Audio() # self.audio.play_athan() self.menu_setup() self.ind.set_menu(self.menu) check_prayer(self, self.check_time) # register a periodic timer GLib.timeout_add_seconds(timeout, self.callback) def load_configuration_on_start(self): # create configparser object config = ConfigParser.RawConfigParser() cfile = get_resource_path('preferences/preferences.conf') # add your config items - see the ConfigParser docs for how to do this if os.path.exists(cfile): config.read (cfile) # add the settings to the structure of the file, and lets write it out... self.Method = config.get('preferences','method') self.timezone = config.get('preferences','timezone') self.latitude = config.get('preferences','latitude') self.longitude = config.get('preferences','longitude') self.dstValue = config.get('preferences','dstValue') self.athanToggle = config.get('preferences','athanToggle') self.set_prayer_time() def set_prayer_time(self): self.today = datetime.datetime.now() self.PT = PrayTimes() self.PT.setMethod(self.Method) self.check_time = self.PT.getTimes(date.today(), (float(self.latitude) , float(self.longitude)),float(self.timezone), int(self.dstValue)) self.times = self.PT.getTimes(date.today(), (float(self.latitude) , float(self.longitude)),float(self.timezone), int(self.dstValue), '12h') def menu_setup(self): self.menu = Gtk.Menu() cal = calverter() jd = cal.gregorian_to_jd(self.today.year, self.today.month, self.today.day) self.date = add2menu(self.menu,text =(self.today.strftime("%A, ") + str(cal.string_jd_to_islamic(jd)))) self.date.show() add2menu(self.menu) self.Fajr = Gtk.MenuItem("Fajr\t\t\t" + self.times['fajr']) self.Fajr.set_sensitive(False) #use this to enable only one prayer self.Fajr.show() self.menu.append(self.Fajr) self.Sunrise = Gtk.MenuItem("Sunrise\t\t" + self.times['sunrise']) self.Sunrise.set_sensitive(False) self.Sunrise.show() self.menu.append(self.Sunrise) self.Dhuhr = Gtk.MenuItem("Dhuhr\t\t\t" + self.times['dhuhr']) self.Dhuhr.set_sensitive(False) self.Dhuhr.show() self.menu.append(self.Dhuhr) self.Asr = Gtk.MenuItem("Asr\t\t\t" + self.times['asr']) self.Asr.set_sensitive(False) self.Asr.show() self.menu.append(self.Asr) self.Maghrib = Gtk.MenuItem("Maghrib\t\t" + self.times['maghrib']) self.Maghrib.set_sensitive(False) self.Maghrib.show() self.menu.append(self.Maghrib) self.Isha = Gtk.MenuItem("Isha\t\t\t" + self.times['isha']) self.Isha.set_sensitive(False) self.Isha.show() self.menu.append(self.Isha) add2menu(self.menu) self.preferences = add2menu(self.menu,text=('Preferences')) self.preferences.connect("activate", self.show_preferences) # write a uclean def self.preferences.show() self.help_menu = add2menu(self.menu,text =('Help')) self.help_menu.set_submenu(self.get_help_menu()) self.help_menu.show() self.quit_item = Gtk.MenuItem("Quit Salatuk") self.quit_item.connect("activate", self.quit) self.quit_item.show() self.menu.append(self.quit_item) def show_preferences(self, widget): self.win.load_at_startup() self.win.show_all() def main(self): Gtk.main() def quit(self, widget): exit(0) def update_prayers(self): self.load_configuration_on_start() self.Fajr.set_label("Fajr\t\t\t" + self.times['fajr']) self.Sunrise.set_label("Sunrise\t\t" + self.times['sunrise']) self.Dhuhr.set_label("Dhuhr\t\t\t" + self.times['dhuhr']) self.Asr.set_label("Asr\t\t\t" + self.times['asr']) self.Maghrib.set_label("Maghrib\t\t" + self.times['maghrib']) self.Isha.set_label("Isha\t\t\t" + self.times['isha']) def update_hijri_date(self): cal = calverter() jd = cal.gregorian_to_jd(self.today.year, self.today.month, self.today.day) self.date.set_label(self.today.strftime("%A, ") + str(cal.string_jd_to_islamic(jd))) def get_help_menu(self): # This function was written by Lorenzo Carbonell for My_Weather_Indicator. I modified this copy to work with uClean under the terms of the GNU General Public License as published by the Free Software Foundation. help_menu = Gtk.Menu() # add2menu(help_menu,text = ('In Github'),conector_event = 'activate',conector_action = lambda x: webbrowser.open('https://github.com/fo2adzz/Salatuk')) add2menu(help_menu,text = ('Report a bug...'),conector_event = 'activate',conector_action = lambda x: webbrowser.open('https://github.com/fo2adzz/Salatuk/issues')) add2menu(help_menu) web = add2menu(help_menu,text = ('Homepage'),conector_event = 'activate',conector_action = lambda x: webbrowser.open('http://www.fo2adzz.com')) twitter = add2menu(help_menu,text = ('Follow us in Twitter'),conector_event = 'activate',conector_action = lambda x: webbrowser.open('https://twitter.com/fo2adzz')) googleplus = add2menu(help_menu,text = ('Follow us in Google+'),conector_event = 'activate',conector_action = lambda x: webbrowser.open('https://plus.google.com/u/0/112984301584620244860/posts')) facebook = add2menu(help_menu,text = ('Follow us in Facebook'),conector_event = 'activate',conector_action = lambda x: webbrowser.open('https://www.facebook.com/fouad.hassouneh')) # add2menu(help_menu,text = _('About'),conector_event = 'activate',conector_action = self.menu_about_response) web.set_image(Gtk.Image.new_from_file(get_resource_path('img/social/fo2adzz.png'))) web.set_always_show_image(True) twitter.set_image(Gtk.Image.new_from_file(get_resource_path('img/social/twitter.png'))) twitter.set_always_show_image(True) googleplus.set_image(Gtk.Image.new_from_file(get_resource_path('img/social/googleplus.png'))) googleplus.set_always_show_image(True) facebook.set_image(Gtk.Image.new_from_file(get_resource_path('img/social/facebook.png'))) facebook.set_always_show_image(True) # help_menu.show() return help_menu # # update all the labels every timeout seconds def callback(self): self.update_hijri_date() self.update_prayers() check_prayer(self, self.check_time) return True
def generate(lat, lon, startdate, days, method, option): PT = PrayTimes(method) if option == '+8': PT.adjust({ 'imsak': '10 min', 'fajr': 17.8, 'dhuhr': '2 min', 'asr': '1.03', 'maghrib': 1.5, 'isha': 18.7 }) else: PT.adjust({ 'imsak': '10 min', 'fajr': 19.4, 'dhuhr': '2 min', 'asr': '1.03', 'maghrib': 1.8, 'isha': 18.7 }) #result = [] c = Calendar() formatDate = '%Y-%m-%d' formatDatetime = '%Y-%m-%d %H:%M:%S' hourDelta = 7 secondDelta = 5 mapTime = { 'Imsak': 'imsak', 'Subuh': 'fajr', 'Dzuhur': 'dhuhr', 'Asar': 'asr', 'Maghrib': 'maghrib', 'Isya': 'isha', } dte = datetime.strptime(startdate, formatDate) for i in range(days): today = dte + timedelta(days=i) times = PT.getTimes(today.date(), [float(lat), float(lon)], +7) ''' result.append({ 'imsak': times['imsak'], 'subuh': times['fajr'], 'dzuhur': times['dhuhr'], 'asar': times['asr'], 'maghrib': times['maghrib'], 'isya': times['isha'] }) ''' todayTimeStr = today.strftime(formatDate) for name, key in mapTime.items(): e = setEvent(times, name, key, todayTimeStr, hourDelta, secondDelta, formatDatetime) c.events.add(e) with open('jadwal_imsakiyah_%s_%s.ics' % (lat, lon), 'w') as f: f.write(str(c))
from praytimes import PrayTimes p = PrayTimes("Karachi") p.setMethod("Karachi") p.adjust({"asr": "Hanafi"}) import datetime times = p.getTimes(datetime.date.today(), (47.6097, -122.3331), -8, True) from pprint import pprint pprint(times) from lxml import objectify from lxml import etree from requests import get r = get("http://www.earthtools.org/timezone/47.6097/-122.3331") root = objectify.fromstring(r.text.encode("ascii")) # root = objectify.fromstring( # '''<?xml version="1.0" encoding="ISO-8859-1" ?> # <timezone xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.earthtools.org/timezone-1.1.xsd"> # <version>1.1</version> # <location> # <latitude>47.6097</latitude> # <longitude>-122.3331</longitude> # </location>
def post(self): urlfetch.set_default_fetch_deadline(60) body = json.loads(self.request.body) logging.info('request body:') logging.info(body) self.response.write(json.dumps(body)) update_id = body['update_id'] message = body['message'] message_id = message.get('message_id') date = message.get('date') text = message.get('text') fr = message.get('from') chat = message['chat'] chat_id = chat['id'] if not text: logging.info('no text') return def reply(msg=None, img=None): if msg: resp = urllib2.urlopen(BASE_URL + 'sendMessage', urllib.urlencode({ 'chat_id': str(chat_id), 'text': msg.encode('utf-8'), 'disable_web_page_preview': 'true', 'reply_to_message_id': str(message_id), })).read() elif img: resp = multipart.post_multipart(BASE_URL + 'sendPhoto', [ ('chat_id', str(chat_id)), ('reply_to_message_id', str(message_id)), ], [ ('photo', 'image.jpg', img), ]) else: logging.error('no msg or img specified') resp = None logging.info('send response:') logging.info(resp) if text.startswith('/'): if text == '/start': reply('Bot enabled') setEnabled(chat_id, True) elif text == '/stop': reply('Bot disabled') setEnabled(chat_id, False) elif text == '/image': img = Image.new('RGB', (512, 512)) base = random.randint(0, 16777216) pixels = [base+i*j for i in range(512) for j in range(512)] # generate sample image img.putdata(pixels) output = StringIO.StringIO() img.save(output, 'JPEG') reply(img=output.getvalue()) else: reply('What command?') # CUSTOMIZE FROM HERE elif 'Rizky' in text: reply('handsome') elif 'firja' in text: reply('ganteng gann... suerr') elif 'rizky' in text: reply('apa manggil-manggil si rizky. dia itu punya aku') elif 'who are you' in text: reply('octaphire created by kucengaerdev laboratory gan, https://github.com/kucengaerdev/Octhphire') elif 'what time' in text: reply('look at the top-right corner of your screen!') elif 'siapa lo' in text: reply('aku adalah seorang muslim jika aku sendirian dan komunis jika aku dalam kerumunan karena Allah berfirman setan ada dalam kerumunan (Tan Malaka)') elif 'qget' in text: reply("wait") awal= text.replace("qget", "www.quran.com") akhir= awal.replace(" ", "/") def openurl(url): try: page = urllib2.urlopen(url).read() except: print "/!\ Error getting URL content!" sys.exit(1) return page url = "http://" + akhir soup = BeautifulSoup(openurl(url)) khabarc = soup.find('div', attrs={"class":"ayah language_6 text"}) x = khabarc.get_text() if 'Sahih International' in x: y = x.replace("Sahih International", "") else: y = "sorry. a little bit error here" reply(y) #quran elif 'sholat' in text: awal = text.replace("sholat","maps.googleapis.com/maps/api/geocode/json?address") ahir = text.replace(" ","=") url= "https://"+ahir json_string = urllib2.urlopen(url) data = json.load(json_string) lat = data['results'][0]['geometry']['location']['lat'] lng = data['results'][0]['geometry']['location']['lng'] city = url.replace("https://maps.googleapis.com/maps/api/geocode/json?address=","waktu sholat untuk kota ") string_reply = city+" dalam waktu indonesia bagian barat(WIB). " j = PrayTimes() times = j.getTimes(date.today(),(lat,lng),7) for u in ['Imsak','Fajr','Sunrise','Dhuhr','Asr','Maghrib','Isha']: string_reply += (u + ': '+times[u.lower()]) reply(string_reply) else: if getEnabled(chat_id): resp1 = json.load(urllib2.urlopen('http://www.simsimi.com/requestChat?lc=en&ft=1.0&req=' + urllib.quote_plus(text.encode('utf-8')))) back = resp1.get('res') if not back: reply('okay...') elif 'I HAVE NO RESPONSE' in back: reply('you said something with no meaning') else: reply(back) else: logging.info('not enabled for chat_id {}'.format(chat_id))
def generate(lat, lon, startdate, days): PT = PrayTimes('Makkah') PT.adjust({'wkt':'10 min', 'fajr':17.8, 'dhuhr':'2 min', 'asr':'1.03', 'maghrib':1.5,'isha':18.7}) #result = [] c = Calendar() dte = datetime.strptime(startdate, '%Y-%m-%d') for i in range(days): today = dte + timedelta(days=i) times = PT.getTimes(today.date(), [float(lat),float(lon)],+7) ''' result.append({ 'imsak': times['imsak'], 'subuh': times['fajr'], 'dzuhur': times['dhuhr'], 'asar': times['asr'], 'maghrib': times['maghrib'], 'isya': times['isha'] }) ''' e = Event() e.name = 'Imsak' wkt = datetime.strptime(today.strftime('%Y-%m-%d')+' '+times['imsak']+':00', '%Y-%m-%d %H:%M:%S') wkt = wkt - timedelta(hours=7) e.begin = wkt.strftime('%Y-%m-%d %H:%M:%S') e.end = (wkt+timedelta(seconds=5)).strftime('%Y-%m-%d %H:%M:%S') c.events.add(e) e = Event() e.name = 'Subuh' wkt = datetime.strptime(today.strftime('%Y-%m-%d')+' '+times['fajr']+':00', '%Y-%m-%d %H:%M:%S') wkt = wkt - timedelta(hours=7) e.begin = wkt.strftime('%Y-%m-%d %H:%M:%S') e.end = (wkt+timedelta(seconds=5)).strftime('%Y-%m-%d %H:%M:%S') c.events.add(e) e = Event() e.name = 'Dzuhur' wkt = datetime.strptime(today.strftime('%Y-%m-%d')+' '+times['dhuhr']+':00', '%Y-%m-%d %H:%M:%S') wkt = wkt - timedelta(hours=7) e.begin = wkt.strftime('%Y-%m-%d %H:%M:%S') e.end = (wkt+timedelta(seconds=5)).strftime('%Y-%m-%d %H:%M:%S') c.events.add(e) e = Event() e.name = 'Asar' wkt = datetime.strptime(today.strftime('%Y-%m-%d')+' '+times['asr']+':00', '%Y-%m-%d %H:%M:%S') wkt = wkt - timedelta(hours=7) e.begin = wkt.strftime('%Y-%m-%d %H:%M:%S') e.end = (wkt+timedelta(seconds=5)).strftime('%Y-%m-%d %H:%M:%S') c.events.add(e) e = Event() e.name = 'Maghrib' wkt = datetime.strptime(today.strftime('%Y-%m-%d')+' '+times['maghrib']+':00', '%Y-%m-%d %H:%M:%S') wkt = wkt - timedelta(hours=7) e.begin = wkt.strftime('%Y-%m-%d %H:%M:%S') e.end = (wkt+timedelta(seconds=5)).strftime('%Y-%m-%d %H:%M:%S') c.events.add(e) e = Event() e.name = 'Isya' wkt = datetime.strptime(today.strftime('%Y-%m-%d')+' '+times['isha']+':00', '%Y-%m-%d %H:%M:%S') wkt = wkt - timedelta(hours=7) e.begin = wkt.strftime('%Y-%m-%d %H:%M:%S') e.end = (wkt+timedelta(seconds=5)).strftime('%Y-%m-%d %H:%M:%S') c.events.add(e) with open('jadwal_imsakiyah_%s_%s.ics' % (lat, lon), 'w') as f: f.write(str(c))
isha = otherAzansDir + '/' + otherAzans[randint(0, len(otherAzans)-1)] pt = PrayTimes() dsT = time.localtime().tm_isdst dic = {'imsak':0, 'fajr':5, 'sunrise':0, 'dhuhr':0, 'asr':0, 'maghrib':-16, 'isha':4, 'midnight':0} dt = date.today() cords = (40.277310, -74.561890) pt.tune(dic) print(-(time.timezone/3600)) times = pt.getTimes(dt, cords, -(time.timezone/3600), dst=dsT) system_cron = CronTab(user='******') system_cron.remove_all(comment='pi-cronJobs') # system_cron.remove_all(comment='daily_run') def schedule(time, cmd, cmt): job = system_cron.new(command=cmd, comment=cmt) t = time.split(":") hr = t[0] min = t[1] job.minute.on(int(min)) job.hour.on(int(hr)) job.set_comment("pi-cronJobs")