簡體   English   中英

如何將iCalendear條目從一台服務器移動到另一台服務器?

[英]How do I move iCalendear entries from one server to another?

我正在尋找如何將caldav條目從一台服務器可靠地傳輸到另一台服務器imapcopy可以做的事情。 我正在嘗試使用Python caldav實現 ,但是我對協議的了解不深,無法知道如何從一台服務器遷移到另一台服務器。 有明顯的方法嗎?

我認為沒有現成的工具可以進行此類遷移,但是如果您精通Python和urllib2,那么破解某些東西就不會太難。

您只想傳輸一個日歷,還是要傳輸所有包含內容的日歷? 您能更精確地了解所涉及的服務器嗎? 是否涉及共享日歷?

真正困難的部分是會議。 您要遷移嗎? 如果不是這樣,那就相對簡單了:

如果只是一個日歷,那么基礎很容易。 在CalDAV中,日歷是一個WebDAV集合,其中包含“ iCalendar”資源。 您可以按原樣獲取它們,並將其傳輸到其他服務器。 您只需在日歷URL上執行HTTP PROPFIND即可找出集合中包含的資源的URL。 比您執行一個簡單的HTTP GET來獲取iCalendar資源,並將其放入目標服務器的日歷中。 您甚至不需要在這里使用CalDAV庫(即使WebDAV庫也有些過分,您只需要解析PROPFIND的XML並將urllib2用於請求即可)。

僅捕獲日歷中的資源URL(事件和待辦事項)的示例: curl --verbose -u "login:pwd" -X PROPFIND -H "Depth: 1" --data "<propfind xmlns='DAV:'><prop/></propfind>" https://p00-caldav.icloud.com/xxx/calendars/work/

如果源服務器支持(通用),則可以通過使用多獲取REPORT來提高效率。 如果目標服務器支持(罕見),則可以通過使用批量POST來提高效率。 某些服務器(如iCloud)將附件存儲在其他位置。 這可能需要額外的工作。

如果您還想傳輸日歷,也不太困難,但是涉及更多的WebDAV。 您需要通過在日歷主頁(包含所有日歷的URL)上執行PROPFIND來獲取日歷的所有屬性(名稱,顏色)。 CalDAV服務器的主目錄可以包含非日歷,您可以通過查看DAV:resourcetype屬性來解決這一問題。 對於日歷,您可以使用MKCOL或MKCALENDAR在目標服務器上創建日歷(這些方法可以采用您要傳輸的屬性)。

獲取所有日歷的名稱,顏色等的示例: curl --verbose -u "login:pwd" -X PROPFIND -H "Depth: 1" --data "<propfind xmlns='DAV:'><allprop/></propfind>" https://p00-caldav.icloud.com/xxx/calendars/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM