require "nicoquery/api/mylist_rss" require "nicoquery/object_mapper/mylist_rss" require "nicoquery/object/movie" module NicoQuery module Object class Mylist attr_accessor :movies [ 'title', 'mylist_id', 'url', 'link', 'description', 'publish_date', 'last_build_date', 'creator', ].each do |field_name| define_method(field_name) do if available? @source_object.meta.send field_name else nil end end end def initialize(mylist_id) @movies = [] @mylist_id = mylist_id @response_xml = (NicoQuery::Api::MylistRSS.new mylist_id).get @source_object = source_object set_hash_items end def available? [exist?, !forbidden?].all? end def forbidden? @response_xml[:status_code] == 403 end def exist? @response_xml[:status_code] != 404 end private def source_object if available? NicoQuery::ObjectMapper::MylistRSS.new @response_xml[:body] else NicoQuery::ObjectMapper::MylistRSS.new null_response_xml end end def set_hash_items @source_object.items.each do |item| movie = NicoQuery::Object::Movie.new item.video_id.presence || item.thread_id movie.set_mylist_rss_source item @movies.push movie end end def null_response_xml <<-EOS EOS end end end end # マイリスト to_test‐ニコニコ動画 # http://www.nicovideo.jp/mylist/38369702 # # # Sat, 17 Aug 2013 22:51:40 +0900 # Sat, 17 Aug 2013 22:51:40 +0900 # ニコニコ動画 # うえおに # ja-jp # (c) niwango, inc. All rights reserved. # http://blogs.law.harvard.edu/tech/rss