diff --git a/examples/example-schedule.csv b/examples/example-schedule.csv index 72261c7..e710405 100644 --- a/examples/example-schedule.csv +++ b/examples/example-schedule.csv @@ -1,366 +1,366 @@ -"day","lunch","dinner" -"2022-08-01","https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html","https://ricette.giallozafferano.it/Riso-freddo-con-tonno-zucchine-e-limone.html" -"2022-08-02",, -"2022-08-03",, -"2022-08-04",, -"2022-08-05",, -"2022-08-06",, -"2022-08-07",, -"2022-08-08",, -"2022-08-09",, -"2022-08-10",, -"2022-08-11",, -"2022-08-12",, -"2022-08-13",, -"2022-08-14",, -"2022-08-15",, -"2022-08-16",, -"2022-08-17",, -"2022-08-18",, -"2022-08-19",, -"2022-08-20",, -"2022-08-21",, -"2022-08-22",, -"2022-08-23",, -"2022-08-24",, -"2022-08-25",, -"2022-08-26",, -"2022-08-27",, -"2022-08-28",, -"2022-08-29",, -"2022-08-30",, -"2022-08-31",, -"2022-09-01",, -"2022-09-02",, -"2022-09-03",, -"2022-09-04",, -"2022-09-05",, -"2022-09-06",, -"2022-09-07",, -"2022-09-08",, -"2022-09-09",, -"2022-09-10",, -"2022-09-11",, -"2022-09-12",, -"2022-09-13",, -"2022-09-14",, -"2022-09-15",, -"2022-09-16",, -"2022-09-17",, -"2022-09-18",, -"2022-09-19",, -"2022-09-20",, -"2022-09-21",, -"2022-09-22",, -"2022-09-23",, -"2022-09-24",, -"2022-09-25",, -"2022-09-26",, -"2022-09-27",, -"2022-09-28",, -"2022-09-29",, -"2022-09-30",, -"2022-10-01",, -"2022-10-02",, -"2022-10-03",, -"2022-10-04",, -"2022-10-05",, -"2022-10-06",, -"2022-10-07",, -"2022-10-08",, -"2022-10-09",, -"2022-10-10",, -"2022-10-11",, -"2022-10-12",, -"2022-10-13",, -"2022-10-14",, -"2022-10-15",, -"2022-10-16",, -"2022-10-17",, -"2022-10-18",, -"2022-10-19",, -"2022-10-20",, -"2022-10-21",, -"2022-10-22",, -"2022-10-23",, -"2022-10-24",, -"2022-10-25",, -"2022-10-26",, -"2022-10-27",, -"2022-10-28",, -"2022-10-29",, -"2022-10-30",, -"2022-10-31",, -"2022-11-01",, -"2022-11-02",, -"2022-11-03",, -"2022-11-04",, -"2022-11-05",, -"2022-11-06",, -"2022-11-07",, -"2022-11-08",, -"2022-11-09",, -"2022-11-10",, -"2022-11-11",, -"2022-11-12",, -"2022-11-13",, -"2022-11-14",, -"2022-11-15",, -"2022-11-16",, -"2022-11-17",, -"2022-11-18",, -"2022-11-19",, -"2022-11-20",, -"2022-11-21",, -"2022-11-22",, -"2022-11-23",, -"2022-11-24",, -"2022-11-25",, -"2022-11-26",, -"2022-11-27",, -"2022-11-28",, -"2022-11-29",, -"2022-11-30",, -"2022-12-01",, -"2022-12-02",, -"2022-12-03",, -"2022-12-04",, -"2022-12-05",, -"2022-12-06",, -"2022-12-07",, -"2022-12-08",, -"2022-12-09",, -"2022-12-10",, -"2022-12-11",, -"2022-12-12",, -"2022-12-13",, -"2022-12-14",, -"2022-12-15",, -"2022-12-16",, -"2022-12-17",, -"2022-12-18",, -"2022-12-19",, -"2022-12-20",, -"2022-12-21",, -"2022-12-22",, -"2022-12-23",, -"2022-12-24",, -"2022-12-25",, -"2022-12-26",, -"2022-12-27",, -"2022-12-28",, -"2022-12-29",, -"2022-12-30",, -"2022-12-31",, -"2023-01-01",, -"2023-01-02",, -"2023-01-03",, -"2023-01-04",, -"2023-01-05",, -"2023-01-06",, -"2023-01-07",, -"2023-01-08",, -"2023-01-09",, -"2023-01-10",, -"2023-01-11",, -"2023-01-12",, -"2023-01-13",, -"2023-01-14",, -"2023-01-15",, -"2023-01-16",, -"2023-01-17",, -"2023-01-18",, -"2023-01-19",, -"2023-01-20",, -"2023-01-21",, -"2023-01-22",, -"2023-01-23",, -"2023-01-24",, -"2023-01-25",, -"2023-01-26",, -"2023-01-27",, -"2023-01-28",, -"2023-01-29",, -"2023-01-30",, -"2023-01-31",, -"2023-02-01",, -"2023-02-02",, -"2023-02-03",, -"2023-02-04",, -"2023-02-05",, -"2023-02-06",, -"2023-02-07",, -"2023-02-08",, -"2023-02-09",, -"2023-02-10",, -"2023-02-11",, -"2023-02-12",, -"2023-02-13",, -"2023-02-14",, -"2023-02-15",, -"2023-02-16",, -"2023-02-17",, -"2023-02-18",, -"2023-02-19",, -"2023-02-20",, -"2023-02-21",, -"2023-02-22",, -"2023-02-23",, -"2023-02-24",, -"2023-02-25",, -"2023-02-26",, -"2023-02-27",, -"2023-02-28",, -"2023-03-01",, -"2023-03-02",, -"2023-03-03",, -"2023-03-04",, -"2023-03-05",, -"2023-03-06",, -"2023-03-07",, -"2023-03-08",, -"2023-03-09",, -"2023-03-10",, -"2023-03-11",, -"2023-03-12",, -"2023-03-13",, -"2023-03-14",, -"2023-03-15",, -"2023-03-16",, -"2023-03-17",, -"2023-03-18",, -"2023-03-19",, -"2023-03-20",, -"2023-03-21",, -"2023-03-22",, -"2023-03-23",, -"2023-03-24",, -"2023-03-25",, -"2023-03-26",, -"2023-03-27",, -"2023-03-28",, -"2023-03-29",, -"2023-03-30",, -"2023-03-31",, -"2023-04-01",, -"2023-04-02",, -"2023-04-03",, -"2023-04-04",, -"2023-04-05",, -"2023-04-06",, -"2023-04-07",, -"2023-04-08",, -"2023-04-09",, -"2023-04-10",, -"2023-04-11",, -"2023-04-12",, -"2023-04-13",, -"2023-04-14",, -"2023-04-15",, -"2023-04-16",, -"2023-04-17",, -"2023-04-18",, -"2023-04-19",, -"2023-04-20",, -"2023-04-21",, -"2023-04-22",, -"2023-04-23",, -"2023-04-24",, -"2023-04-25",, -"2023-04-26",, -"2023-04-27",, -"2023-04-28",, -"2023-04-29",, -"2023-04-30",, -"2023-05-01",, -"2023-05-02",, -"2023-05-03",, -"2023-05-04",, -"2023-05-05",, -"2023-05-06",, -"2023-05-07",, -"2023-05-08",, -"2023-05-09",, -"2023-05-10",, -"2023-05-11",, -"2023-05-12",, -"2023-05-13",, -"2023-05-14",, -"2023-05-15",, -"2023-05-16",, -"2023-05-17",, -"2023-05-18",, -"2023-05-19",, -"2023-05-20",, -"2023-05-21",, -"2023-05-22",, -"2023-05-23",, -"2023-05-24",, -"2023-05-25",, -"2023-05-26",, -"2023-05-27",, -"2023-05-28",, -"2023-05-29",, -"2023-05-30",, -"2023-05-31",, -"2023-06-01",, -"2023-06-02",, -"2023-06-03",, -"2023-06-04",, -"2023-06-05",, -"2023-06-06",, -"2023-06-07",, -"2023-06-08",, -"2023-06-09",, -"2023-06-10",, -"2023-06-11",, -"2023-06-12",, -"2023-06-13",, -"2023-06-14",, -"2023-06-15",, -"2023-06-16",, -"2023-06-17",, -"2023-06-18",, -"2023-06-19",, -"2023-06-20",, -"2023-06-21",, -"2023-06-22",, -"2023-06-23",, -"2023-06-24",, -"2023-06-25",, -"2023-06-26",, -"2023-06-27",, -"2023-06-28",, -"2023-06-29",, -"2023-06-30",, -"2023-07-01",, -"2023-07-02",, -"2023-07-03",, -"2023-07-04",, -"2023-07-05",, -"2023-07-06",, -"2023-07-07",, -"2023-07-08",, -"2023-07-09",, -"2023-07-10",, -"2023-07-11",, -"2023-07-12",, -"2023-07-13",, -"2023-07-14",, -"2023-07-15",, -"2023-07-16",, -"2023-07-17",, -"2023-07-18",, -"2023-07-19",, -"2023-07-20",, -"2023-07-21",, -"2023-07-22",, -"2023-07-23",, -"2023-07-24",, -"2023-07-25",, -"2023-07-26",, -"2023-07-27",, -"2023-07-28",, -"2023-07-29",, -"2023-07-30",, -"2023-07-31",, \ No newline at end of file +"day","wday","lunch","dinner" +"2022-08-01","lunedì","https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html","https://ricette.giallozafferano.it/Riso-freddo-con-tonno-zucchine-e-limone.html" +"2022-08-02","martedì",, +"2022-08-03","mercoledì",, +"2022-08-04","giovedì",, +"2022-08-05","venerdì",, +"2022-08-06","sabato",, +"2022-08-07","domenica",, +"2022-08-08","lunedì",, +"2022-08-09","martedì",, +"2022-08-10","mercoledì",, +"2022-08-11","giovedì",, +"2022-08-12","venerdì",, +"2022-08-13","sabato",, +"2022-08-14","domenica",, +"2022-08-15","lunedì",, +"2022-08-16","martedì",, +"2022-08-17","mercoledì",, +"2022-08-18","giovedì",, +"2022-08-19","venerdì",, +"2022-08-20","sabato",, +"2022-08-21","domenica",, +"2022-08-22","lunedì",, +"2022-08-23","martedì",, +"2022-08-24","mercoledì",, +"2022-08-25","giovedì",, +"2022-08-26","venerdì",, +"2022-08-27","sabato",, +"2022-08-28","domenica",, +"2022-08-29","lunedì",, +"2022-08-30","martedì",, +"2022-08-31","mercoledì",, +"2022-09-01","giovedì",, +"2022-09-02","venerdì",, +"2022-09-03","sabato",, +"2022-09-04","domenica",, +"2022-09-05","lunedì",, +"2022-09-06","martedì",, +"2022-09-07","mercoledì",, +"2022-09-08","giovedì",, +"2022-09-09","venerdì",, +"2022-09-10","sabato",, +"2022-09-11","domenica",, +"2022-09-12","lunedì",, +"2022-09-13","martedì",, +"2022-09-14","mercoledì",, +"2022-09-15","giovedì",, +"2022-09-16","venerdì",, +"2022-09-17","sabato",, +"2022-09-18","domenica",, +"2022-09-19","lunedì",, +"2022-09-20","martedì",, +"2022-09-21","mercoledì",, +"2022-09-22","giovedì",, +"2022-09-23","venerdì",, +"2022-09-24","sabato",, +"2022-09-25","domenica",, +"2022-09-26","lunedì",, +"2022-09-27","martedì",, +"2022-09-28","mercoledì",, +"2022-09-29","giovedì",, +"2022-09-30","venerdì",, +"2022-10-01","sabato",, +"2022-10-02","domenica",, +"2022-10-03","lunedì",, +"2022-10-04","martedì",, +"2022-10-05","mercoledì",, +"2022-10-06","giovedì",, +"2022-10-07","venerdì",, +"2022-10-08","sabato",, +"2022-10-09","domenica",, +"2022-10-10","lunedì",, +"2022-10-11","martedì",, +"2022-10-12","mercoledì",, +"2022-10-13","giovedì",, +"2022-10-14","venerdì",, +"2022-10-15","sabato",, +"2022-10-16","domenica",, +"2022-10-17","lunedì",, +"2022-10-18","martedì",, +"2022-10-19","mercoledì",, +"2022-10-20","giovedì",, +"2022-10-21","venerdì",, +"2022-10-22","sabato",, +"2022-10-23","domenica",, +"2022-10-24","lunedì",, +"2022-10-25","martedì",, +"2022-10-26","mercoledì",, +"2022-10-27","giovedì",, +"2022-10-28","venerdì",, +"2022-10-29","sabato",, +"2022-10-30","domenica",, +"2022-10-31","lunedì",, +"2022-11-01","martedì",, +"2022-11-02","mercoledì",, +"2022-11-03","giovedì",, +"2022-11-04","venerdì",, +"2022-11-05","sabato",, +"2022-11-06","domenica",, +"2022-11-07","lunedì",, +"2022-11-08","martedì",, +"2022-11-09","mercoledì",, +"2022-11-10","giovedì",, +"2022-11-11","venerdì",, +"2022-11-12","sabato",, +"2022-11-13","domenica",, +"2022-11-14","lunedì",, +"2022-11-15","martedì",, +"2022-11-16","mercoledì",, +"2022-11-17","giovedì",, +"2022-11-18","venerdì",, +"2022-11-19","sabato",, +"2022-11-20","domenica",, +"2022-11-21","lunedì",, +"2022-11-22","martedì",, +"2022-11-23","mercoledì",, +"2022-11-24","giovedì",, +"2022-11-25","venerdì",, +"2022-11-26","sabato",, +"2022-11-27","domenica",, +"2022-11-28","lunedì",, +"2022-11-29","martedì",, +"2022-11-30","mercoledì",, +"2022-12-01","giovedì",, +"2022-12-02","venerdì",, +"2022-12-03","sabato",, +"2022-12-04","domenica",, +"2022-12-05","lunedì",, +"2022-12-06","martedì",, +"2022-12-07","mercoledì",, +"2022-12-08","giovedì",, +"2022-12-09","venerdì",, +"2022-12-10","sabato",, +"2022-12-11","domenica",, +"2022-12-12","lunedì",, +"2022-12-13","martedì",, +"2022-12-14","mercoledì",, +"2022-12-15","giovedì",, +"2022-12-16","venerdì",, +"2022-12-17","sabato",, +"2022-12-18","domenica",, +"2022-12-19","lunedì",, +"2022-12-20","martedì",, +"2022-12-21","mercoledì",, +"2022-12-22","giovedì",, +"2022-12-23","venerdì",, +"2022-12-24","sabato",, +"2022-12-25","domenica",, +"2022-12-26","lunedì",, +"2022-12-27","martedì",, +"2022-12-28","mercoledì",, +"2022-12-29","giovedì",, +"2022-12-30","venerdì",, +"2022-12-31","sabato",, +"2023-01-01","domenica",, +"2023-01-02","lunedì",, +"2023-01-03","martedì",, +"2023-01-04","mercoledì",, +"2023-01-05","giovedì",, +"2023-01-06","venerdì",, +"2023-01-07","sabato",, +"2023-01-08","domenica",, +"2023-01-09","lunedì",, +"2023-01-10","martedì",, +"2023-01-11","mercoledì",, +"2023-01-12","giovedì",, +"2023-01-13","venerdì",, +"2023-01-14","sabato",, +"2023-01-15","domenica",, +"2023-01-16","lunedì",, +"2023-01-17","martedì",, +"2023-01-18","mercoledì",, +"2023-01-19","giovedì",, +"2023-01-20","venerdì",, +"2023-01-21","sabato",, +"2023-01-22","domenica",, +"2023-01-23","lunedì",, +"2023-01-24","martedì",, +"2023-01-25","mercoledì",, +"2023-01-26","giovedì",, +"2023-01-27","venerdì",, +"2023-01-28","sabato",, +"2023-01-29","domenica",, +"2023-01-30","lunedì",, +"2023-01-31","martedì",, +"2023-02-01","mercoledì",, +"2023-02-02","giovedì",, +"2023-02-03","venerdì",, +"2023-02-04","sabato",, +"2023-02-05","domenica",, +"2023-02-06","lunedì",, +"2023-02-07","martedì",, +"2023-02-08","mercoledì",, +"2023-02-09","giovedì",, +"2023-02-10","venerdì",, +"2023-02-11","sabato",, +"2023-02-12","domenica",, +"2023-02-13","lunedì",, +"2023-02-14","martedì",, +"2023-02-15","mercoledì",, +"2023-02-16","giovedì",, +"2023-02-17","venerdì",, +"2023-02-18","sabato",, +"2023-02-19","domenica",, +"2023-02-20","lunedì",, +"2023-02-21","martedì",, +"2023-02-22","mercoledì",, +"2023-02-23","giovedì",, +"2023-02-24","venerdì",, +"2023-02-25","sabato",, +"2023-02-26","domenica",, +"2023-02-27","lunedì",, +"2023-02-28","martedì",, +"2023-03-01","mercoledì",, +"2023-03-02","giovedì",, +"2023-03-03","venerdì",, +"2023-03-04","sabato",, +"2023-03-05","domenica",, +"2023-03-06","lunedì",, +"2023-03-07","martedì",, +"2023-03-08","mercoledì",, +"2023-03-09","giovedì",, +"2023-03-10","venerdì",, +"2023-03-11","sabato",, +"2023-03-12","domenica",, +"2023-03-13","lunedì",, +"2023-03-14","martedì",, +"2023-03-15","mercoledì",, +"2023-03-16","giovedì",, +"2023-03-17","venerdì",, +"2023-03-18","sabato",, +"2023-03-19","domenica",, +"2023-03-20","lunedì",, +"2023-03-21","martedì",, +"2023-03-22","mercoledì",, +"2023-03-23","giovedì",, +"2023-03-24","venerdì",, +"2023-03-25","sabato",, +"2023-03-26","domenica",, +"2023-03-27","lunedì",, +"2023-03-28","martedì",, +"2023-03-29","mercoledì",, +"2023-03-30","giovedì",, +"2023-03-31","venerdì",, +"2023-04-01","sabato",, +"2023-04-02","domenica",, +"2023-04-03","lunedì",, +"2023-04-04","martedì",, +"2023-04-05","mercoledì",, +"2023-04-06","giovedì",, +"2023-04-07","venerdì",, +"2023-04-08","sabato",, +"2023-04-09","domenica",, +"2023-04-10","lunedì",, +"2023-04-11","martedì",, +"2023-04-12","mercoledì",, +"2023-04-13","giovedì",, +"2023-04-14","venerdì",, +"2023-04-15","sabato",, +"2023-04-16","domenica",, +"2023-04-17","lunedì",, +"2023-04-18","martedì",, +"2023-04-19","mercoledì",, +"2023-04-20","giovedì",, +"2023-04-21","venerdì",, +"2023-04-22","sabato",, +"2023-04-23","domenica",, +"2023-04-24","lunedì",, +"2023-04-25","martedì",, +"2023-04-26","mercoledì",, +"2023-04-27","giovedì",, +"2023-04-28","venerdì",, +"2023-04-29","sabato",, +"2023-04-30","domenica",, +"2023-05-01","lunedì",, +"2023-05-02","martedì",, +"2023-05-03","mercoledì",, +"2023-05-04","giovedì",, +"2023-05-05","venerdì",, +"2023-05-06","sabato",, +"2023-05-07","domenica",, +"2023-05-08","lunedì",, +"2023-05-09","martedì",, +"2023-05-10","mercoledì",, +"2023-05-11","giovedì",, +"2023-05-12","venerdì",, +"2023-05-13","sabato",, +"2023-05-14","domenica",, +"2023-05-15","lunedì",, +"2023-05-16","martedì",, +"2023-05-17","mercoledì",, +"2023-05-18","giovedì",, +"2023-05-19","venerdì",, +"2023-05-20","sabato",, +"2023-05-21","domenica",, +"2023-05-22","lunedì",, +"2023-05-23","martedì",, +"2023-05-24","mercoledì",, +"2023-05-25","giovedì",, +"2023-05-26","venerdì",, +"2023-05-27","sabato",, +"2023-05-28","domenica",, +"2023-05-29","lunedì",, +"2023-05-30","martedì",, +"2023-05-31","mercoledì",, +"2023-06-01","giovedì",, +"2023-06-02","venerdì",, +"2023-06-03","sabato",, +"2023-06-04","domenica",, +"2023-06-05","lunedì",, +"2023-06-06","martedì",, +"2023-06-07","mercoledì",, +"2023-06-08","giovedì",, +"2023-06-09","venerdì",, +"2023-06-10","sabato",, +"2023-06-11","domenica",, +"2023-06-12","lunedì",, +"2023-06-13","martedì",, +"2023-06-14","mercoledì",, +"2023-06-15","giovedì",, +"2023-06-16","venerdì",, +"2023-06-17","sabato",, +"2023-06-18","domenica",, +"2023-06-19","lunedì",, +"2023-06-20","martedì",, +"2023-06-21","mercoledì",, +"2023-06-22","giovedì",, +"2023-06-23","venerdì",, +"2023-06-24","sabato",, +"2023-06-25","domenica",, +"2023-06-26","lunedì",, +"2023-06-27","martedì",, +"2023-06-28","mercoledì",, +"2023-06-29","giovedì",, +"2023-06-30","venerdì",, +"2023-07-01","sabato",, +"2023-07-02","domenica",, +"2023-07-03","lunedì",, +"2023-07-04","martedì",, +"2023-07-05","mercoledì",, +"2023-07-06","giovedì",, +"2023-07-07","venerdì",, +"2023-07-08","sabato",, +"2023-07-09","domenica",, +"2023-07-10","lunedì",, +"2023-07-11","martedì",, +"2023-07-12","mercoledì",, +"2023-07-13","giovedì",, +"2023-07-14","venerdì",, +"2023-07-15","sabato",, +"2023-07-16","domenica",, +"2023-07-17","lunedì",, +"2023-07-18","martedì",, +"2023-07-19","mercoledì",, +"2023-07-20","giovedì",, +"2023-07-21","venerdì",, +"2023-07-22","sabato",, +"2023-07-23","domenica",, +"2023-07-24","lunedì",, +"2023-07-25","martedì",, +"2023-07-26","mercoledì",, +"2023-07-27","giovedì",, +"2023-07-28","venerdì",, +"2023-07-29","sabato",, +"2023-07-30","domenica",, +"2023-07-31","lunedì",, diff --git a/src/event.rs b/src/event.rs index e79a379..19a7923 100644 --- a/src/event.rs +++ b/src/event.rs @@ -3,7 +3,8 @@ use { crate::recipe::Recipe, - chrono::{DateTime, Local, NaiveDate, NaiveDateTime, NaiveTime, TimeZone}, + chrono::{DateTime, Local, NaiveDate, NaiveDateTime, NaiveTime, TimeZone, Utc}, + ics::escape_text, ics::properties as calprop, ics::Event as CalEvent, std::rc::Rc, @@ -49,13 +50,13 @@ impl<'a> From for CalEvent<'a> { fn from(ev: Event) -> Self { let start_time = ev.ends_at - ev.recipe.total_time(); - let mut event = ics::Event::new(ev.uid.clone(), dt_fmt(&Local::now())); - event.push(calprop::Summary::new(ev.recipe.name.clone())); + let mut event = ics::Event::new(ev.uid.clone(), dt_utc_fmt(&Utc::now())); + event.push(calprop::Summary::new(escape_text(ev.recipe.name.clone()))); event.push(calprop::Description::new(format!( "cookbook@{}", ev.recipe.id ))); - event.push(calprop::Location::new(ev.recipe.url.clone())); + event.push(calprop::Location::new(escape_text(ev.recipe.url.clone()))); event.push(calprop::DtStart::new(dt_fmt( &Local.from_local_datetime(&start_time).unwrap(), ))); @@ -68,7 +69,7 @@ impl<'a> From for CalEvent<'a> { let alarm = ics::Alarm::display( calprop::Trigger::new("-P15M"), - calprop::Description::new(ev.recipe.name.clone()), + calprop::Description::new(escape_text(ev.recipe.name.clone())), ); event.add_alarm(alarm); event @@ -78,3 +79,7 @@ impl<'a> From for CalEvent<'a> { fn dt_fmt(datetime: &DateTime) -> String { datetime.format("%Y%m%dT%H%M%S").to_string() } + +fn dt_utc_fmt(datetime: &DateTime) -> String { + datetime.format("%Y%m%dT%H%M%SZ").to_string() +}