Last active
August 29, 2015 14:16
-
-
Save mbmccormick/bcb6b3f0913e03061f64 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local jsondata = [[ | |
[ | |
{ | |
"id": 7914216, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 2 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 1" | |
}, | |
{ | |
"id": 7914217, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 5 | |
}, | |
"status": "planned", | |
"activity_type": "Medium", | |
"sport_type": "running", | |
"day_name": "Day 2" | |
}, | |
{ | |
"id": 7914218, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 7 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 3" | |
}, | |
{ | |
"id": 7914219, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 8 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 4" | |
}, | |
{ | |
"id": 7914220, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 10 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 5" | |
}, | |
{ | |
"id": 7914221, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 12 | |
}, | |
"status": "planned", | |
"activity_type": "Interval", | |
"sport_type": "running", | |
"day_name": "Day 6" | |
}, | |
{ | |
"id": 7914222, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 14 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 7" | |
}, | |
{ | |
"id": 7914223, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 15 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 8" | |
}, | |
{ | |
"id": 7914224, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 17 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 9" | |
}, | |
{ | |
"id": 7914225, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 19 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 10" | |
}, | |
{ | |
"id": 7914226, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 22 | |
}, | |
"status": "planned", | |
"activity_type": "Test Race", | |
"sport_type": "running", | |
"day_name": "Day 11" | |
}, | |
{ | |
"id": 7914227, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 24 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 12" | |
}, | |
{ | |
"id": 7914228, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 26 | |
}, | |
"status": "planned", | |
"activity_type": "Medium", | |
"sport_type": "running", | |
"day_name": "Day 13" | |
}, | |
{ | |
"id": 7914229, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 28 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 14" | |
}, | |
{ | |
"id": 7914230, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 29 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 15" | |
}, | |
{ | |
"id": 7914231, | |
"date": { | |
"year": 2015, | |
"month": 3, | |
"day": 31 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 16" | |
}, | |
{ | |
"id": 7914232, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 2 | |
}, | |
"status": "planned", | |
"activity_type": "Interval", | |
"sport_type": "running", | |
"day_name": "Day 17" | |
}, | |
{ | |
"id": 7914233, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 5 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 18" | |
}, | |
{ | |
"id": 7914234, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 7 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 19" | |
}, | |
{ | |
"id": 7914235, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 9 | |
}, | |
"status": "planned", | |
"activity_type": "Tempo Run", | |
"sport_type": "running", | |
"day_name": "Day 20" | |
}, | |
{ | |
"id": 7914236, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 11 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 21" | |
}, | |
{ | |
"id": 7914237, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 12 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 22" | |
}, | |
{ | |
"id": 7914238, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 14 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 23" | |
}, | |
{ | |
"id": 7914239, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 16 | |
}, | |
"status": "planned", | |
"activity_type": "Interval", | |
"sport_type": "running", | |
"day_name": "Day 24" | |
}, | |
{ | |
"id": 7914240, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 18 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 25" | |
}, | |
{ | |
"id": 7914241, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 19 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 26" | |
}, | |
{ | |
"id": 7914242, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 21 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 27" | |
}, | |
{ | |
"id": 7914243, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 23 | |
}, | |
"status": "planned", | |
"activity_type": "Medium", | |
"sport_type": "running", | |
"day_name": "Day 28" | |
}, | |
{ | |
"id": 7914244, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 26 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 29" | |
}, | |
{ | |
"id": 7914245, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 28 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 30" | |
}, | |
{ | |
"id": 7914246, | |
"date": { | |
"year": 2015, | |
"month": 4, | |
"day": 30 | |
}, | |
"status": "planned", | |
"activity_type": "Interval", | |
"sport_type": "running", | |
"day_name": "Day 31" | |
}, | |
{ | |
"id": 7914247, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 2 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 32" | |
}, | |
{ | |
"id": 7914248, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 3 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 33" | |
}, | |
{ | |
"id": 7914249, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 5 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 34" | |
}, | |
{ | |
"id": 7914250, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 7 | |
}, | |
"status": "planned", | |
"activity_type": "Tempo Run", | |
"sport_type": "running", | |
"day_name": "Day 35" | |
}, | |
{ | |
"id": 7914251, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 9 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 36" | |
}, | |
{ | |
"id": 7914252, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 10 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 37" | |
}, | |
{ | |
"id": 7914253, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 12 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 38" | |
}, | |
{ | |
"id": 7914254, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 14 | |
}, | |
"status": "planned", | |
"activity_type": "Interval", | |
"sport_type": "running", | |
"day_name": "Day 39" | |
}, | |
{ | |
"id": 7914255, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 16 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 40" | |
}, | |
{ | |
"id": 7914256, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 17 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 41" | |
}, | |
{ | |
"id": 7914257, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 19 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 42" | |
}, | |
{ | |
"id": 7914258, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 21 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 43" | |
}, | |
{ | |
"id": 7914259, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 24 | |
}, | |
"status": "planned", | |
"activity_type": "Test Race", | |
"sport_type": "running", | |
"day_name": "Day 44" | |
}, | |
{ | |
"id": 7914260, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 26 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 45" | |
}, | |
{ | |
"id": 7914261, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 28 | |
}, | |
"status": "planned", | |
"activity_type": "Medium", | |
"sport_type": "running", | |
"day_name": "Day 46" | |
}, | |
{ | |
"id": 7914262, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 30 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 47" | |
}, | |
{ | |
"id": 7914263, | |
"date": { | |
"year": 2015, | |
"month": 5, | |
"day": 31 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 48" | |
}, | |
{ | |
"id": 7914264, | |
"date": { | |
"year": 2015, | |
"month": 6, | |
"day": 2 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 49" | |
}, | |
{ | |
"id": 7914265, | |
"date": { | |
"year": 2015, | |
"month": 6, | |
"day": 4 | |
}, | |
"status": "planned", | |
"activity_type": "Tempo Run", | |
"sport_type": "running", | |
"day_name": "Day 50" | |
}, | |
{ | |
"id": 7914266, | |
"date": { | |
"year": 2015, | |
"month": 6, | |
"day": 6 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 51" | |
}, | |
{ | |
"id": 7914267, | |
"date": { | |
"year": 2015, | |
"month": 6, | |
"day": 7 | |
}, | |
"status": "planned", | |
"activity_type": "Long Distance", | |
"sport_type": "running", | |
"day_name": "Day 52" | |
}, | |
{ | |
"id": 7914268, | |
"date": { | |
"year": 2015, | |
"month": 6, | |
"day": 9 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 53" | |
}, | |
{ | |
"id": 7914269, | |
"date": { | |
"year": 2015, | |
"month": 6, | |
"day": 11 | |
}, | |
"status": "planned", | |
"activity_type": "Interval", | |
"sport_type": "running", | |
"day_name": "Day 54" | |
}, | |
{ | |
"id": 7914270, | |
"date": { | |
"year": 2015, | |
"month": 6, | |
"day": 14 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 55" | |
}, | |
{ | |
"id": 7914271, | |
"date": { | |
"year": 2015, | |
"month": 6, | |
"day": 16 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 56" | |
}, | |
{ | |
"id": 7914272, | |
"date": { | |
"year": 2015, | |
"month": 6, | |
"day": 18 | |
}, | |
"status": "planned", | |
"activity_type": "Easy", | |
"sport_type": "running", | |
"day_name": "Day 57" | |
}, | |
{ | |
"id": 7914273, | |
"date": { | |
"year": 2015, | |
"month": 6, | |
"day": 21 | |
}, | |
"status": "planned", | |
"activity_type": "Race", | |
"sport_type": "running", | |
"day_name": "Day 58" | |
} | |
] | |
]] | |
local data = json.parse(jsondata) | |
local records = {} | |
for key1, value1 in pairs(data) do | |
table.insert(records, value1) | |
end | |
function leadingZero(value) | |
if value < 10 then | |
return '0' .. value | |
end | |
return value | |
end | |
local result = '' | |
result = result .. 'BEGIN:VCALENDAR\r\n' | |
result = result .. 'VERSION:2.0\r\n' | |
result = result .. 'PRODID:-//runtastic/training-plan//NONSGML v1.0//EN\r\n' | |
function splitter(str) | |
local t = {} | |
local function helper(line) table.insert(t, line) return "" end | |
helper((str:gsub("(.-)\r?\n", helper))) | |
return t | |
end | |
for i = 51, #records do | |
local response = http.request { | |
url = 'https://www.runtastic.com/api/scheduled_training_plan/activity?id=118766&activity_id=' .. records[i].id .. '&user_id=52137199', | |
headers = { | |
['Cookie'] = 'split=%7B%22navigation%3A3%22%3A%22old%22%7D; remember_user_token=BAhbB1sGaQTvjBsDSSIZUEtsemc2NHFLTUhmbld4cXQ4VWsGOgZFVA%3D%3D--d5cf0c416ceaea06d6746f848254587fa50134f8; _gat=1; __utmt=1; _runtastic_session=BAh7CUkiD3Nlc3Npb25faWQGOgZFVEkiJTIzZGI0ODkzMzQ2ZTRkNzdmMmI5NzI4ZjY3Yzk0MjU4BjsAVEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIJVXNlcgY7AEZbBmkE74wbA0kiGUhOQjRYUHhueUxuY2s2QUdUenpuBjsAVEkiE3VzZXJfcmV0dXJuX3RvBjsAVCI3L2VuL3VzZXJzL21hdHQtbWNjb3JtaWNrLTEyL3RyYWluaW5nLXBsYW5zLzExODc2Nj9JIhBfY3NyZl90b2tlbgY7AEZJIjE5VWRUTGZ1UWkwZnpoS3M4UU5lV2gyRkplV3VMa1JXYm96bTRtd25nODhvPQY7AEY%3D--60e20774dd1d3477bf0cceb7f768a8e11b12ca2c; _ga=GA1.2.1231831281.1425322350; __utma=1.1231831281.1425322350.1425322350.1425503199.2; __utmb=1.5.9.1425503209735; __utmc=1; __utmz=1.1425322350.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _mkra_ctxt=1c4665a013b7523de7817930bf448a97--200; locale=en' | |
} | |
} | |
local content = splitter(response.content) | |
local description = content[8] | |
if content[10] == 'Overall duration: ' then | |
description = description .. "\r\n\r\n" .. "Overall Duration: " .. content[11] | |
end | |
description = description:gsub("<p>", "") | |
description = description:gsub("</p>", "") | |
description = description:gsub("<span class='bold'>", "") | |
description = description:gsub("</span>", "") | |
result = result .. 'BEGIN:VEVENT\r\n' | |
result = result .. 'UID:' .. records[i].id .. '@runtastic.com\r\n' | |
-- result = result .. 'DTSTAMP:' .. records[i].date.year .. leadingZero(records[i].date.month) .. leadingZero(records[i].date.day) .. 'T000008Z\r\n' | |
result = result .. 'ORGANIZER;CN=Runtastic:MAILTO:[email protected]\r\n' | |
result = result .. 'DTSTART;VALUE=DATE:' .. records[i].date.year .. leadingZero(records[i].date.month) .. leadingZero(records[i].date.day) .. '\r\n' | |
result = result .. 'DTEND;VALUE=DATE:' .. records[i].date.year .. leadingZero(records[i].date.month) .. leadingZero(records[i].date.day + 1) .. '\r\n' | |
result = result .. 'SUMMARY:Training Plan: ' .. records[i].day_name .. ' (' .. records[i].activity_type .. ')\r\n' | |
result = result .. 'DESCRIPTION:' .. description .. '\r\n' | |
result = result .. 'END:VEVENT\r\n' | |
end | |
result = result .. 'END:VCALENDAR\r\n' | |
return result |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment