Read the statement by Michael Teeuw here.
MMM-CalendarEXT2 - Calendar Read Failing When Time Value Is Missing from ics file
-
@sdetweil Doh, the error reporter already shows me the aValue.
aValue = 2022-01-01T::
By my count, that is 13 characters. Let me see if simply changing 10 to 13 in the above code fixes it.
-
@sdetweil Is this right?
ICAL.Time.fromString = function fromString(aValue) {
if (aValue.length > 10) {
return ICAL.Time.fromDateTimeString(aValue);
Log.log([CALEXT2] calendar: >> greater 10
);
Console.log($avalue.length );
} else {
return ICAL.Time.fromDateString(aValue);
Log.log([CALEXT2] calendar: >> less 10
);
Console.log($avalue.length );
}
}; -
@edd189 said in MMM-CalendarEXT2 - Calendar Read Failing When Time Value Is Missing from ics file:
Log.log([CALEXT2] calendar: >> greater 10);
Console.log($avalue.length );no… those new statements are after the return… so will never be executed
Log.log and console.log are the same here …
-
Thanks for your help. Not sure I’m finding the right place where the call is made to fromDateTimeString. I found a few more instances in a file under the build directory. I was previously only looking under the lib directory.
Not sure how I missed it, but I need to take a break for the evening. Pick it back up later.
-
Look at file design.js here: https://github.com/kewisch/ical.js/tree/main/lib/ical
What does line 401 do? The call on line 403 is where I get the error. I’m not familiar enough with java to know what decorate means.
-
@edd189 sorry. no idea
-
Ok, plan B – read the ICS files, save them locally, append the time to the DTSTART and DTEND fields.
Create a script to do this automatically every 24 hours.
Wish me luck! I’m in over my head, but its kinda fun.
Any advice? I am running this on linux, so figured I can just run a cronjob every 24 hours. What’s the best service to language to use to write such a simple script?
-
@edd189 people write in python, I do most of mine in bash shell.
-
Sorry for late reply. I was outside in holidays. I’ll study what your issue is tomorrow.
-
I went with an sh script. I run this every morning at 3am. Does the trick by fixing the calendar file (appends a made up time to the end where its missing) and saving locally. I had to point CX2 to a local file instead of the webcal link, but that is no problem.
The worst part was that the two calendars had slightly different formatting. The US Holidays had some sort of hidden return character at the end of the string, and it took me forever to figure out how awk should deal with that.
#!/bin/sh
#download files
curl “https://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics” --output us_holidays_raw.ics
curl “https://api.team-manager.gc.com/ics-calendar-documents/user/6e0678b2-2e99-44ce-9e3a-e32ac9ff6e78.ics?teamId=secret_id_string&token=secret_id_string” --output baseball_raw.ics#clean files
awk ‘{if(($1 ~ /DTSTART/) && length($1)==16) {print $0"T050000Z"} else {print $0}}’ dirtdawgs_raw.ics > baseball_awk1.ics
awk ‘{if(($1 ~ /DTEND/) && length($1)==14) {print $0"T195959Z"} else {print $0}}’ dirtdawgs_awk1.ics > baseball_awk2.icsawk ‘{if(($1 ~ /DTSTART/) && length($1)==17) {print substr($0,1,16)“T050000Z”} else {print $0}}’ us_holidays_raw.ics > us_holidays_awk1.ics
awk ‘{if(($1 ~ /DTEND/) && length($1)==15) {print substr($0,1,14)“T195959Z”} else {print $0}}’ us_holidays_awk1.ics > us_holidays_awk2.ics#copy and delete temp files
/bin/cp us_holidays_awk2.ics us_holidays.ics
/bin/cp baseball_awk2.ics baseball.ics
/bin/cp us_holidays.ics /home/edd/MagicMirror/config/us_holidays.ics
/bin/cp dirtdawgs.ics /home/edd/MagicMirror/config/baseball.ics
rm us_holidays_awk1.ics
rm us_holidays_awk2.ics
rm baseball_awk1.ics
rm baseball_awk2.icsexit