2015-03-03 16 views
5

Có cách nào dễ dàng để lấy các sự kiện trong ngày từ tệp ical bằng Python không?Python ical: nhận các sự kiện trong một ngày, kể cả các sự kiện định kỳ

Đối với không định kỳ, một sự kiện ngày nào đó tôi đã sử dụng một cái gì đó giống như

from icalendar import Calendar 
for event in Calendar.from_ical(ical).walk('vevent'): 
    if edate > ref_ref_day_start and event.get('dtstart').dt < ref_day_end: 
     # code here 

Nhưng sự kiện lặp đi lặp lại chỉ xảy ra trong walk một lần.

Tôi có thể thấy cách lặp lại sự kiện vô hạn cho các sự kiện lặp lại không có kết thúc có thể là một vấn đề. Nhưng vẫn phải có một cách dễ dàng hơn so với tính toán sự lặp lại của bản thân mình, phải không?

(Tôi không thể tìm thấy nhiều tài liệu. Tôi đã đọc bài kiểm tra icalendar liên quan đến các sự kiện lặp lại nhưng có vẻ như không làm bất cứ điều gì như thế này).

+0

(Câu hỏi này không được giải quyết được nêu ra. Tôi đã cố gắng một bounty nhỏ, mà hết hạn. Bất kỳ giải pháp vẫn còn chào đón nhiều nhất!) – Mark

Trả lời

2

Yeah.Instead của Ical làm nó theo gcalcli

gcalcli là một ứng dụng Python cho phép bạn truy cập vào Google Calendar của bạn (s) từ một dòng lệnh

[1]: https://github.com/insanum/gcalcli

+0

tôi cần kết quả bằng Python, xin lỗi có một chút không rõ ràng. Nó có thể làm điều đó (tôi không tìm thấy nhiều) hoặc chỉ có dòng lệnh? – Mark

2

bạn có thể sử dụng pyICSParser.

Nó sẽ lấy một tệp ICS và trả về ngày của các sự kiện định kỳ trong danh sách các đối tượng ngày giờ.

Bạn cần chỉ định timewindow bạn muốn các sự kiện đó được trả về, vì các sự kiện khác định kỳ mà không có thông số UNTIL hoặc COUNT sẽ hiển thị danh sách vô hạn.

(từ chối trách nhiệm Tôi là tác giả của gói)

+0

Hmm ý tưởng thực sự tốt đẹp nhưng tôi không thể làm cho nó hoạt động. 'pip' ném một' IOError' vì vậy tôi đã tải xuống nguồn. Tôi đã chỉnh sửa ví dụ này thành 'mycal = iCalendar(); mycal.string_load (ical); in mycal.get_event_instances (bắt đầu = '20150301', kết thúc = '20150315') 'để thử và làm cho nó hoạt động, nhưng nhận được một dấu vết ngoại lệ dài. – Mark

+0

Trông giống như một gói đẹp nhưng tài liệu không tồn tại và không thể đọc tệp iCAL của Lịch Google. Nó không thành công với: 'RFC5545 chỉ định: \ '\ xc2 \ xa73.6.1 chỉ định rằng thành phần lịch \" The "VEVENT không thể được lồng trong thành phần lịch khác. \', Dòng sau không tuân thủ \ n dòng: 17 - END: VTIMEZONE'' – kleptog

Các vấn đề liên quan