Парсинг iCalendar с настраиваемыми полями с помощью грабли Ruby/Rails
У меня есть установка грабли задачи, которая импортирует события из файла iCal, используя гем iCalendar. ICal также содержит несколько пользовательских полей в дополнение к стандартным полям.ics. Можно ли импортировать и эти значения?
Строки, подобные этой, в файле iCal, с которыми я могу справиться без проблем:
DESCRIPTION:The lions and tigers are on exhibit.
Проблема возникает для таких строк:
X-TRUMBA-CUSTOMFIELD;NAME="Event Location";ID=10831;TYPE=SingleLine:Lower Level\,
across from the Stars and Stripes Cafe
Как бы я сослался на настраиваемое поле "Расположение события"?
Вот код, который у меня есть до сих пор:
desc "Import events from Smithsonian"
task :smithsonian => :environment do
url = "http://www.trumba.com/calendars/smithsonian-events.ics"
cals = Icalendar.parse(open(url))
cal = cals.first
cal.events.each do |event|
e = TempEvent.find_or_create_by_name(
:name => event.summary.to_s,
:description => event.description.to_s,
:starts_at => event.dtstart.to_s,
:ends_at => event.dtend.to_s,
:tag_list => event.categories,
:url => event.url,
:facebook_url => "https://www.facebook.com/Smithsonian",
:twitter_url => "https://twitter.com/smithsonian",
:venue_name => "Smithsonian",
:external_id => event.uid.to_s,
:source => "Smithsonian iCal import",
:published => true)
end
end
1 ответ
Использование icalendar
драгоценный камень.
Предполагая, что есть атрибут этого типа
ОРГАНИЗАТОР;CN= ABC:MAILTO:abc@gmail.com
Чтобы получить доступ к значениям параметров, прочитайте и проанализируйте файл ical.
cal = Icalendar.parse(cal_file).first
event = cal.events.first
Теперь event.organizer дает мне URI.
Чтобы получить доступ к значению CN,
event.organizer.ical_params["CN"][0]