From e08ba28075466720c408096db757b4ec764524e7 Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Tue, 14 Jul 2026 20:01:16 +0200 Subject: [PATCH] export conf --- hosts/www/caldav-export.py | 14 +++++++------- secrets/caldav-export-config.age | Bin 1766 -> 1766 bytes 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/hosts/www/caldav-export.py b/hosts/www/caldav-export.py index 4ab0eaa..bb8f445 100644 --- a/hosts/www/caldav-export.py +++ b/hosts/www/caldav-export.py @@ -8,11 +8,11 @@ from caldav import DAVClient from icalendar import Calendar -def safe_filename(name): +def safe_filename(name: str) -> str: return re.sub(r"[^a-zA-Z0-9._-]+", "_", name) -def export_calendar(url, username, password, output): +def export_calendar(url: str, username: str, password: str, calendar: str) -> Calendar: client = DAVClient( url=url, username=username, @@ -25,19 +25,19 @@ def export_calendar(url, username, password, output): target = None for cal in calendars: - if cal.name == output["calendar"]: + if cal.name == calendar: target = cal break if target is None: raise RuntimeError( - f"Calendar '{output['calendar']}' not found for {username}" + f"Calendar '{calendar}' not found for {username}" ) print(f"Exporting {username}/{target.name}") result = Calendar() - result.add("prodid", "-//CalDAV Export//") + result.add("prodid", f"-//{calendar} calendar export//") result.add("version", "2.0") objects = target.objects() @@ -71,7 +71,7 @@ def main(): output_dir.mkdir(parents=True, exist_ok=True) combined = Calendar() - combined.add("prodid", "-//CalDAV Export Combined//") + combined.add("prodid", "-//Combined calendar//") combined.add("version", "2.0") for entry in config["calendars"]: @@ -82,7 +82,7 @@ def main(): entry["url"], username, password, - entry, + entry["calendar"], ) filename = output_dir / f"{safe_filename(entry['calendar'])}.ics" diff --git a/secrets/caldav-export-config.age b/secrets/caldav-export-config.age index d3442aa698a251c172dbc4f9a91c3c97bf4b56a4..110a9677418abadd4dcbfdc0da967d563c145c12 100644 GIT binary patch delta 1685 zcmaFH`;2#jPJMb#s8NYUm3MN1TSbsrabjqxdq9X+xLZ_Vg>#i>gj-&QdvcbknTKVN zE0?=Vxm#+OlSi;&PEl~BYqocUiI0A!hq1P+v3{;ma;APxrdzRvX}(i{E0?aFLUD11 zZfc5=si~o*f@_&iQh2#Sc6vpCVUSTtafq3FX^LThnOlBxR-TceL3ol$S!tn@k)LmP zN>)LIxs!n>mwu*MUS_0mdRe)1ioRuTv3{;WWMW!KMT&_m`9a$L<-V>J`jsKUrNJ2~p($nFrIjh#*=E_3;~B-nojgjyBFoL9 z3@qKW{XOv6m` z%uuhY0?*QPPju@%6AMa{(-l0zLUOe&eajMaid`bZjh(`xOshXU*q-HZw|vI4nG%yP?}L-iv~(p~(cOe53Xf?Xrilg%={3d{2fD@}|-wUa$cQp)|^ zDqXpBb#)c;6Z0ZXe2d&mt2`}DvP%OKEelPvw8JW*%pF}k%pDU`D)S>8{r%kh+|s$M zwGA`%)I)Q+=S>j2wQb4Yucdk&Gbf2V&a5|F{>D%yZ9=TAUcts!MsIkhH0!UQT@Z9q zYQt|mw$6eu5ZdgPvbpOscru#-|konpSid9BQiyMMdyE%ZOP;f$b5y}x$U`IUz{ zS4J_^A3YwP!n!nOf2C~FY;}G61l`XwE?WM^gVqbbYVz1UgJ^8QAc3Rns3`Ix2uakpIADx#sKKsRFM&CT<<)$Z2 zR7)H!w^`E_b9~p@};f0z5K#I&|x_1)&Q86RivW<8~NqMF5V`&{{~NH;01 z4H3@E)eq@x@}BIzmboMS`?sbSkw+W+kIR{a2LD>I=Xs>T=k83d86_O^ZmX1jX|G*2 zmH)$;-Rf(!oYY>M?B>xEZ4o(s^i_RJPRupdJZ|x}g3ME{yH~B*vFD-se_!<}JYFI* zmDerh6x&@_)AM_I^Gox;-VI#kPO%3bzCJulab_ob*ZprZcdX`QTv)LBZ;574j=#RL zuwTOm^C|z2FlJQ#-uqC?z*%+k#HP8fhay4^lCEsF`DNPpRG?4fg^0t4)oL|!UY2Ct zs9&ye&iQhHPOAi~^Q(jRd$+Fnv|1%3PtZ6ehmy zjsKT<@|-TXXSrfh#ns=dx%ekeDK!#{^bFtiaFyBPTM7q+UU1G$ZoJcWZ*!4V_YLo- yUM3w{h3)mXkGH=q+jw~^-@fB6#bPPZ5U delta 1685 zcmaFH`;2#jPJOtWZ-IxQQ@g$NJ^ryc7SVfPEn3Ux|?HgZjP^eSYlYEk%w_7e?;~B-n^FqR0{r!_2 zlhfUj^3n~Wic6e*EOL#rva^$2iv2?U(_PIBl5@QbON>IfT+LlPJbe@0{L|74^*xQW z149zM3(ZPA(*4{co%GWp%8iqYEDiIVvcdx=pJf!U&rCLPFZMDw_w#Tn$qX(iDR6bI zG%yVaO9?kD$?|ur%BTo4c5@CcE3QcAGRw#<3(YbOiAwi2bhIcBOz|lQbMjBq&o#~S z%}*^eO0V=uEXpp(_VFx7j{!IL0#n0ug+%YlC>Q-~uZl3U41a?HgUI^iM5l=4pa|{s z3e%8)ywp6iDDR@|40DSJSFXa0GEe8ILeGML%uLfnQ>Tm~?Tq5w@G|4VB$oo8QfK`< zLqGSVVmDt$Uv%p{6AMa{(-qvj!%Qm+OCm}l(tVRrr2k_}8~43j-0%u>t^ zBTTq-b#)a?1Ij!r(<_S1-4atg9leVj3o8vREQ2jQy)p~^g2J-=@(Rt}Bg2DDv$DCe zXYnn(J5&D5+PfT|np@ST-#&k7vdxZaoyql8wdPe-y6#t+bPg8>9@T$)=kqk%fMxIV zR6-N-QXXEdTx&Y}RPMf2n)Bwx+|5qAA#5PU<$mms-!%Tl>s^1?{<1CJ8NGY0__VXT zR;pX`$p-vx>S9|`8`dkwEyiLpL$-+H*|ELl4R!~AuF$c!QxnPXzuRc2CH;f%fW`6{ zEyXPF`gwI3^{ihGNmM(8x5e$^WaXIKb8t`TnGN68r|~%#1?zJeDytOI*bWrMRq}u=63z+>&U(7r3;-=`2L%zv>9VfZ!mEX&J@#N)3=Z;OM z0;clVKZ)65{9t{;>!op@r!CG64|dOUlnmajZt`DY=F?@ThZ z(TlOnNn?8l=he7FKkC=q*mv;7nR^W40&H)#JP2I=_%gHW`s8h!mDfA}nzwbwalXZ6 z=}zU-3 zxhnY0tNn}43S9ijc=$)x5{=E_GNKeO2>A=4RhXBJ)Rh4@Z7y} zYtDt>XOG_<`_F&>`0-R7Rg=Wp>swyU3wX8B@h3~zdwa-iOXvF4O zr_0JccdkDA+h1wZo87LL3-5<6J9FVy^-)Pslo z6$i!c3;Qp+Jw@%xhbu>Ieil|ouTt&!BD87ekGZz8);%lNO?k}bdddId|L>BqLOd#e zmnYuOEUCZG>#8!~(w$g2N4z;^7cjD>(WnowP9&^-Q8?=m7wU C$I6NT