-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwings_schedule.rb
30 lines (23 loc) · 948 Bytes
/
wings_schedule.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
require 'hpricot'
require 'open-uri'
require 'icalendar'
calendar = Icalendar::Calendar.new
schedule = Hpricot(open("http://redwings.nhl.com/team/app?service=page&page=SubseasonSchedule"))
games = schedule.search('tr.oddRowColor | tr.evenRowColor')
games.each do |game|
raw_details = game.children_of_type('td')
details = raw_details.map { |d| d.inner_text.to_s.strip }
broadcasts = []
broadcasts << "National: #{details[7]}" unless details[7].empty?
broadcasts << "Local(H): #{details[9]}" unless details[9].empty?
broadcasts << "Local(A): #{details[8]}" unless details[8].empty?
event = Icalendar::Event.new
event.summary = "#{details[1]} @ #{details[2]}"
event.dtstart = DateTime.parse("#{details[0]} at #{details[5]}")
event.duration = "PT3H" # 3 hours
event.description = broadcasts.join("; ")
calendar.add_event(event)
end
File.open('red_wings_2008_09.ics', 'w') do |file|
file.puts calendar.to_ical
end