Class: Nicos::Movie
- Inherits:
-
Object
- Object
- Nicos::Movie
- Includes:
- Connector::SetWait
- Defined in:
- lib/classes/movie.rb
Instance Attribute Summary collapse
-
#available ⇒ Boolean
このインスタンスがgetInfo等によって正常に情報を取得できている場合、trueとなる。 各種メソッドの実行には、これがtrueであることが要求される。.
-
#comment_num ⇒ Fixnum
取得時のコメント数.
-
#create_time ⇒ Fixnum
動画の投稿日に近いが、若干こちらの方が遅い。詳細不明。.
-
#deleted ⇒ Fixnum
削除されたかどうか。削除済みの場合は1、そうでなければ0。.
-
#description ⇒ String
投稿者が記述した動画の説明文.
-
#embeddable ⇒ Fixnum
ブログ等に埋め込み、ログインなしでも閲覧できるかどうか。可能なら1。.
-
#first_retrieve ⇒ Fixnum
動画の投稿日.
-
#item_id ⇒ Fixnum
動画に与えられるもう一つの一意なIDであり、投稿日時と同じか非常に近いUNIX時間になっている。.
-
#last_res_body ⇒ String
最新のコメント.
-
#length ⇒ Fixnum
動画の長さ(秒).
-
#memo ⇒ String
マイリストの動画紹介欄に記載される説明文.
-
#movie_type ⇒ String
動画ファイルの種類。.
-
#mylist_counter ⇒ Fixnum
取得時のマイリスト数.
-
#mylist_id ⇒ Fixnum
この動画が属するマイリストのID .
-
#no_live_play ⇒ Fixnum
ニコニコ生放送の拒否?.
-
#size_high ⇒ Fixnum
高画質時の動画サイズ?.
-
#size_low ⇒ Fixnum
低画質時の動画サイズ?.
-
#tags_jp ⇒ Array<Hash>
日本語タグ.
-
#tags_tw ⇒ Array<Hash>
台湾タグ.
-
#thumb_type ⇒ String
?.
-
#thumbnail_url ⇒ String
サムネイルのURL.
-
#title ⇒ String
動画のタイトル.
-
#update_time ⇒ Fixnum
動画の更新日?.
-
#user_id ⇒ Fixnum
ユーザID.
-
#video_id ⇒ String
動画に付与される、sm|nmで始まる一意のID .
-
#view_counter ⇒ Fixnum
取得時の再生数.
-
#watch ⇒ String
?.
-
#watch_url ⇒ String
動画の閲覧URL.
Instance Method Summary collapse
-
#extrMylist ⇒ Array
動画説明文中からマイリストIDを示す文字列を抽出し、配列として返す。.
-
#getInfo ⇒ Boolean
動画の詳細な情報を取得し、インスタンス変数に納める。.
-
#initialize(video_id) ⇒ Movie
constructor
インスタンス作成直後は、情報を取得しメソッドを実行する準備が整ったことを示す @availableがfalseである。getInfo等で情報を取得するか、あるいはsetメソッドで availableにtrueを代入する必要がある。.
-
#isBelongsTo(mylistId, &block) ⇒ Boolean
指定されたマイリストに自分が入っていれば、真を返す。 .
-
#searchSeriesMl(threshold) ⇒ Fixnum
自分が含まれる、投稿者の作ったシリーズとしてまとめているマイリストのIDを返す。.
-
#set(paramObj) ⇒ Object
インスタンスに対し、任意の情報を入れる。.
Methods included from Connector::SetWait
Constructor Details
#initialize(video_id) ⇒ Movie
インスタンス作成直後は、情報を取得しメソッドを実行する準備が整ったことを示す @availableがfalseである。getInfo等で情報を取得するか、あるいはsetメソッドで availableにtrueを代入する必要がある。
17 18 19 20 |
# File 'lib/classes/movie.rb', line 17 def initialize(video_id) @video_id = video_id @available = false end |
Instance Attribute Details
#available ⇒ Boolean
このインスタンスがgetInfo等によって正常に情報を取得できている場合、trueとなる。 各種メソッドの実行には、これがtrueであることが要求される。
227 228 229 |
# File 'lib/classes/movie.rb', line 227 def available @available end |
#comment_num ⇒ Fixnum
331 332 333 |
# File 'lib/classes/movie.rb', line 331 def comment_num @comment_num end |
#create_time ⇒ Fixnum
動画の投稿日に近いが、若干こちらの方が遅い。詳細不明。
マイリストHTML中JSオブジェクトの“create_time”、マイリストAtomフィードにおける<published>に対応。
取得可能なメソッド
381 382 383 |
# File 'lib/classes/movie.rb', line 381 def create_time @create_time end |
#deleted ⇒ Fixnum
削除されたかどうか。削除済みの場合は1、そうでなければ0。
取得可能なメソッド
351 352 353 |
# File 'lib/classes/movie.rb', line 351 def deleted @deleted end |
#description ⇒ String
271 272 273 |
# File 'lib/classes/movie.rb', line 271 def description @description end |
#embeddable ⇒ Fixnum
447 448 449 |
# File 'lib/classes/movie.rb', line 447 def @embeddable end |
#first_retrieve ⇒ Fixnum
301 302 303 |
# File 'lib/classes/movie.rb', line 301 def first_retrieve @first_retrieve end |
#item_id ⇒ Fixnum
動画に与えられるもう一つの一意なIDであり、投稿日時と同じか非常に近いUNIX時間になっている。
例えば、“【初音ミク】みくみくにしてあげる♪【してやんよ】”の動画IDはsm1097445であり、アイテムIDは1190218917である。このアイテムIDを日時に直すと、日本時間における2007年9月20日 1:21:57となるが、動画に投稿日時として表示されるのは、2007年9月20日 1:22:02である。
取得可能なメソッド
261 262 263 |
# File 'lib/classes/movie.rb', line 261 def item_id @item_id end |
#last_res_body ⇒ String
361 362 363 |
# File 'lib/classes/movie.rb', line 361 def last_res_body @last_res_body end |
#length ⇒ Fixnum
341 342 343 |
# File 'lib/classes/movie.rb', line 341 def length @length end |
#memo ⇒ String
マイリストの動画紹介欄に記載される説明文
取得可能なメソッド
402 403 404 |
# File 'lib/classes/movie.rb', line 402 def memo @memo end |
#movie_type ⇒ String
412 413 414 |
# File 'lib/classes/movie.rb', line 412 def movie_type @movie_type end |
#mylist_counter ⇒ Fixnum
321 322 323 |
# File 'lib/classes/movie.rb', line 321 def mylist_counter @mylist_counter end |
#mylist_id ⇒ Fixnum
249 250 251 |
# File 'lib/classes/movie.rb', line 249 def mylist_id @mylist_id end |
#no_live_play ⇒ Fixnum
455 456 457 |
# File 'lib/classes/movie.rb', line 455 def no_live_play @no_live_play end |
#size_high ⇒ Fixnum
419 420 421 |
# File 'lib/classes/movie.rb', line 419 def size_high @size_high end |
#size_low ⇒ Fixnum
426 427 428 |
# File 'lib/classes/movie.rb', line 426 def size_low @size_low end |
#tags_jp ⇒ Array<Hash>
463 464 465 |
# File 'lib/classes/movie.rb', line 463 def @tags_jp end |
#tags_tw ⇒ Array<Hash>
470 471 472 |
# File 'lib/classes/movie.rb', line 470 def @tags_tw end |
#thumb_type ⇒ String
440 441 442 |
# File 'lib/classes/movie.rb', line 440 def thumb_type @thumb_type end |
#thumbnail_url ⇒ String
291 292 293 |
# File 'lib/classes/movie.rb', line 291 def thumbnail_url @thumbnail_url end |
#title ⇒ String
281 282 283 |
# File 'lib/classes/movie.rb', line 281 def title @title end |
#update_time ⇒ Fixnum
動画の更新日?
マイリストHTML中JSオブジェクトの“update_time”、マイリストAtomフィードにおける<updated>に対応。
取得可能なメソッド
391 392 393 |
# File 'lib/classes/movie.rb', line 391 def update_time @update_time end |
#user_id ⇒ Fixnum
478 479 480 |
# File 'lib/classes/movie.rb', line 478 def user_id @user_id end |
#video_id ⇒ String
動画に付与される、sm|nmで始まる一意のID
取得可能なメソッド
239 240 241 |
# File 'lib/classes/movie.rb', line 239 def video_id @video_id end |
#view_counter ⇒ Fixnum
311 312 313 |
# File 'lib/classes/movie.rb', line 311 def view_counter @view_counter end |
#watch ⇒ String
371 372 373 |
# File 'lib/classes/movie.rb', line 371 def watch @watch end |
#watch_url ⇒ String
433 434 435 |
# File 'lib/classes/movie.rb', line 433 def watch_url @watch_url end |
Instance Method Details
#extrMylist ⇒ Array
動画説明文中からマイリストIDを示す文字列を抽出し、配列として返す。
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/classes/movie.rb', line 96 def extrMylist return if !@available puts "Extracting mylistId from the description..." mylistIdAry = [] extracted = @description.scan(/mylist\/[0-9]{1,8}/) if extracted[0] != nil extracted.each { |e| id = e.scan(/[0-9]{1,8}/)[0] mylistIdAry.push(id) puts "\sID:\t#{id} is extracted." } else puts "\sMylistId is not found." end mylistIdAry end |
#getInfo ⇒ Boolean
動画の詳細な情報を取得し、インスタンス変数に納める。
内部的にgetThumbInfo APIを利用。
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/classes/movie.rb', line 119 def getInfo parsed = nil @available = false con = Nicos::Connector::GetThumbInfo.new() host = 'ext.nicovideo.jp' entity = "/api/getthumbinfo/#{@video_id}" result = con.get(host, entity, '') status = con.getStatus if result[:order] == :afterTheSuccess parsed = Nicos::Parser::Xml::getThumbInfo(result[:body]) set(parsed) @available = true end { :parsed => parsed, :status => status[:status], :retry => status[:retry] } end |
#isBelongsTo(mylistId, &block) ⇒ Boolean
指定されたマイリストに自分が入っていれば、真を返す。
内部的にMylist::getHtmlInfoを利用しているため、もし指定したマイリストの他の情報を使いたければ、 ブロック中に処理を記述することで、getInfoの取得結果を共用することができる。
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/classes/movie.rb', line 30 def isBelongsTo (mylistId, &block) isBelongs = false thisMl = Nicos::Mylist.new(mylistId) thisMl.getHtmlInfo thisMl.movies.each do |movie| isBelongs = true if movie.video_id == @video_id end if thisMl.movies != nil if isBelongs puts "\sThis movie is found in mylist/" + mylistId.to_s else puts "\sThis movie is not found in mylist/" + mylistId.to_s end block.call(thisMl) if block != nil isBelongs end |
#searchSeriesMl(threshold) ⇒ Fixnum
自分が含まれる、投稿者の作ったシリーズとしてまとめているマイリストのIDを返す。
isBelongsは指定されたマイリストとの関係を調べるが、isSeriesOfは動画説明文中のマイリストIDのみを用いる。
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/classes/movie.rb', line 55 def searchSeriesMl(threshold) if !@available then puts "This movie object is not available." "failed" else puts puts "Start to discern the seriality of..." puts "\svideo_id:\s\s#{@video_id}" puts "\stitle:\s\s\s\s\s#{@title}" mylistIdAry = extrMylist resultAry = [] mlobj = nil similarity = 0.0 belongsTo = nil mylistIdAry.each { |_mylistId| belongsTo = isBelongsTo(_mylistId) { |mylistObj| similarity = mylistObj.getSimilarity puts "\sSimilarity:\t#{similarity}" mlobj = mylistObj } if belongsTo puts "\s#{_mylistId.to_s}\tis perecieved as series mylist." resultAry.push({ :mylistObj => mlobj, :similarity => similarity }) end } puts "\sDiscern logic terminated." resultAry end end |
#set(paramObj) ⇒ Object
インスタンスに対し、任意の情報を入れる。
getInfo等を利用せずインスタンス変数に直接情報を入れる場合、もしgetThumbInfoやMylist APIからXMLやJSONで取得し、 特にキー名を変更していないハッシュオブジェクトがあるのであれば、setメソッドで一括代入することができる。
なお、getThumbInfoや、マイリストAtomフィードなどの情報は、取得元になるXML等のタグ名が少しずつ異なるため、 setメソッドに渡すべきハッシュオブジェクトのキー名は、必ずしもインスタンス変数の名前とは一致しない。 例えば、getThumbInfoは現在のコメント数をcomment_numというタグで示すが、 マイリストのAtomフィードはnico-numbers-resというクラス名のタグで囲んでいる。
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/classes/movie.rb', line 153 def set(paramObj) paramObj.each_key { |key| param = paramObj[key] case key when "available", :available then @available = param # common when "video_id", :video_id then @video_id = param.to_s when "item_id", :item_id then @item_id = param.to_i when "title", :title then @title = param.to_s when "mylist_id", :mylist_id then @mylist_id = param.to_i when "description",:description then @description = param.to_s when "length", :length then @length = param.to_i when "first_retrieve", :first_retrieve then @first_retrieve = param when "group_type",:group_type then @group_type # MylistAPI 現在未実装 when "item_data" paramObj['item_data'].each_key do |key| param = paramObj['item_data'][key] case key when "video_id" then @video_id = param.to_s when "title" then @title = param.to_s when "thumbnail_url" then @thumbnail_url = param.to_s when "first_retrieve" then @first_retrieve = param.to_i when "update_time" then @update_time = param.to_i when "view_counter" then @view_counter = param.to_i when "mylist_counter" then @mylist_counter = param.to_i when "num_res" then @comment_num = param.to_i when "length_seconds" then @length = param.to_i when "deleted" then @deleted = param.to_i when "last_res_body" then @last_res_body = param.to_s end end when "watch", :watch then @watch = param.to_i when "create_time",:create_time then @create_time = param.to_i when "update_time",:update_time then @update_time = param.to_i # Mylist-Atom when "memo", :memo then @memo = param.to_s when "published", :published then @create_time = param.to_i when "updated", :updated then @update_time = param.to_i when "view", :view then @view_counter = param.to_i when "mylist", :mylist then @mylist_counter = param.to_i when "res", :res then @comment_num = param.to_i # getThumbInfo when "thumbnail_url", :thumbnail_url then @thumbnail_url = param.to_s when "movie_type", :movie_type then @movie_type = param.to_s when "size_high", :size_high then @size_high = param.to_i when "size_low", :size_low then @size_low = param.to_i when "view_counter", :view_counter then @view_counter = param.to_i when "mylist_counter", :mylist_counter then @mylist_counter = param.to_i when "comment_num", :comment_num then @comment_num = param.to_i when "last_res_body", :last_res_body then @last_res_body = param.to_s when "watch_url", :watch_url then @watch_url = param.to_s when "thumb_type", :thumb_type then @thumb_type = param.to_s when "embeddable", :embeddable then @embeddable = param.to_i when "no_live_play", :no_live_play then @no_live_play = param.to_i when "tags_jp", :tags_jp then @tags_jp = param when "tags_tw", :tags_tw then @tags_tw = param when "tags_de", :tags_de then @tags_de = param when "tags_es", :tags_es then @tags_sp = param when "user_id", :user_id then @user_id = param.to_i end } end |