diff --git a/examples/example-schedule.csv b/examples/example-schedule.csv index e710405..e0ca5eb 100644 --- a/examples/example-schedule.csv +++ b/examples/example-schedule.csv @@ -1,5 +1,217 @@ "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-01-01,"sabato",, +2022-01-02,"domenica",, +2022-01-03,"lunedì",, +2022-01-04,"martedì",, +2022-01-05,"mercoledì",, +2022-01-06,"giovedì",, +2022-01-07,"venerdì",, +2022-01-08,"sabato",, +2022-01-09,"domenica",, +2022-01-10,"lunedì",, +2022-01-11,"martedì",, +2022-01-12,"mercoledì",, +2022-01-13,"giovedì",, +2022-01-14,"venerdì",, +2022-01-15,"sabato",, +2022-01-16,"domenica",, +2022-01-17,"lunedì",, +2022-01-18,"martedì",, +2022-01-19,"mercoledì",, +2022-01-20,"giovedì",, +2022-01-21,"venerdì",, +2022-01-22,"sabato",, +2022-01-23,"domenica",, +2022-01-24,"lunedì",, +2022-01-25,"martedì",, +2022-01-26,"mercoledì",, +2022-01-27,"giovedì",, +2022-01-28,"venerdì",, +2022-01-29,"sabato",, +2022-01-30,"domenica",, +2022-01-31,"lunedì",, +2022-02-01,"martedì",, +2022-02-02,"mercoledì",, +2022-02-03,"giovedì",, +2022-02-04,"venerdì",, +2022-02-05,"sabato",, +2022-02-06,"domenica",, +2022-02-07,"lunedì",, +2022-02-08,"martedì",, +2022-02-09,"mercoledì",, +2022-02-10,"giovedì",, +2022-02-11,"venerdì",, +2022-02-12,"sabato",, +2022-02-13,"domenica",, +2022-02-14,"lunedì",, +2022-02-15,"martedì",, +2022-02-16,"mercoledì",, +2022-02-17,"giovedì",, +2022-02-18,"venerdì",, +2022-02-19,"sabato",, +2022-02-20,"domenica",, +2022-02-21,"lunedì",, +2022-02-22,"martedì",, +2022-02-23,"mercoledì",, +2022-02-24,"giovedì",, +2022-02-25,"venerdì",, +2022-02-26,"sabato",, +2022-02-27,"domenica",, +2022-02-28,"lunedì",, +2022-03-01,"martedì",, +2022-03-02,"mercoledì",, +2022-03-03,"giovedì",, +2022-03-04,"venerdì",, +2022-03-05,"sabato",, +2022-03-06,"domenica",, +2022-03-07,"lunedì",, +2022-03-08,"martedì",, +2022-03-09,"mercoledì",, +2022-03-10,"giovedì",, +2022-03-11,"venerdì",, +2022-03-12,"sabato",, +2022-03-13,"domenica",, +2022-03-14,"lunedì",, +2022-03-15,"martedì",, +2022-03-16,"mercoledì",, +2022-03-17,"giovedì",, +2022-03-18,"venerdì",, +2022-03-19,"sabato",, +2022-03-20,"domenica",, +2022-03-21,"lunedì",, +2022-03-22,"martedì",, +2022-03-23,"mercoledì",, +2022-03-24,"giovedì",, +2022-03-25,"venerdì",, +2022-03-26,"sabato",, +2022-03-27,"domenica",, +2022-03-28,"lunedì",, +2022-03-29,"martedì",, +2022-03-30,"mercoledì",, +2022-03-31,"giovedì",, +2022-04-01,"venerdì",, +2022-04-02,"sabato",, +2022-04-03,"domenica",, +2022-04-04,"lunedì",, +2022-04-05,"martedì",, +2022-04-06,"mercoledì",, +2022-04-07,"giovedì",, +2022-04-08,"venerdì",, +2022-04-09,"sabato",, +2022-04-10,"domenica",, +2022-04-11,"lunedì",, +2022-04-12,"martedì",, +2022-04-13,"mercoledì",, +2022-04-14,"giovedì",, +2022-04-15,"venerdì",, +2022-04-16,"sabato",, +2022-04-17,"domenica",, +2022-04-18,"lunedì",, +2022-04-19,"martedì",, +2022-04-20,"mercoledì",, +2022-04-21,"giovedì",, +2022-04-22,"venerdì",, +2022-04-23,"sabato",, +2022-04-24,"domenica",, +2022-04-25,"lunedì",, +2022-04-26,"martedì",, +2022-04-27,"mercoledì",, +2022-04-28,"giovedì",, +2022-04-29,"venerdì",, +2022-04-30,"sabato",, +2022-05-01,"domenica",, +2022-05-02,"lunedì",, +2022-05-03,"martedì",, +2022-05-04,"mercoledì",, +2022-05-05,"giovedì",, +2022-05-06,"venerdì",, +2022-05-07,"sabato",, +2022-05-08,"domenica",, +2022-05-09,"lunedì",, +2022-05-10,"martedì",, +2022-05-11,"mercoledì",, +2022-05-12,"giovedì",, +2022-05-13,"venerdì",, +2022-05-14,"sabato",, +2022-05-15,"domenica",, +2022-05-16,"lunedì",, +2022-05-17,"martedì",, +2022-05-18,"mercoledì",, +2022-05-19,"giovedì",, +2022-05-20,"venerdì",, +2022-05-21,"sabato",, +2022-05-22,"domenica",, +2022-05-23,"lunedì",, +2022-05-24,"martedì",, +2022-05-25,"mercoledì",, +2022-05-26,"giovedì",, +2022-05-27,"venerdì",, +2022-05-28,"sabato",, +2022-05-29,"domenica",, +2022-05-30,"lunedì",, +2022-05-31,"martedì",, +2022-06-01,"mercoledì",, +2022-06-02,"giovedì",, +2022-06-03,"venerdì",, +2022-06-04,"sabato",, +2022-06-05,"domenica",, +2022-06-06,"lunedì",, +2022-06-07,"martedì",,"https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html" +2022-06-08,"mercoledì",, +2022-06-09,"giovedì",, +2022-06-10,"venerdì",, +2022-06-11,"sabato",, +2022-06-12,"domenica",, +2022-06-13,"lunedì",, +2022-06-14,"martedì",, +2022-06-15,"mercoledì",, +2022-06-16,"giovedì",, +2022-06-17,"venerdì",,"https://ricette.giallozafferano.it/Salmorejo.html" +2022-06-18,"sabato",, +2022-06-19,"domenica",, +2022-06-20,"lunedì",, +2022-06-21,"martedì",, +2022-06-22,"mercoledì",,"https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html" +2022-06-23,"giovedì",, +2022-06-24,"venerdì",, +2022-06-25,"sabato",, +2022-06-26,"domenica",, +2022-06-27,"lunedì",, +2022-06-28,"martedì",, +2022-06-29,"mercoledì",, +2022-06-30,"giovedì",, +2022-07-01,"venerdì",, +2022-07-02,"sabato",, +2022-07-03,"domenica",, +2022-07-04,"lunedì",, +2022-07-05,"martedì",,"https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html" +2022-07-06,"mercoledì",, +2022-07-07,"giovedì",, +2022-07-08,"venerdì",, +2022-07-09,"sabato",, +2022-07-10,"domenica",, +2022-07-11,"lunedì",, +2022-07-12,"martedì",, +2022-07-13,"mercoledì",, +2022-07-14,"giovedì",, +2022-07-15,"venerdì",,"https://ricette.giallozafferano.it/Salmorejo.html" +2022-07-16,"sabato",, +2022-07-17,"domenica",, +2022-07-18,"lunedì",, +2022-07-19,"martedì",, +2022-07-20,"mercoledì",, +2022-07-21,"giovedì",, +2022-07-22,"venerdì",, +2022-07-23,"sabato",, +2022-07-24,"domenica",, +2022-07-25,"lunedì",, +2022-07-26,"martedì",,"https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html" +2022-07-27,"mercoledì",, +2022-07-28,"giovedì",, +2022-07-29,"venerdì",, +2022-07-30,"sabato",, +2022-07-31,"domenica",, +"2022-08-01","lunedì",,"https://ricette.giallozafferano.it/Riso-freddo-con-tonno-zucchine-e-limone.html" "2022-08-02","martedì",, "2022-08-03","mercoledì",, "2022-08-04","giovedì",, @@ -15,10 +227,10 @@ "2022-08-14","domenica",, "2022-08-15","lunedì",, "2022-08-16","martedì",, -"2022-08-17","mercoledì",, +"2022-08-17","mercoledì",,"https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html" "2022-08-18","giovedì",, "2022-08-19","venerdì",, -"2022-08-20","sabato",, +"2022-08-20","sabato",,"https://ricette.giallozafferano.it/Salmorejo.html" "2022-08-21","domenica",, "2022-08-22","lunedì",, "2022-08-23","martedì",, @@ -152,215 +364,3 @@ "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 7c1df4e..03c8f50 100644 --- a/src/event.rs +++ b/src/event.rs @@ -3,7 +3,7 @@ use { crate::recipe::Recipe, - chrono::{DateTime, Local, NaiveDate, NaiveDateTime, NaiveTime, TimeZone, Utc}, + chrono::{DateTime, Datelike, Local, NaiveDate, NaiveDateTime, NaiveTime, TimeZone, Utc}, ics::escape_text, ics::properties as calprop, ics::Event as CalEvent, @@ -71,7 +71,14 @@ impl<'a> From for CalEvent<'a> { event.push(dtend); // TODO make configurable yearly repetition, for now this suits my personal uses - event.push(calprop::RRule::new("FREQ=YEARLY")); + const DAY_NAMES: [&str; 7] = ["MO", "TU", "WE", "TH", "FR", "SA", "SU"]; + event.push(calprop::RRule::new(format!( + "FREQ=YEARLY;BYDAY={weekday};BYWEEKNO={weekno}", + weekday = DAY_NAMES + .get(start_time.weekday().num_days_from_monday() as usize) + .unwrap(), + weekno = start_time.iso_week().week(), + ))); let mut trigger = calprop::Trigger::new("-PT15M"); trigger.append(ics::parameters!("RELATED" => "START"));