adding sharks vcal

This commit is contained in:
tengel 2024-03-20 11:28:46 -05:00
parent 1c0362acc9
commit b0c41b4d6f

78
awk/sharks_vcal.awk Normal file
View file

@ -0,0 +1,78 @@
#!/usr/bin/env gawk
#
# Convert the Sharks "Outlook" (tab delimited) format to vCal format
# - http://www.sjsharks.com/schedule/outlook.asp
# Deprecated - upstream deleted this URL, historical use only
#
# SPDX-License-Identifier: MIT
# set our file separator to TAB, print out the vCal header
BEGIN {
FS = "[t]";
print "BEGIN:VCALENDAR";
print "VERSION:1.0";
}
# Make a vCal UTC format out of the ugly Sharks format
# ex.: 10/5/2006 7:30:00 PM -> 20061006T023000Z
# m/d/y, h:m:s am|pm
function vCalDTS(date,time)
{
# date reorg for mktime()
split(date,adate,"/");
d_ts = sprintf("%d %02d %02d",adate[3],adate[1],adate[2]);
# time reorg for mktime()
split(time,time1," ");
split(time1[1],time2,":");
hour = sprintf("%02d",time2[1]);
#
# do a little 12->24 hour time voodoo
if ((tolower(time1[2]) ~ /pm/) && (hour !~ /12/))
hour = hour + 12;
else if ((hour ~ /12/) && (tolower(time1[2]) ~ /am/))
hour = hour - 12;
t_ts = sprintf("%02d %02d %02d",hour,time2[2],time2[3]);
# make UTC time
e_ts = mktime(d_ts " " t_ts " -");
# add the GMT offset, accounting for daylight savings time
# (will always be -0700 or -0800 for the Sharks schedule)
if (tz ~ /-0700/)
e_ts = e_ts + 25200;
else
e_ts = e_ts + 28800;
# return vCal friendly format
return (strftime("%Y%m%dT%H%M%SZ",e_ts));
}
{
# skip the first line with column headers
if ($1 ~ /Subject/)
next;
# print the easy stuff
print "BEGIN:VEVENT";
printf("DTSTART:%sn",vCalDTS($2,$3));
printf("DTEND:%sn",vCalDTS($4,$5));
printf("SUMMARY:%sn",$1);
# home vs. away games
if (match($1," at "))
printf("LOCATION:%sn",substr($1,RSTART+RLENGTH));
else
print "LOCATION:Shark Tank";
# print the rest of the easy stuff
lm_dts = strftime("%Y%m%dT%H%M%S",systime());
print "LAST-MODIFIED:" lm_dts;
print "CLASS:PUBLIC";
print "END:VEVENT";
}
# print out the final vCal footer
END {
print "END:VCALENDAR";
}