class Niconico::Mylist

Public Class Methods

new(ptr, agent=nil) click to toggle source
Calls superclass method Niconico::Fabric::new
# File lib/nv/niconico/mylist.rb, line 5
def initialize(ptr, agent=nil)
  super(agent)

  @id = normalize(ptr)
  @mylist = nil
  fetch
end

Public Instance Methods

method_missing(method, *args) click to toggle source
# File lib/nv/niconico/mylist.rb, line 13
def method_missing(method, *args)
  raise(NoMethodError, method) unless @mylist.respond_to? method
  @mylist[method]
end

Private Instance Methods

fetch() click to toggle source
# File lib/nv/niconico/mylist.rb, line 24
def fetch
  doc = REXML::Document.new(open("http://www.nicovideo.jp/mylist/#{@id}?rss=2.0").read)

  channel = doc.elements['/rss/channel']

  items = []
  channel.elements.each('item') do |item|
    html_description = item.elements['description/text()'].to_s.gsub(/<p class=\"nico-info\">.+<\/p>/, '')
    description = html_description.gsub(/<\/?.*?>/, '')

    items << OpenStruct.new({
      :title            => item.elements['title/text()'].to_s,
      :link             => item.elements['link/text()'].to_s,
      :guid             => item.elements['guid/text()'].to_s,
      :created_at       => item.elements['pubDate/text()'].to_s,
      :description      => description,
      :html_description => html_description
    })
  end

  @mylist = OpenStruct.new({
    :title       => channel.elements['title/text()'].to_s.gsub(/(^マイリスト\s|‐ニコニコ動画$)/, ''),
    :link        => channel.elements['link/text()'].to_s,
    :description => channel.elements['description/text()'].to_s,
    :created_at  => channel.elements['pubDate/text()'].to_s,
    :updated_at  => channel.elements['lastBuildDate/text()'].to_s,
    :generator   => channel.elements['generator/text()'].to_s,
    :author      => channel.elements['dc:creator/text()'].to_s,
    :language    => channel.elements['language/text()'].to_s,
    :items       => items,
    :items_count => items.size
  })
end
normalize(ptr) click to toggle source
# File lib/nv/niconico/mylist.rb, line 20
def normalize(ptr)
  ptr.match(/mylist\/([0-9]+)\??/)[1]
end