Module: Syobocal::RSS

Defined in:
lib/syobocal/rss.rb

Defined Under Namespace

Classes: Result

Class Method Summary collapse

Class Method Details

.get(params = {}) ⇒ Object



3
4
5
# File 'lib/syobocal/rss.rb', line 3

def get(params = {})
  parse(URI.open(url(params)))
end

.parse(rss) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/syobocal/rss.rb', line 11

def parse(rss)
  rss = REXML::Document.new(rss)

  result = Result.new

  channel = rss.elements["rdf:RDF/channel"]
  result.title = channel.elements["title"].text
  result.link = channel.elements["link"].text
  result.description = channel.elements["description"].text

  rss.elements.each("rdf:RDF/item") { |item|
    tv = item.elements["tv:feed"]
    result << {
      :about => item.attribute("rdf:about").to_s,
      :title => item.elements["title"].text,
      :link => item.elements["link"].text,
      :description => item.elements["description"].text,
      :dc_date => Time.parse(item.elements["dc:date"].text),
      :dc_publisher => item.elements["dc:publisher"].text,
      :tv_genre => tv.elements["tv:genre"].text,
      :tv_start_datetime => Time.parse(tv.elements["tv:startDatetime"].text),
      :tv_end_datetime => Time.parse(tv.elements["tv:endDatetime"].text),
      :tv_iepg_url => tv.elements["tv:iepgUrl"].text,
      :tv_performer => tv.elements["tv:performer"].text,
    }
  }

  result
end

.url(params = {}) ⇒ Object



7
8
9
# File 'lib/syobocal/rss.rb', line 7

def url(params = {})
  "http://cal.syoboi.jp/rss.php" + Syobocal::Util.format_params(params)
end