nicoscraper 0.2.14 → 0.2.15

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -9,11 +9,11 @@ NicoScraper
9
9
  **Author:** Masami Yonehara
10
10
  **Copyright:** 2011
11
11
  **License:** MIT License
12
- **Latest Version:** 0.2.14
12
+ **Latest Version:** 0.2.15
13
13
  **Release Date:** Oct 18th 2011
14
14
 
15
15
 
16
- 何をするライブラリ?
16
+ 何をするライブラリなの?
17
17
  ------
18
18
 
19
19
   ニコニコ動画の動画ページ、検索ページ、あるいはそのAtomフィードから情報を取得し、その情報に対して各種操作を行えます。タグやマイリスト検索結果からの抽出、および抽出結果に対する反復処理を行うメソッドも備え、ランキングサイト等の制作を支援します。
@@ -59,29 +59,47 @@ NicoScraper
59
59
   上の例のように、Movieクラスのインスタンス(以下「動画インスタンス」)を動画IDを与えて生成した後、`getInfo`メソッドを利用します。その結果、
60
60
 
61
61
  p movie
62
-
63
- <Nicos::Movie:0x00000002537aa8
62
+ <Nicos::Movie:0x00000003590a80
64
63
  @video_id="sm1097445",
65
- @available=true,
64
+ @available=true,
66
65
  @title="【初音ミク】みくみくにしてあげる♪【してやんよ】",
67
- @description="おまえら、みっくみくにしてやんよ。歌詞は...",
68
- @thumbnail_url="http://tn-skr2.smile...",
66
+ @description="おまえら、みっくみくにしてやんよ。歌詞はhttp://ikamo.hp.infoseek.co.jp/mikumiku.txt(9/20 1:55修正)。上げている他のもの→mylist/1450136",
67
+ @thumbnail_url="http://tn-skr2.smilevideo.jp/smile?i=1097445",
69
68
  @first_retrieve=1190218922,
70
- @length=99,
71
- @movie_type="flv",
72
- @size_high=3906547,
69
+ @length=99, @movie_type="flv",
70
+ @size_high=3906547,
73
71
  @size_low=1688098,
74
- @view_counter=9073614,
75
- @comment_num=2553366,
76
- @mylist_counter=183470,
77
- @last_res_body="★███████████☆...",
78
- @watch_url="http://www.nicovideo.jp/...",
72
+ @view_counter=9151941,
73
+ @comment_num=2568537,
74
+ @mylist_counter=184674,
75
+ @last_res_body="...",
76
+ @watch_url="http://www.nicovideo.jp/watch/sm1097445",
79
77
  @thumb_type="video",
80
78
  @embeddable=1,
81
79
  @no_live_play=0,
82
- @tags_jp=["音楽", "初音ミク", ...],
83
- @tags_tw=["彈幕強大", "把你MikuMiku掉♪", ...],
84
- @user_id=70391 >
80
+ @tags_jp=[
81
+ {"value"=>"音楽", :locked=>true, :category=>true},
82
+ {"value"=>"初音ミク", :locked=>true},
83
+ {"value"=>"みくみくにしてあげる♪", :locked=>true},
84
+ {"value"=>"ミクオリジナル曲"},
85
+ {"value"=>"ika"},
86
+ {"value"=>"VOCALOID殿堂入り"},
87
+ {"value"=>"元気が出るミクうた"},
88
+ {"value"=>"VOCALOID"},
89
+ {"value"=>"初音ミク名曲リンク"},
90
+ {"value"=>"夜みっく"}],
91
+ @tags_tw=[
92
+ {"value"=>"彈幕強大"},
93
+ {"value"=>"把你MikuMiku掉♪"},
94
+ {"value"=>"週刊vocaloid排行榜第1名獲得曲"},
95
+ {"value"=>"翻譯歌曲"},
96
+ {"value"=>"台灣VOCALOID評論人氣曲"},
97
+ {"value"=>"最強彈幕傳說"},
98
+ {"value"=>"3次第一的傳說"},
99
+ {"value"=>"已翻譯歌曲"}],
100
+ @user_id=70391
101
+ >
102
+
85
103
   このように、動画インスタンスにインスタンス変数として各種情報が付加されます。
86
104
 
87
105
  ###マイリスト情報の取得
@@ -115,7 +133,7 @@ NicoScraper
115
133
  ],
116
134
  ... >
117
135
 
118
-  というように、動画インスタンスを勝手につくりだして配列として保持します。もちろん、これらの動画インスタンスには独立した操作を加えられます。
136
+  というように、動画インスタンスを勝手につくりだして配列として保持します。もちろん、これらの動画インスタンスには独立した操作を加えられます。ただし、取得ソースが異なるため、MovieクラスのgetInfoメソッドおよびgetHtmlInfoメソッドと、全く同じ内容が取得できるわけではありません。
119
137
 
120
138
  ###検索結果の取得
121
139
 
@@ -143,15 +161,15 @@ NicoScraper
143
161
  Time.at(movie.first_retrieve).to_s
144
162
  }
145
163
 
146
- # "continue"をブロック内で返すと検索を継続
147
- "continue" unless terminate
164
+ # :continueをブロック内で返すと検索を継続
165
+ :continue unless terminate
148
166
  }
149
167
 
150
168
   この例では、`VOCALOID`というタグの付く動画を、`:post_new`=投稿日時が新しい順からさかのぼって取得し、取得した動画の日付が3日前の0時0分を超えるまでそれを続けます。
151
169
 
152
170
   ブロック内の第1引数には取得結果に基づく動画インスタンスが与えられるのですが、これは32個分の配列です。なぜ32個のセットなのかと言うと、ご存知のようにニコニコ動画の検索画面はページで区切られており、Searcherモジュールの各メソッドはページ毎に情報を取得し、ページ単位でブロックをコールするからです。HTMLから取得するにしろAtomフィードから取得するにしろ、1ページに32個の動画情報が含まれています。第2引数にはそれまでのアクセス成否情報等が渡されます。
153
171
 
154
-  そして、**ブロック内で`"continue"`の文字列を返すことによりスクレイプが継続します。**つまり、`"continue"`文字列を返し続けるロジックを組み込まないと、1ページ目を読んだ時点で処理が終了します。これは意図せざる過剰アクセスを防ぐための措置です。
172
+  そして、**ブロック内でシンボル`:continue`を返すことによりスクレイプが継続します。**つまり、`"continue"`文字列を返し続けるロジックを組み込まないと、1ページ目を読んだ時点で処理が終了します。これは意図せざる過剰アクセスを防ぐための措置です。
155
173
 
156
174
   上の例では、取得した動画の日付を調べ、3日前の0時0分より前の動画に到達すればそこでループを終える設計です。ループを継続するために取得情報を使うかどうかは任意なので、例えば10分間の制限で取得出来るだけ取得するということも可能でしょう。
157
175
 
@@ -230,34 +248,57 @@ NicoScraper
230
248
   ニコニコ動画のサーバのレスポンスには、正常にデータを返す以外にいくつかの反応があります。この反応に応じて再試行するか、それともそのリクエストをパスするかが決定されます。以下はレスポンスの内容と、それに対応するウェイト設定用ハッシュのキー、およびメソッドが返すステータスです。ステータスについては各メソッドの説明を参照して下さい。
231
249
 
232
250
  **削除済み** `:deleted`
251
+
233
252
  **404** `:notFound`
234
253
 
235
254
   再試行をせず、次の処理に移行します。
255
+
256
+ <br>
257
+
236
258
 
237
259
  **非公開** `:notPublic`
260
+
238
261
  **コミュニティ限定** `:limInCommunity`
239
262
 
240
263
   動画がマイリストが非公開設定されている場合、あるいはコミュニティ未加入者には非公開になっている動画があります。後者については(前者も自分のものであれば)ログイン処理を事前に行うことで技術的には取得可能ですが、v0.2では未実装です。これらの動画の場合、処理は404に準じます。なお、この場合は内部的には403が返ってきています。
241
264
 
265
+ <br>
266
+
242
267
  **連続アクセスの拒絶** `:deniedSeqReq`
243
268
 
244
269
   "短時間での連続アクセスはご遠慮ください" と表示される場合です。設定に従って**再試行します。**
245
270
 
271
+ <br>
272
+
273
+
274
+
246
275
  **サーバ混雑時** `:serverIsBusy`
247
276
 
248
277
   "大変ご迷惑をおかけいたしますが、しばらく時間をあけてから再度検索いただくようご協力をお願いいたします。" と表示される場合です。**再試行します。**
249
278
 
279
+ <br>
280
+
281
+
282
+
250
283
  **503** `:serviceUnavailable`
251
284
 
252
285
   メンテナンス時に限らず、稼働時にも稀に発生します。処理全体を中断することはなく、**再試行します。**
253
286
 
287
+ <br>
288
+
289
+
290
+
254
291
  **タイムアウト** `:timedOut`
292
+
255
293
   **再試行します。**
256
294
 
257
295
   再試行するメソッドの場合、ウェイトの`increment`の秒数、次回以降の1リクエスト毎のウェイトを増加させます。
258
296
 
259
297
   上記のどれにも該当しない場合、つまり取得とパースに成功した場合には`:succeed`を返します。なお、マイリストは有効に存在し取得もできるが、動画は存在しないという場合も`:succeed`であり、@movies配列が空になるだけです。
260
298
 
299
+ <br>
300
+
301
+
261
302
  ###設定方法
262
303
 
263
304
   ウェイトは、全メソッドが共有する設定と、各インスタンスのみに有効な設定の2つを定義できます。
@@ -327,7 +368,9 @@ GitHubを経由して下さってもいいのですが、まだ慣れていな
327
368
 
328
369
  + HTMLから取得・解析するメソッドの追加。
329
370
 
330
- + キーワード検索の実装。
371
+ + キーワード検索メソッドの実装。
372
+
373
+ + コメント取得メソッドの実装。
331
374
 
332
375
  **v 0.4-**
333
376
 
@@ -338,6 +381,15 @@ GitHubを経由して下さってもいいのですが、まだ慣れていな
338
381
 
339
382
  ###更新履歴
340
383
 
384
+ **v 0.2.15 **
385
+
386
+ + getMoreInfoメソッドを、getHtmlInfoメソッドへ改名。
387
+
388
+ + タグ情報が適切に取得できないバグを解消。
389
+
390
+ + タグ情報の構造を変更。個々のタグ情報を、ロックされているか、カテゴリタグであるかの識別プロパティを持ちうるハッシュにし、それを配列として保持する方式へ。
391
+
392
+
341
393
  **v 0.2.13 0.2.14**
342
394
 
343
395
  + タイトル類似性判定ロジックを、編集距離う使う手法からn-gram法(n=3)に変更。
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.14
1
+ 0.2.15
data/lib/classes/movie.rb CHANGED
@@ -23,14 +23,14 @@ module Nicos
23
23
 
24
24
  # 指定されたマイリストに自分が入っていれば、真を返す。
25
25
  #
26
- # 内部的にMylist::getMoreInfoを利用しているため、もし指定したマイリストの他の情報を使いたければ、
26
+ # 内部的にMylist::getHtmlInfoを利用しているため、もし指定したマイリストの他の情報を使いたければ、
27
27
  # ブロック中に処理を記述することで、getInfoの取得結果を共用することができる。
28
28
  # @param [Fixnum] mylistId マイリストID
29
29
  # @return [Boolean]
30
30
  def isBelongsTo (mylistId, &block)
31
31
  isBelongs = false
32
32
  thisMl = Nicos::Mylist.new(mylistId)
33
- thisMl.getMoreInfo
33
+ thisMl.getHtmlInfo
34
34
 
35
35
  thisMl.movies.each do |movie|
36
36
  isBelongs = true if movie.video_id == @video_id
@@ -456,7 +456,7 @@ module Nicos
456
456
 
457
457
  # 日本語タグ
458
458
  #
459
- # @return [Array<String>]
459
+ # @return [Array<Hash>]
460
460
  # <b>取得可能なメソッド</b>
461
461
  # {Nicos::Movie#getInfo Movie::getInfo}
462
462
  # {Nicos::Movie#getInfo Movie::getHtmlInfo}
@@ -464,7 +464,7 @@ module Nicos
464
464
 
465
465
  # 台湾タグ
466
466
  #
467
- # @return [Array<String>]
467
+ # @return [Array<Hash>]
468
468
  # <b>取得可能なメソッド</b>
469
469
  # {Nicos::Movie#getInfo Movie::getInfo}
470
470
  attr_accessor :tags_tw
@@ -115,36 +115,34 @@ module Nicos
115
115
  #
116
116
  # @return [Fixnum] Trigram法による、
117
117
  def getInfo
118
- parsed = nil
119
118
  @available = false
120
119
 
121
120
  res = connect(
122
121
  Nicos::Connector::MylistAtom.new(),
123
122
  :atom )
124
- parse = parse(res[:result]) do |result|
123
+ parsed = parse(res[:result]) do |result|
125
124
  Nicos::Parser::Xml::mylistAtom(result[:body])
126
125
  end
127
126
 
128
127
  {
129
- :parsed => parse,
128
+ :parsed => parsed,
130
129
  :status => res[:status][:status],
131
130
  :retry => res[:status][:retry]
132
131
  }
133
132
  end
134
133
 
135
- def getMoreInfo
136
- parsed = nil
134
+ def getHtmlInfo
137
135
  @available = false
138
136
 
139
137
  res = connect(
140
138
  Nicos::Connector::MylistHtml.new(),
141
139
  :html )
142
- parse = parse(res[:result]) do |result|
140
+ parsed = parse(res[:result]) do |result|
143
141
  Nicos::Parser::Html::mylist(result[:body])
144
142
  end
145
143
 
146
144
  {
147
- :parsed => parse,
145
+ :parsed => parsed,
148
146
  :status => res[:status][:status],
149
147
  :retry => res[:status][:retry]
150
148
  }
@@ -55,43 +55,56 @@ module Nicos
55
55
 
56
56
  tags = []
57
57
  lockedTags = []
58
- category = nil
59
- lock = nil
58
+ category = nil
59
+ locked = false
60
+ prev = nil
61
+ now = nil
60
62
 
61
63
  while doc.read
62
64
  unless doc.node_type == XML::Reader::TYPE_END_ENTITY
63
- break if doc.name === "tags"
64
-
65
- if category == nil
66
- doc.move_to_attribute("category")
67
- if doc.name === "category"
68
- doc.read
69
- category = doc.value
70
- doc.read
71
- end
65
+ # 終了を判別。もっと環境に依存しない上手いやり方があるはず。
66
+ break if doc.name == "tags"
67
+
68
+ if prev == :end
69
+ category = false
70
+ locked = false
72
71
  end
73
72
 
73
+ doc.move_to_attribute("category")
74
+ category = true if doc.name == "category"
75
+
74
76
  doc.move_to_attribute("lock")
75
- if doc.name === "lock"
76
- lock = true
77
- doc.read
78
- doc.read
79
- else lock = false
77
+ locked = true if doc.name == "lock"
78
+
79
+ # ノードの開始、値、終了を判別する。
80
+ # 例えば<tag>と<tag lock="1"/>が、どちらも'2'と解釈され、開始と終了が区別しづらい。
81
+ #http://dotgnu.org/pnetlib-doc/System/Xml/XmlNodeType.html
82
+ nt = doc.node_type
83
+ now = if (nt == 2 || nt == 1) && prev != :val then :start
84
+ elsif (nt == 2 || nt == 15) && prev == :val then :end
85
+ elsif nt == 3 then :val
80
86
  end
81
87
 
82
- doc.read_inner_xml
83
- if doc.value != nil
84
- if lock then lockedTags.push(doc.value)
85
- else tags.push(doc.value) end
86
- end
88
+ val = doc.read_outer_xml
89
+
90
+ #puts
91
+ #puts now
92
+ #puts val
93
+ #puts "cat:#{category} locked:#{locked}"
94
+
95
+ if now == :val
96
+ obj = { "value" => val }
97
+ obj.merge!({ :locked => true }) if locked == true
98
+ obj.merge!({ :category => true }) if category == true
99
+
100
+ tags.push(obj)
101
+ end
102
+
103
+ prev = now
87
104
  end
88
105
  end
89
106
 
90
- {
91
- :category => category,
92
- :tags => tags,
93
- :lockedTags => lockedTags
94
- }
107
+ tags
95
108
  end
96
109
 
97
110
  hash[symbol] = value
@@ -335,7 +348,7 @@ module Nicos
335
348
 
336
349
  /(description:\s\")([^"]{1,})/ =~ s
337
350
  description = $2
338
-
351
+
339
352
  /(id:\s)([0-9]{1,})/ =~ s
340
353
  mylist_id = $2
341
354
 
@@ -385,4 +398,4 @@ module Nicos
385
398
  module_function :mylist
386
399
  end
387
400
  end
388
- end
401
+ end
@@ -82,7 +82,7 @@ module Nicos
82
82
  status = { :page => @page, :results => @connector.result}
83
83
  order = block.call(movieObjAry, status)
84
84
  @page += 1
85
- end until order != "continue"
85
+ end until order != "continue" || order != :continue
86
86
  end
87
87
 
88
88
  public
@@ -171,13 +171,19 @@ module Nicos
171
171
  #==基本的な使い方
172
172
  # require 'nicoscraper'
173
173
  #
174
+ # count = 0
175
+ #
174
176
  # searcher = Nicos::Searcher::ByTag.new()
175
177
  # searcher.execute('VOCALOID', :view_many) {
176
178
  # |result, status|
177
- #
179
+ #
180
+ # count += 1
181
+ #
178
182
  # result.each { |movieObj|
179
183
  # puts movieObj.title
180
184
  # }
185
+ #
186
+ # :continue unless count >= 3
181
187
  # }
182
188
  #
183
189
  # result ----
@@ -193,12 +199,18 @@ module Nicos
193
199
  # ...
194
200
  #
195
201
  #  Nicos::Searcher::ByTagのインスタンスを作り、executeメソッドに引数を与えて実行します。
196
- # 結果がブロックの第1仮引数に渡されます。
197
- # 渡される結果はMovieクラスのインスタンスを含む配列です。
202
+ # 結果がブロックの第1仮引数に渡されます。渡される結果はMovieクラスのインスタンスを含む配列ですが、
203
+ # MovieクラスのgetInfo、getHtmlInfoメソッドと全く同じではありません。これは、検索ページ/RSSから
204
+ # 動画情報を取得しており、先の2メソッドとは異なる取得元だからです。
198
205
  #
199
206
  #==スクレイプの継続について
200
207
  #
201
- #  ニコニコ動画の検索結果は、指定した数を一度に取得できる訳ではありません。
208
+ #  スクレイプは、ブロック内で明示的に ':continue' あるいは '"continue"' を返さない限り、1リクエストで
209
+ # 終了します。これは、意図せざる過剰アクセスを防ぐための措置です。上の例では、3回アクセスすると終了します。
210
+ # 帰ってきた動画インスタンスの情報を利用することで、一定の投稿日までさかのぼって取得するなどの処理も可能です
211
+ # (トップの例を参照)。
212
+ #
213
+ #  また、ニコニコ動画の検索結果は、指定した数を一度に取得できる訳ではありません。
202
214
  # なぜなら、現状では検索結果はHTML1ページ、もしくは1つのRSS/Atomフィードに32個を限度に渡される方式であり、
203
215
  # ByTagクラスがその結果を利用する以上、32個=1単位という制約のもとに置かれるからです。
204
216
  # 従って、例えば最新の投稿100個の情報が欲しいとしても、1回のリクエストでは手に入らず、
data/nicoscraper.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{nicoscraper}
8
- s.version = "0.2.14"
8
+ s.version = "0.2.15"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{Masami Yonehara}]
12
- s.date = %q{2011-10-17}
12
+ s.date = %q{2011-11-09}
13
13
  s.description = %q{It scrape movies and mylists of Niconico douga.
14
14
  }
15
15
  s.email = %q{zeitdiebe@gmail.com}
@@ -38,8 +38,8 @@ Gem::Specification.new do |s|
38
38
  "lib/config/wait.rb",
39
39
  "lib/nicoscraper.rb",
40
40
  "nicoscraper.gemspec",
41
- "test/movie_spec.rb",
42
- "test/mylist_getmoreinfo_spec.rb",
41
+ "test/movie_getinfo_spec.rb",
42
+ "test/mylist_gethtmlinfo_spec.rb",
43
43
  "test/mylist_spec.rb",
44
44
  "test/searcher_spec.rb"
45
45
  ]
@@ -9,6 +9,7 @@ describe Nicos::Movie, "After executiton of 'getInfo' method." +
9
9
  before(:all) do
10
10
  @movie = Nicos::Movie.new("sm1097445")
11
11
  @result = @movie.getInfo
12
+ p @movie
12
13
  end
13
14
 
14
15
  it "should have the following structure and values." do
@@ -33,16 +34,17 @@ describe Nicos::Movie, "After executiton of 'getInfo' method." +
33
34
  @movie.thumb_type .should == "video"
34
35
  @movie.embeddable .should == 1
35
36
  @movie.no_live_play .should == 0
36
- @movie.tags_jp .should_not be_nil
37
+ @movie.tags_jp .should have_at_least(1).items
38
+ @movie.tags_jp .should have_at_most(12).items
37
39
  @movie.tags_tw .should_not be_nil
38
40
  @movie.user_id .should == 70391
39
41
  end
40
42
 
41
43
  it "should return true when execute 'isBelongsTo' method." +
42
44
  "with passing arguments (1450136)" do
43
- result = @movie.isBelongsTo(1450136)
44
- result .should_not be_nil
45
- result .should be_true
45
+ @result = @movie.isBelongsTo(1450136)
46
+ @result .should_not be_nil
47
+ @result .should be_true
46
48
  end
47
49
 
48
50
  it "should return the following values." do
@@ -4,11 +4,11 @@
4
4
  require '../lib/nicoscraper.rb'
5
5
 
6
6
 
7
- describe Nicos::Mylist, "After executiton of 'getMoreInfo' method" +
7
+ describe Nicos::Mylist, "After executiton of 'getHtmlInfo' method" +
8
8
  "And for example, with passing argument (15196568)" do
9
9
  before(:all) do
10
10
  @mylist = Nicos::Mylist.new(15196568)
11
- @mylist.getMoreInfo
11
+ @mylist.getHtmlInfo
12
12
  end
13
13
 
14
14
  it "should have the following values" do
@@ -65,7 +65,7 @@ describe Nicos::Mylist, "After executiton of 'getInfo' method" +
65
65
  end
66
66
 
67
67
  it "should " do
68
- r = @mylist.getMoreInfo
68
+ r = @mylist.getHtmlInfo
69
69
  r[:status] .should === :notFound
70
70
  r[:result] .should be_nil
71
71
 
@@ -81,7 +81,7 @@ describe Nicos::Mylist, "After executiton of 'getInfo' method" +
81
81
  end
82
82
 
83
83
  it "should " do
84
- r = @mylist.getMoreInfo
84
+ r = @mylist.getHtmlInfo
85
85
  r[:status] .should === :notPublic
86
86
  r[:result] .should be_nil
87
87
 
@@ -97,7 +97,7 @@ describe Nicos::Mylist, "After executiton of 'getInfo' method" +
97
97
  end
98
98
 
99
99
  it "should " do
100
- r = @mylist.getMoreInfo
100
+ r = @mylist.getHtmlInfo
101
101
  # r["status] .should === :deleted
102
102
  r[:status] .should === :notFound
103
103
  r[:result] .should be_nil
@@ -110,7 +110,7 @@ end
110
110
  describe Nicos::Mylist, "After executiton of 'getInfo' method" do
111
111
  before(:all) do
112
112
  @mylist = Nicos::Mylist.new(15196568)
113
- @mylist.getMoreInfo
113
+ @mylist.getHtmlInfo
114
114
  end
115
115
 
116
116
  it "should return over 0.9 when execute 'getSimilarity' method." +
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: nicoscraper
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.14
5
+ version: 0.2.15
6
6
  platform: ruby
7
7
  authors:
8
8
  - Masami Yonehara
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-10-17 00:00:00 Z
13
+ date: 2011-11-09 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: libxml-ruby
@@ -108,8 +108,8 @@ files:
108
108
  - lib/config/wait.rb
109
109
  - lib/nicoscraper.rb
110
110
  - nicoscraper.gemspec
111
- - test/movie_spec.rb
112
- - test/mylist_getmoreinfo_spec.rb
111
+ - test/movie_getinfo_spec.rb
112
+ - test/mylist_gethtmlinfo_spec.rb
113
113
  - test/mylist_spec.rb
114
114
  - test/searcher_spec.rb
115
115
  homepage: http://github.com/hdemon/nicoscraper
@@ -125,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
125
  requirements:
126
126
  - - ">="
127
127
  - !ruby/object:Gem::Version
128
- hash: 2054183697901243262
128
+ hash: 1016263776231104904
129
129
  segments:
130
130
  - 0
131
131
  version: "0"