Парсинг 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]

Другие вопросы по тегам