Files
scarif/openclaw/workspace/nextcloud-calendar/scripts/__pycache__/ncal.cpython-311.pyc
T

210 lines
31 KiB
Plaintext
Raw Normal View History

2026-03-13 18:47:30 +00:00
§
iGãó¬dZddlZddlZddlZddlZddlZddlZddlZddl m Z m
Z
m Z m Z ddl
mcmZejdd¦« d¦«Zejdd¦«Zejdd¦«Zejd d¦«Zd
Zd ZddZdZdZd dZdZdZdZd dZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(e)dkr e(¦«dSdS)!aú
Unified Nextcloud CalDAV CLI.
Commands:
list - List calendars
events - View events (supports --today, --date, --start/--end, --search)
add - Create event (--summary, --start, --end, --recurrence, --description)
update - Modify event (--uid OR --summary+--date, with --set-* options)
delete - Remove event (--uid OR --summary+--date)
test - Verify connection
Requires environment variables:
NEXTCLOUD_URL, NEXTCLOUD_USER, NEXTCLOUD_PASSWORD, CALDAV_PRINCIPAL
éN)ÚdatetimeÚdateÚ timedeltaÚtimezoneÚ
NEXTCLOUD_URLÚúNEXTCLOUD_USERÚNEXTCLOUD_PASSWORDÚCALDAV_PRINCIPALz{DAV:}z{urn:ietf:params:xml:ns:caldav}ÚPROPFINDÚ1có tj ¦«}| dtt
t ¦«tj tj |¦«¦«}tj  ||r| 
¦«nd|¬¦«}|  dd¦«|r|  d|¦«|r|  d|¦«|  dd¦«|  |¦« 
¦« d¦«S) N)ÚdataÚmethodz Content-Typeztext/xml; charset=utf-8ÚDepthzIf-Matchz
User-AgentzOpenClaw-Calendar/1.0zutf-8)ÚurllibÚrequestÚHTTPPasswordMgrWithDefaultRealmÚ add_passwordrr
r Ú build_openerÚHTTPBasicAuthHandlerÚRequestÚencodeÚ
add_headerÚopenÚreadÚdecode)ÚurlrÚbodyÚdepthÚetagÚpwÚopenerÚreqs úA/home/node/.openclaw/workspace/nextcloud-calendar/scripts/ncal.pyÚ make_requestr's Ý Œ× 7Ò 7Ñ 9Ô 9€B؇OOD-­Õ9KÑ
Œ^×
(­¬×)LÒ)LÈRÑ)PÔ)PÑ
Q€FÝ
Œ.×
Ò
 ¸DÐ+J¨4¯;ª;©=¬=¨=ÀdÐSYÐ
Ñ
Z€C؇NN>Ð#<Ñ Ð,ˆcnŠn˜W eÑ Ð-ˆS^Š^˜J¨Ñ
‡NN<Ð!8Ñ ;Š; Ô × Ò Ñ "× )¨'Ñ có\tt}d}t||d¬¦«}tj|¦«}| dt dtd¦«}|;|j  ¦«}| 
d¦«r|n
t|Stdtd S)
Nz<?xml version="1.0"?>
<d:propfind xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav">
<d:prop><c:calendar-home-set/></d:prop>
</d:propfind>Úr r!z.//zcalendar-home-set/ÚhrefÚhttpz/remote.php/dav/calendars/r ) rr r'ÚETÚ
fromstringÚfindÚ NS_CALDAVÚNS_DAVÚtextÚstripÚ
startswithr
)Ú
principal_urlr ÚrespÚrootÚelemr,s r&Úget_calendar_homer:)s¸Ý8Õ&6Ð8€Mð €Dõ ˜
¨D¸Ð <€DÝ
Œ=˜Ñ Ô €DØ 9Š9ÐDÐ E€DØ ÐØŒyŠÑ Ô ˆØ vÑLˆtˆtµ}Ð4LÀdÐ4LÐ4LÐÐ Hµ~Ð Hr(cóÊt¦«}d}t||d¬¦«}tj|¦«}g}| t
d¦«D] }| t
d¦«}||j d¦«sŒ=| t
dt
d¦«}|Œe| t
d ¦«}||jn2|j  d¦« 
d¦«d
} |  | |j|j  d¦«rt|jn|jd œ¦«Œ
|S) Nz°<?xml version="1.0"?>
<d:propfind xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav">
<d:prop><d:displayname/><c:supported-calendar-component-set/></d:prop>
</d:propfind>rr+Úresponser,r z propstat/ÚpropÚ displaynameéÿÿÿÿ)Únamer,r)r:r'r.r/Úfindallr2r0r3Úendswithr4ÚsplitÚappendr5r)
Úhomer r7r8ÚcalsÚhref_elr=Úname_elr@s
r&Ú
get_calendarsrJ7spÝ Ñ Ô €Dð €Dõ ˜ 4¨sÐ 3€DÝ
Œ=˜Ñ Ô €DØ
€DØ
\Š\
 ñ
 ˆØ—&&F˜˜˜Ñ)ˆØ ˆ? '¤,×"7Ò"7¸Ñ"<Ô"<ˆ ØvŠvÐ6­7ˆØ ˆ<Ø Ø—)’)3ˆØ2ˆwŒ|ˆ|¸¼ ×8JÒ8JÈ3Ñ8OÔ8O×8UÒ8UÐVYÑ8ZÔ8ZÐ[]Ô8^ˆØ Š ØØ”LØ7>´|×7NÒ7NÈsÑ7SÔ7SÐe•mÐ3 W¤\Ð3ÐY`ÔYeð
ð
ñ ô ð ñ ð
€Kr(cóòt¦«}|std¦«|r.|D]}|d|kr
|dcSŒtd|d¦«|D]}|ddkr
|dcSŒ|ddS)NzNo calendars foundr@rz
Calendar 'z ' not foundÚPersonalr)rJÚ Exception)r@rFÚcals r&Úget_calendar_url_by_namerOPs¸Ý ‰?Œ?€DØ ðÐ ðð "ˆ6Œ{˜˜5”zÐÐ6 TÐððˆØ ˆvŒ;˜*Ò u”:Ð Ð Ð ð Œ75Œ>Ðr(có|| ¦«}| d¦«rD tj|d¦« t
j¬¦«S#t$rYnwxYw tj|d¦«S#t$r- tj|d¦«cYS#t$r|cYcYSwxYwwxYw)%Y%m%dT%H%M%SZ)Útzinfoú
%Y%m%dT%H%M%Sú%Y%m%d)r4rBrÚstrptimeÚreplacerÚutcÚ
ValueError)Údt_strs r&Úparse_datetime_icalr[_Ø
\Š\‰^Œ^€FØ
Ôðð ÝÔ$ VÐ-=Ñ>×FÍhÌlÐ [øÝð ð ð Ø ˆDð øøøðÝÔ  ¨Ñ9øÝ ðððð ÝÔ$ V¨XÑ 6øÝð ð ð ØˆMˆMˆMˆMˆMð øøøðøøøsA«2AÁ
A+Á*A+Á/BÂ
B;ÂB&Â#B;Â& B7Â2B;Â6B7Â7B;cóÈt|t¦«r| d¦«St|t¦«r| d¦«St |¦«S)Nz%Y-%m-%d %H:%Mz%Y-%m-%d)Ú
isinstancerÚstrftimerÚstr)Údts r&Ú format_dtransVÝ"•hÑÔð{Š{Ð"•dÑÔð{Š{˜ ˆr‰7Œ7€Nr(cóþ| d¦«}dddddddœ}d}d}|D]5}| ¦«}| d¦«r|r
||ddz
}Œ<|rŸ|dkr||d<n“|d kr||d
<n‡|d kr2td |vr| d ¦«dn|¦«|d
<nO|dkr2td |vr| d ¦«dn|¦«|d<n|dkr||d<n |dkr||d<d|vrT| dd¦«}|d d ¦«d}t |¦«dkr|dnd}Œ7|rŸ|dkr||d<n“|d kr||d
<n‡|d kr2td |vr| d ¦«dn|¦«|d
<nO|dkr2td |vr| d ¦«dn|¦«|d<n|dkr||d<n |dkr||d<|S)
zNo titler)ÚsummaryÚstartÚendÚ descriptionÚuidÚrrule)ú ú éÚSUMMARYrdÚ DESCRIPTIONrgÚDTSTARTú;reÚDTENDrfÚUIDrhÚRRULEriú:r)rCr4r5r[Úlen)Ú ical_textÚlinesÚevÚkeyÚvalÚlineÚstrippedÚpartss r&Úparse_ical_eventr~us…Ø OŠO˜DÑ !€Eب$°tÈBÐW[ÐfjÐ kÐ k€BØ
€CØ
€CØð5ˆØ—:’:‘<”<ˆØ × Ò ˜  Øð
  ”|Ñ#Ø Ø ðа  I¡ Ø˜
Ò%¸3 r¨-Ñ'8Ð'8ؘ Ò!Õ1DÐZ]ÐadÐZdÐZdÀSÇYÂYÈsÁ^Ä^ÐTUÔEVÐEVÐjmÑ1nÔ1n 2 g¡; ˜Õ-@ÐVYÐ]`ÐV`ÐV`ÀÇÂÈ3ÁÄÐPQÔARÐARÐfiÑ-jÔ-j   Ø˜¨3˜r %™y˜yؘ¨s  G¡Ø (ˆ?ˆ?Ø—N’N 3¨Ñ*ˆEؘ”(—.’. Ñ% (ˆ! %™jœj¨1šn˜n%˜”((°"ˆCùØ
ð  Ð ¨S˜R  ™]˜]Ø

!°s 2 mÑ#4Ð#4Ø

Ð
Õ-@ÐVYÐ]`ÐV`ÐV`ÀÇÂÈ3ÁÄÐPQÔARÐARÐfiÑ-jÔ-j˜r '™{˜
GŠ^ˆ^Õ)<ÐRUÐY\ÐR\ÐR\¸S¿YºYÀs¹^¼^ÈAÔ=NÐ=NÐbeÑ)fÔ)f˜R ™Y˜
EŠ\ˆ\ s˜2˜e™9˜
GŠ^ˆ^¨3˜R ™[Ø
€Ir(cóè| d¦«}| d¦«}d|d|d} t|d|d¬¦«}n#t$rgcYSwxYwtj|¦«}g} | t d¦«D]b}
|
 t d ¦«} |
 t d
¦«} | | ŒB|  t d ¦«}
|
Œb|
 t d ¦«}|
 td
¦«}|Ä|j r½t|j ¦«}|r§|rx|  ¦«|  dd¦«  ¦«vs<|  ¦«|  dd¦«  ¦«vr-||j nd|d<| j |d <|  
|¦«Œd| S)NrRzï<c:calendar-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav">
<d:prop><d:getetag/><c:calendar-data/></d:prop>
<c:filter>
<c:comp-filter name="VCALENDAR">
<c:comp-filter name="VEVENT">
<c:time-range start="z" end="zQ"/>
</c:comp-filter>
</c:comp-filter>
</c:filter>
</c:calendar-query>ÚREPORTr)rr r!r<r,Úpropstatr=Úgetetagz
calendar-datardrrgr")r^r'rMr.r/rAr2r0r1r3r~ÚlowerÚgetrD)Ú calendar_urlÚstart_dtÚend_dtÚsearchÚ start_strÚend_strr r7r8ÚeventsrGr,rr=r"Úcaldatarxs r&Ú query_eventsrsDØ×!Ð"2Ñ3€IØoŠoÐ/€Gð ð
 ð ð
18ð ð ð €DðݘL°ÀÈCЈøÝ ðððØˆ ˆ ˆ ðøøøå
Œ=˜Ñ Ô €DØ
€FØ
\Š\
"ˆØvŠvoo&ˆØ—66.ˆØ ˆ<˜8Ð Ø}Š}¥˜_˜_˜_ÑØ ˆ ØyŠy,ˆØ—)’)8ˆØ Ð  7¤<Ð Ý! '¤,Ñ/ˆð
"˜
" V§\¢\¡^¤^°r·v²v¸Ñ7KÔ7K×7QÒ7QÑ7SÔ7SÐ%SÐ%SÐW]×WcÒWcÑWeÔWeÐik×ioÒioÐp}ðAñjBôjB÷jHòjHñjJôjJðXJðXJØ*.Ð*:˜TœY˜6
Ø!œY6
Ø
˜bÑ!ùØ €MsµA Á AÁAcó`gd¢}| d¦«r| d|d¦«| d¦«r| d|d¦«| d¦«}t|t¦«r,| d| d¦«¦«n@t|t
¦«r+| d| d ¦«¦«| d
¦«}t|t¦«r,| d | d¦«¦«n@t|t
¦«r+| d | d ¦«¦«| d | d
d¦«¦«| d¦«r,| d| dd¦«¦«| ddg¦«d |¦«S)N)úBEGIN:VCALENDARú VERSION:2.0ú PRODID:-//OpenClaw//Calendar//ENú BEGIN:VEVENTrhúUID:riúRRULE:reúDTSTART:rTrUrfúDTEND:úSUMMARY:rdrrgú DESCRIPTION:ú
END:VEVENTú
END:VCALENDARrc)r„rDr]rr^rÚextendÚjoin)rxÚicsrerfs r&Ú ical_dumprž¹s ð ð ð €Cð 
‡vvˆe}„}ð
Š
Ð%˜"˜Uœ)Ð ‡vvˆgð
Š
Ð)˜B˜wœKÐ FŠF7‰OŒO€EÝ%Ñ
Š
Ð?˜eŸnšn¨_ÑE4Ñ Ô ð
Š
Ð8˜eŸnšn¨XÑ
&Š&‰-Œ-€CÝ#•xÑ Ô ð
Š
Ð;˜CŸLšL¨ÑCÑ Ô ð
Š
Ð4˜CŸLšL¨Ñ‡J0˜"Ÿ&š& ¨2Ñ ‡v‚vˆÔð
Š
Ð< "§&¢&¨°rÑ":Ô":ЇJJ ˜oÐ 9Š9S‰>Œ>Ðr(có t¦«}|std¦«dStd¦«|D]}td|d¦«ŒdS)NzNo calendars found.z
Calendars:ú- r@)rJÚprint)ÚargsrFÚcs r&Úcmd_listr¤ÔslÝ ‰?Œ?€DØ ðÝ
ÐˆÝ ˆ,ÑÔÐØ
ð ð ˆÝ
Ð1V”9ÐÐÑÔÐÐð ð r(c
óft|j¦«}tj¦«}|jrdt |j|j|j¦«}tj |td¬¦«ztj   ¦«¦«}n|jr\t j
|j¦«}tj |td¬¦«ztj   ¦«¦«}n£|jr:|jr3tj
|j¦«}tj
|j¦«}nbt |j|j|j¦«}tj |td¬¦«ztj   ¦«¦«}t!||||j¬¦«}|st%d¦«dS| d¬¦«|D]S}| d¦«}|rt+|¦«nd}t%d |d
| d d ¦«¦«ŒTdS)
Nrl©Údays©rˆzNo events found.cóD| d¦«p tjS)Nre)r„rÚmin)Úes r&ú<lambda>zcmd_events.<locals>.<lambda>ðs˜aŸeše G™nœnд r()ryrezAll-dayú[z] rdr)rOÚcalendarrÚnowÚtodayrÚyearÚmonthÚdayÚcombinerÚtimeÚ
fromisoformatrerfrrˆÚsortr„ra) r¢Úcal_urlr¯r†r‡rrxreÚtime_strs r&Ú
cmd_eventsrºÝÝ& t¤}Ñ5€GÝ
Œ,‰.Œ.€CØ „zð Uݘœ #¤)¨S¬WÑ5ˆÝÔ! (­Y¸AÐ->Ñ->Ô->Ñ">ÅÄ ×@QÒ@QÑ@SÔ@SÑTˆØ
ŒðUÝÔ% d¤iÑ0ˆÝÔ! (­Y¸AÐ->Ñ->Ô->Ñ">ÅÄ ×@QÒ@QÑ@SÔ@SÑTˆˆØ
ŒðU˜œðUÝÔ)¨$¬*ÑÝԬш嘜 #¤)¨S¬WÑ5ˆÝÔ! (­Y¸AÐ->Ñ->Ô->Ñ">ÅÄ ×@QÒ@QÑ@SÔ@SÑTˆÝ
˜' 8¨V¸D¼KÐ
H€FØ ðÝ
РшØ
‡K<€KÑðØw‘ˆØ',Ð;•9˜#°)ˆÝ
Ð44˜bŸfšf Y¨rÑ6r(c
óüt|j¦«}tj|j¦«}|jrtj|j¦«n|t
d¬¦«z}ttj ¦«¦«}tj
tj ¦« 
d¦«}| 
d¦«}| 
d¦«}ddddd |d
|d |jd |d
|g }|jr| d|j¦«|jr| d|j¦«| ddg¦«| d¦«d|d} t)| dd |¦«¬¦«t-d|j¦«dS#t.$r=}
t-d|
t0j¬¦«t1jd¦«Yd}
~
dSd}
~
wwxYw)Nrl)ÚhoursrRrTrrrrr“zDTSTAMP:r—r•rr”r˜r™r z.icsÚPUTrc)rr z
Added event: zFailed to add event: ©Úfile)rOrrerfrr_ÚuuidÚuuid4r¯rrXr^rdÚ
recurrencerDrgrÚrstripr'rMÚsysÚstderrÚexit) r¸r†r‡rhÚdtstampr‰rÚ event_urlr«s r&Úcmd_addrÉösÝ& t¤}Ñ5€GÝÔ% d¤jÑ1€HØ15´Ð
\
# D¤HÑ
-¸xÍ)ÐZ[ÐJ\ÑJ\ÔJ\Ñ?\€FÝ
dŒj‰lŒlÑ