Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello β I'm @olemoritz on Twitter.
Error w/ reminders to a specific calendar
-
Hi π
I'm brand new to Pythonista & fairly less new to Python & Ipad in general. I'm super excited tho, my first goal succeeded; adding 5 reminders at once with alarms at 5 different times. Now I wanna do this everyday, preferably into it's own calendar with the days' date as name. Creating this calendar+name was ok, but getting the reminders in this specific calendar seems not to be working for me βΉοΈ I've followed the documentation (and tried some variations and google, yet no results ..) what am I missing?? Any insight would be appreciated! Thx
Code:
import requests import reminders import dialogs import datetime Stimes = requests.get("http://api.aladhan.com/v1/timingsByCity?city=Den%20Helder&country=The%20Netherlands&method=3").json() F = Stimes.get('data').get('timings').get('Fajr') D = Stimes.get('data').get('timings').get('Dhuhr') A = Stimes.get('data').get('timings').get('Asr') M = Stimes.get('data').get('timings').get('Maghrib') I = Stimes.get('data').get('timings').get('Isha') ddmmyyyy = Stimes.get('data').get('date').get('gregorian').get('date') yyyymmdd = (ddmmyyyy.split('-')[2])+'-'+(ddmmyyyy.split('-')[1])+'-'+(ddmmyyyy.split('-')[0]) all_calendars = reminders.get_all_calendars() for calendar in all_calendars: if calendar.title == ddmmyyyy: print('Calendar' + ddmmyyyy + 'already exists') break else: new_calendar = reminders.Calendar() new_calendar.title = ddmmyyyy new_calendar.save() print('Calendar for ' + ddmmyyyy + ' added') Fajr_str = yyyymmdd+' '+F+':00.00000' Fajr_obj = datetime.datetime.strptime(Fajr_str, '%Y-%m-%d %H:%M:%S.%f') Dhuhr_str = yyyymmdd+' '+D+':00.00000' Dhuhr_obj = datetime.datetime.strptime(Dhuhr_str, '%Y-%m-%d %H:%M:%S.%f') Asr_str = yyyymmdd+' '+A+':00.00000' Asr_obj = datetime.datetime.strptime(Asr_str, '%Y-%m-%d %H:%M:%S.%f') Maghrib_str = yyyymmdd+' '+M+':00.00000' Maghrib_obj = datetime.datetime.strptime(Maghrib_str, '%Y-%m-%d %H:%M:%S.%f') Ishaa_str = yyyymmdd+' '+I+':00.00000' Ishaa_obj = datetime.datetime.strptime(Ishaa_str, '%Y-%m-%d %H:%M:%S.%f') def Fajr(): r = reminders.Reminder([ddmmyyyy]) r.title = 'Fajr' due = Fajr_obj r.due_date = due alarm = reminders.Alarm() alarm.date = due r.alarms = [alarm] r.save() dialogs.hud_alert('Fajr reminder saved') def Dhuhr(): r = reminders.Reminder([ddmmyyyy]) r.title = 'Dhuhr' due = Dhuhr_obj r.due_date = due alarm = reminders.Alarm() alarm.date = due r.alarms = [alarm] r.save() dialogs.hud_alert('Dhuhr reminder saved') def Asr(): r = reminders.Reminder([ddmmyyyy]) r.title = 'Asr' due = Asr_obj r.due_date = due alarm = reminders.Alarm() alarm.date = due r.alarms = [alarm] r.save() dialogs.hud_alert('Asr reminder saved') def Maghrib(): r = reminders.Reminder([ddmmyyyy]) r.title = 'Maghrib' due = Maghrib_obj r.due_date = due alarm = reminders.Alarm() alarm.date = due r.alarms = [alarm] r.save() dialogs.hud_alert('Maghrib reminder saved') def Ishaa(): r = reminders.Reminder([ddmmyyyy]) r.title = 'Ishaa' due = Ishaa_obj r.due_date = due alarm = reminders.Alarm() alarm.date = due r.alarms = [alarm] r.save() dialogs.hud_alert('Ishaa reminder saved') if __name__ == '__main__': Fajr() Dhuhr() Asr() Maghrib() Ishaa()
Error: line 44, TypeError: Expected a Calendar object ((how do I make it a calendar object??))
Documentation:
Reminder Objects
class reminders.Reminder([calendar]) ((isn't this what's in there? I've also tried for other calendarnames already existing before this script, same results))
[...]
If you donβt pass a specific Calendar when initializing the Reminder, the default calendar is used. ((this works fine)) -
@SymbolicsymbolS the line reminders.Reminder() needs a calendar object as parameter, and you pass a string object. For instance, your variables "calendar" and "new_calendar" are calendar objects and your variable "ddmmyyyy" is a string object, so you get an error.
The doc
class reminders.Reminder([calendar])
means that the calendar parameter is optional (use of [...]).
Either you use it without parameter, either with a calendar object as parameter but never with the [...].This works
def Fajr(): r = reminders.Reminder(new_calendar) . . .
-
@cvp Thank you!! All's clear & working, yay π