2011-11-05 2 views
1

Iam с трудом растрескивает это. Я прочитал ICS-файл в AppleScript, и мне нужно его разобрать. Это мой кодРасписание календаря (ICS) с AppleScript

set calURL to "https://url.to.ics" 
set calenderData to do shell script "curl " & calURL 

Данные читаются в порядке, но мне нужно его разобрать. Я хочу, чтобы скрипт считывал данные между BEGIN: VEVENT и END: VEVENT для каждого события. Я не уверен, как это сделать, но с петлей foreach или что-то еще?

Вот образец календаря, содержащий мои экзамены.

BEGIN:VCALENDAR 
VERSION:2.0 
X-WR-CALNAME:Eksamener 
X-WR-CALDESC: 
X-APPLE-CALENDAR-COLOR:#CC2B23FF 
BEGIN:VEVENT 
UID:C96EF18C-5D17-4170-8C67-832B7F90B464 
SUMMARY:TK 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111213 
DTEND;VALUE=DATE:20111214 
END:VEVENT 
BEGIN:VEVENT 
UID:BDBE0B4B-FF3D-4245-B23F-F1BF25F65998 
SUMMARY:DB 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111006 
DTEND;VALUE=DATE:20111007 
END:VEVENT 
BEGIN:VEVENT 
UID:21261AF0-FDA7-432B-B513-CC3A9C04393D 
SUMMARY:PG 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111216 
DTEND;VALUE=DATE:20111217 
END:VEVENT 
END:VCALENDAR

Это не относится к школе, я просто хочу, чтобы разобрать данные, чтобы просмотреть его на моем рабочем столе (GeekTool).

ответ

0

Вам нужно использовать разделители текстовых элементов. Попробуйте это и посмотрите, сможете ли вы понять, как это работает.

set theData to "BEGIN:VCALENDAR 
VERSION:2.0 
X-WR-CALNAME:Eksamener 
X-WR-CALDESC: 
X-APPLE-CALENDAR-COLOR:#CC2B23FF 
BEGIN:VEVENT 
UID:C96EF18C-5D17-4170-8C67-832B7F90B464 
SUMMARY:TK 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111213 
DTEND;VALUE=DATE:20111214 
END:VEVENT 
BEGIN:VEVENT 
UID:BDBE0B4B-FF3D-4245-B23F-F1BF25F65998 
SUMMARY:DB 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111006 
DTEND;VALUE=DATE:20111007 
END:VEVENT 
BEGIN:VEVENT 
UID:21261AF0-FDA7-432B-B513-CC3A9C04393D 
SUMMARY:PG 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111216 
DTEND;VALUE=DATE:20111217 
END:VEVENT 
END:VCALENDAR" 

set text item delimiters to "BEGIN:VEVENT" 
set theEvents to text items of theData 
set text item delimiters to "END:VEVENT" 

set allEvents to {} 
repeat with i from 2 to count of theEvents 
    set theEvent to item i of theEvents 
    set trimmedEvent to text item 1 of theEvent 
    set end of allEvents to text 2 thru -2 of trimmedEvent -- you can do something here instead of collecting them in the list 
end repeat 
set text item delimiters to "" 
return allEvents 
+0

Я просматриваю код, и я получаю его часть. Но что мне делать, чтобы вытащить CREATED: данные для каждого события, например? Я пробовал, но он просто сбой/или дает мне только первое событие. Извините за то, что вы новичок, и спасибо за вашу помощь. Я очень ценю это. –

Смежные вопросы