Разбор iCalendar с настраиваемыми полями с помощью задачи Ruby/Rails rake

У меня есть настройка задачи rake, которая импортирует события из файла 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

person Matt    schedule 21.11.2012    source источник


Ответы (1)


Используйте icalendar gem.
Предположим, что есть атрибут этого типа.

ОРГАНИЗАТОР;CN=abc:MAILTO:[email protected]

Чтобы получить доступ к значениям параметров, прочитайте и проанализируйте файл ical.

cal = Icalendar.parse(cal_file).first

event = cal.events.first

Теперь event.organizer дает мне uri.

Чтобы получить доступ к использованию значения CN,

event.organizer.ical_params["CN"][0]

person skadoosh    schedule 18.04.2013