diff --git a/ics.bat b/ics.bat deleted file mode 100644 index 5163f4d..0000000 --- a/ics.bat +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -node ics -pause \ No newline at end of file diff --git a/ics.js b/ics.js deleted file mode 100644 index 2aede74..0000000 --- a/ics.js +++ /dev/null @@ -1,129 +0,0 @@ -const https = require('https'); -const fs = require('fs'); - -var settings = null; -var ics = ""; -var id = 0; - -function ics2json(input) -{ - var root = {}; - var curr = root; - input.split("\r\n").forEach(l => - { - var key = l.split(":")[0].split(";")[0]; - var val = l.split(":")[1]; - if (key == "BEGIN") - { - if (curr[val]) - { - val += "_" + (id++); - } - curr[val] = { - parent: curr - }; - curr = curr[val]; - } - else if (key == "END") - { - var parent = curr.parent; - delete curr.parent; - curr = parent; - } - else - { - curr[key] = key.startsWith("DT") ? dt(val) : val; - } - - }); - - root.VCALENDAR.VEVENTS = []; - Object.keys(root.VCALENDAR) - .filter(k => (k == "VEVENT" || k.startsWith("VEVENT_"))) - .forEach(k => - { - root.VCALENDAR.VEVENTS.push(root.VCALENDAR[k]); - delete root.VCALENDAR[k]; - }); - - return root.VCALENDAR; -} - -function dt(s) -{ - return new Date( - s.substr(0,4) + "-" + s.substr(4,2) + "-" + s.substr(6,2) - + "T" - + s.substr(9,2) + ":" + s.substr(11,2) + ":" + s.substr(13,2)); -} - -function displayevents(events, func, title, created) -{ - var group = {}; - events - .filter(func) - .sort( (a,b) => a.DTSTART - b.DTSTART) - .forEach(e => { - var formatteddate = e.DTSTART.toLocaleString('fr-FR', { timeZone: 'Europe/Paris', dateStyle: "full", timeStyle: "short" }); - var splitdate = formatteddate.split(" "); - var year = splitdate[3]; - var month = splitdate[2]; - group[year] = group[year] || {}; - group[year][month] = group[year][month] || []; - group[year][month].push(formatteddate + ": " + e.SUMMARY + (created ? ` (modifié le ${e.DTSTAMP.toLocaleString('fr-FR', { timeZone: 'Europe/Paris', dateStyle: "full" })})` : "")); - }); - console.log(title); - for (var year in group) - { - console.log(year); - for (var month in group[year]) - { - console.log(" " + month); - group[year][month].forEach(e => - { - console.log(" " + e); - }); - } - } - console.log(""); - -} -function main() -{ - var o = ics2json(ics); - - displayevents(o.VEVENTS, e => e.DTSTART >= (new Date), "A venir"); - - var lastweek = new Date(); - lastweek.setDate(lastweek.getDate() - settings.recentdays); - displayevents(o.VEVENTS, e => e.DTSTART >= (new Date) && e.DTSTAMP >= lastweek, "Changements récents", true); -} - -fs.readFile('settings.json', 'utf8', (err, data) => -{ - settings = JSON.parse(data); - - var options = - { - host: settings.host, - port: 443, - path : settings.path, - headers: { - 'Authorization': 'Basic ' + Buffer.from(settings.username + ':' + settings.passw).toString('base64') - } - }; - - request = https.get(options, function(res) - { - if (res.statusCode != 200) - { - console.log(`statusCode: ${res.statusCode}`) - } - - res.on('data', chunk => ics += chunk ); - res.on('end', main); - }); - - request.on('error', console.error); - request.end(); -}); diff --git a/ics.php b/ics.php new file mode 100644 index 0000000..1e31e73 --- /dev/null +++ b/ics.php @@ -0,0 +1,150 @@ + + + + + + + diff --git a/readme.md b/readme.md index bae983f..f95892b 100644 --- a/readme.md +++ b/readme.md @@ -1,8 +1,3 @@ # ics tool Script to display recently added or modified events in a calendar fetched from a caldav server. - -Usage: -* Rename settings.json.sample to settings.json -* Edit settings.json -* run `node ics` \ No newline at end of file diff --git a/settings.json.sample b/settings.json.sample deleted file mode 100644 index 9899ed6..0000000 --- a/settings.json.sample +++ /dev/null @@ -1,7 +0,0 @@ -{ - "host": "caldav.server.example", - "username": "username", - "passw": "pizz@!123", - "path": "/my/calendar/path", - "recentdays": 10 -} \ No newline at end of file diff --git a/settings.php.sample.php b/settings.php.sample.php new file mode 100644 index 0000000..3de1331 --- /dev/null +++ b/settings.php.sample.php @@ -0,0 +1,4 @@ +