From dea733548183e52678e4e537093deddfde6e03ba Mon Sep 17 00:00:00 2001 From: Arcidayne <9382522b@opayq.com> Date: Sat, 12 Sep 2015 08:25:19 -0700 Subject: [PATCH] Epic Calendar in the MUD! --- Epic_Calendar/Epic_Calendar.xml | 49 +++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/Epic_Calendar/Epic_Calendar.xml b/Epic_Calendar/Epic_Calendar.xml index ffc4e98..d3b7c5d 100644 --- a/Epic_Calendar/Epic_Calendar.xml +++ b/Epic_Calendar/Epic_Calendar.xml @@ -49,25 +49,14 @@ -- [[Many thanks to Shaelynne for keeping everyone up-to-date with the Epic Calendars! ]]-- function date_check(dateTime) - local xyear, xmonth, xday = string.match(dateTime,"(%d+)%-(%d+)%-(%d+)") - - local xhour, xmin = string.match(dateTime,"%a(%d+):(%d+)") - if (os.time()-os.time({year = xyear, month = xmonth, day = xday, hour = xhour or 23, min = xmin or 59, sec = 0})) < 0 then + if (os.time(os.date("!*t"))-dateTime) < 0 then return true else return false end end -function date_format(dateTime) - local xyear, xmonth, xday = string.match(dateTime,"(%d+)%-(%d+)%-(%d+)") - - local xhour, xmin = string.match(dateTime,"%a(%d+):(%d+)") - - return os.date ("%A, %B %d %Y at %I:%M%p", os.time({year = xyear, month = xmonth, day = xday, hour = xhour or 0, min = xmin or 0, sec = 0})) -end - function date_note(dateTime) if string.match(dateTime, "%a%d+:%d+") then return "" @@ -76,6 +65,22 @@ function date_note(dateTime) end end +function get_tz_offset(dateTime, offset) + + local xyear, xmonth, xday = string.match(dateTime,"(%d+)%-(%d+)%-(%d+)") + + local xhour, xmin = string.match(dateTime,"%a(%d+):(%d+)") + + local UTC_from_Eastern = os.time({year = xyear, month = xmonth, day = xday, hour = xhour or 23, min = xmin or 59, sec = 0}) + (offset*3600) + + + local UTC_time, local_time = os.time(os.date("!*t")), os.time() + local time_zone = os.difftime(local_time, UTC_time) + + local converted_time = UTC_from_Eastern + time_zone + return converted_time +end + function get_cal(epic) async_ok, async = pcall (require, "async") json = require 'json' @@ -96,18 +101,27 @@ function get_cal(epic) end rpage = "https://www.googleapis.com/calendar/v3/calendars/" .. calid .. "/events?key=" .. key + tzpage = "http://wwp.greenwichmeantime.com/time/scripts/clock-8/runner.php?tz=america_cayman" if async_ok then epage = async.request(rpage,"HTTPS") + tpage = async.request(tzpage, "HTTP") end retval, page, status, headers, full_status = epage:join() epage = nil - + if status == 200 then epage = json.decode(page) end + retval, page, status, headers, full_status = tpage:join() + tpage = nil + + if status == 200 then + tz_off = string.match(page,"%(GMT %-(%d):00%)") + end + for i = 1, #epage.items do local starttime, summary = "", "" if epage.items[i].start.date then @@ -122,18 +136,19 @@ function get_cal(epic) summary = epage.items[i].summary .. "- " end - if date_check(starttime) then - table.insert(cal_output, summary .. date_format(starttime) .. " " .. date_note(starttime)) + if date_check(get_tz_offset(starttime, tz_off)) then + table.insert(cal_output, summary .. os.date("%A, %B %d %Y at %I:%M%p",get_tz_offset(starttime, tz_off)) .. " " .. date_note(starttime)) end end if cal_output[1] then - ColourNote("white","","================= Upcoming Runs (MUD time) ================\n\n" .. table.concat(cal_output,"\n") .. "\n\n===========================================================") + ColourNote("white","","================ Upcoming Runs (Local time) ===============\n\n" .. table.concat(cal_output,"\n") .. "\n\n===========================================================") else - ColourNote("white","","================= Upcoming Runs (MUD time) ================\n\nNo upcoming runs for " .. epic .. "!\n\n===========================================================") + ColourNote("white","","================ Upcoming Runs (Local time) ===============\n\nNo upcoming runs for " .. epic .. "!\n\n===========================================================") end else ColourNote("white", "", "======================== EpicError ========================\n\nNot a valid calendar choice (IF/Icefall, Inferno, OC, All)\n\n===========================================================") end + epage, tz_off = nil, nil end ]]>