kp_api 0.10.0 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6fa496418a1f5b7a34159426acdbe37602e2e048
4
- data.tar.gz: 8a615ed5fd17747e95dfc4f87dfa6e1fecf4745d
3
+ metadata.gz: 50c8c90694366c971f47463ed2c4882b91ca3f6f
4
+ data.tar.gz: 1e757f1a6d0a2f58558b25e736211f4892ff5d8b
5
5
  SHA512:
6
- metadata.gz: c036fcba5866d3be6f5082dca0c8ec912ddbbf6fd036e8c35b3f07b76b593dc710a52b8d42c1619381b4df0fff644104d5025e89b5140bcf4553d327ff61f727
7
- data.tar.gz: fa65c8f057a8e219c971b2ed31f092d6ee3619029ad68ec435ab7edf1bbe9da09f1491e456a5f9d69994cb5ec878c26203e5fae0181f0b3d1e3f32b9d6603cf1
6
+ metadata.gz: 672c8ac47d41aa2bf9167190036337c479edabfb3a1d4f639bf6ab5cb7a6df73f54a767f117f4707f92a0960686198145674942c07316d6de63a4348472ccaf7
7
+ data.tar.gz: abc70480e11d244db7fa26a330525881af05601b6522b6b50bd657474cc6280250c4cfc0b3c37f2013689346364195e70ba21e0bb524c4603e65c8ba4a27dee1
data/README.md CHANGED
@@ -1,4 +1,9 @@
1
- # КиноПоиск API (Gem) [![Build Status](https://travis-ci.org/groverz/kp_api.svg?branch=master)](https://travis-ci.org/groverz/kp_api)
1
+ # КиноПоиск API (Gem)
2
+ [![Build Status](https://travis-ci.org/groverz/kp_api.svg?branch=master)](https://travis-ci.org/groverz/kp_api)
3
+ [![Gem Version](https://badge.fury.io/rb/kp_api.svg)](https://badge.fury.io/rb/kp_api)
4
+ [![Dependency Status](https://gemnasium.com/badges/github.com/groverz/kp_api.svg)](https://gemnasium.com/github.com/groverz/kp_api)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/01df704ac22f9271ecc8/maintainability)](https://codeclimate.com/github/groverz/kp_api/maintainability)
6
+
2
7
  Этот gem создан для упрощения работы с КиноПоиск API в проектах на Ruby.
3
8
  Гем работает через API от кинопоиска.
4
9
  Используется соответственно не официально, прикидываясь андроидом.
@@ -7,7 +12,7 @@
7
12
  * Изменено название гема.
8
13
  * Восстановлена работа API использует последнюю версию подписи 5.0.0.
9
14
  * Написаны тесты.
10
- * Добавлен travis-ci
15
+ * Добавлен travis-ci.
11
16
 
12
17
  ## Установка
13
18
  Добавьте эту строку в Gemfile вашего приложения:
@@ -238,11 +243,52 @@ search.next_page
238
243
  # > true [Получена следующая станица]
239
244
  # > false [Достигли конца пагинации]
240
245
  ```
246
+
241
247
  #### Живой поиск
242
- @to-do
248
+ ```ruby
249
+ search = KpApi::PeopleSearch.new('Анд')
250
+ ```
251
+ ```ruby
252
+ # Найдено ли что-нибудь)
253
+ search.found?
254
+ ```
255
+ ```ruby
256
+ # Массив фильмов/людей в перемешку
257
+ # (@todo удалить неиспользуемые поля)
258
+ search.items
259
+ ```
260
+
243
261
  ### Топы
244
- @to-do
245
262
 
263
+ #### Списки лучших
264
+
265
+ _Пока_ реализованны только:
266
+ * `:popular_films`
267
+ * `:best_films`
268
+ * `:await_films`
269
+ * `:popular_people`
270
+
271
+ ```ruby
272
+ top = KpApi::Top.new(:popular_films)
273
+ ```
274
+
275
+ ```ruby
276
+ # Массив топов (ограничение 20)
277
+ top.view
278
+ ```
279
+
280
+ ```ruby
281
+ # Массив хешей топов (рекурсивно идём по пагинации)
282
+ top.view_all(limit=15)
283
+ ```
284
+ ```ruby
285
+ # Массив Integer топа (рекурсивно идём по пагинации)
286
+ top.view_all(limit=15)
287
+ ```
288
+
289
+
290
+ #### Поиск по рейтингу
291
+ @todo
246
292
 
247
293
 
248
294
  ##Благодарность
@@ -0,0 +1,33 @@
1
+ module KpApi
2
+ class LiveSearch < Agent
3
+ attr_accessor :keyword, :url
4
+
5
+ def initialize(keyword)
6
+ @keyword = URI.encode(keyword)
7
+ @url = "#{DOMAINS[:api]}#{METHODS[:search_live][:method]}?#{METHODS[:search_live][:keyword]}=#{@keyword}"
8
+ @json = json
9
+
10
+ unless status
11
+ raise ApiError.new(@json[:message], @json[:data])
12
+ end
13
+ end
14
+
15
+ def found?
16
+ !@json['items'].nil?
17
+ end
18
+
19
+ def items
20
+ if found?
21
+ @json['items'].map{|item|
22
+ if item['type'] == "KPFilmObject"
23
+ film_hash(item, 'id')
24
+ elsif item['type'] == "KPPeopleObject"
25
+ people_hash(item)
26
+ end
27
+ }.compact
28
+ end
29
+ end
30
+
31
+
32
+ end
33
+ end
data/lib/kp_api/top.rb CHANGED
@@ -9,13 +9,13 @@ module KpApi
9
9
  gen_url
10
10
  @json = json
11
11
  @page_count = @json['pagesCount']
12
+ @all = nil
12
13
  else
13
14
  #todo
14
15
  raise ArgumentError
15
16
  end
16
17
  end
17
18
 
18
-
19
19
  def view
20
20
  @json['items'].map do |film|
21
21
  film_hash(film,'id')
@@ -23,23 +23,22 @@ module KpApi
23
23
  end
24
24
 
25
25
  def view_all(limit=15)
26
- all = view
27
- while @page <= limit && next_page
28
- all += @json['items'].map do |film|
29
- film_hash(film,'id')
26
+ if @all.nil?
27
+ all = view
28
+ while @page <= limit && next_page
29
+ all += @json['items'].map do |film|
30
+ film_hash(film,'id')
31
+ end
30
32
  end
33
+ @all = all
34
+ @all
35
+ else
36
+ @all
31
37
  end
32
- all
33
38
  end
34
39
 
35
40
  def ids_all(limit=15)
36
- all = @json['items'].map{|film| film['id']}
37
- while @page <= limit && next_page
38
- all += @json['items'].map do |film|
39
- film['id']
40
- end
41
- end
42
- all
41
+ view_all(limit).map{|film| film[:id]}
43
42
  end
44
43
 
45
44
  private
@@ -1,3 +1,3 @@
1
1
  module KpApi
2
- VERSION = "0.10.0"
2
+ VERSION = "0.10.1"
3
3
  end
data/lib/kp_api.rb CHANGED
@@ -10,15 +10,16 @@ require 'kp_api/film'
10
10
  require 'kp_api/people'
11
11
  require 'kp_api/category'
12
12
  require 'kp_api/today'
13
- require 'kp_api/top'
13
+
14
14
  require 'kp_api/global_search'
15
15
  require 'kp_api/film_search'
16
16
  require 'kp_api/people_search'
17
+ require 'kp_api/live_search'
17
18
 
18
- #require 'kp_api/reviews'
19
- #require 'kp_api/gallery'
20
- #require 'kp_api/similar'
21
-
19
+ require 'kp_api/top'
20
+ ########################################################################################################################
21
+ # #
22
+ ########################################################################################################################
22
23
  require 'kp_api/version'
23
24
 
24
25
  module KpApi
@@ -124,11 +125,16 @@ module KpApi
124
125
  method: 'getKPAllCitiesView'
125
126
  },
126
127
 
127
-
128
128
  search_global: {
129
129
  method: 'getKPGlobalSearch',
130
130
  keyword: 'keyword'
131
131
  },
132
+
133
+ search_live: {
134
+ method: 'getKPLiveSearch',
135
+ keyword: 'keyword'
136
+ },
137
+
132
138
  search_film: {
133
139
  method: 'getKPSearchInFilms',
134
140
  keyword: 'keyword',
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe KpApi::LiveSearch do
4
+ gs1 = KpApi::LiveSearch.new('Бра')
5
+ gs2 = KpApi::LiveSearch.new('олимркмрумщшрушосрволыдсродлрфдлоыврцлдоув') #;)
6
+
7
+ it "Check return LiveSearch not formatted data" do
8
+ expect( gs1.data.class ).to eql(Hash)
9
+ expect( gs1.data['class'] ).to eql("KPLiveSearch")
10
+ expect( gs1.data['items'].class ).to eql(Array)
11
+ expect( gs1.data['items'].count > 0).to eql(true)
12
+
13
+ expect( gs2.data.class ).to eql(Hash)
14
+ expect( gs2.data['class'] ).to eql("KPLiveSearch")
15
+ expect( gs2.data['items'] ).to eql(nil)
16
+ end
17
+
18
+ it "Check return LiveSearch formatted data \"Бра\"" do
19
+ expect( gs1.found? ).to eql(true)
20
+ expect( gs1.items.class ).to eql(Array)
21
+ expect( gs1.items.count > 3 ).to eql(true)
22
+ end
23
+
24
+ it "Check return LiveSearch formatted not found data" do
25
+ expect( gs2.found? ).to eql(false)
26
+ end
27
+
28
+
29
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe KpApi::Top do
4
+ top1 = KpApi::Top.new(:popular_films)
5
+ top2 = KpApi::Top.new(:best_films)
6
+ top3 = KpApi::Top.new(:await_films)
7
+ top4 = KpApi::Top.new(:popular_people)
8
+
9
+
10
+ it "Check return Top not formatted data" do
11
+ expect( top1.data.class ).to eql(Hash)
12
+
13
+ expect( top2.data.class ).to eql(Hash)
14
+
15
+ expect( top3.data.class ).to eql(Hash)
16
+
17
+ expect( top4.data.class ).to eql(Hash)
18
+
19
+ end
20
+
21
+
22
+
23
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kp_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Vildyaev
@@ -119,6 +119,7 @@ files:
119
119
  - lib/kp_api/film.rb
120
120
  - lib/kp_api/film_search.rb
121
121
  - lib/kp_api/global_search.rb
122
+ - lib/kp_api/live_search.rb
122
123
  - lib/kp_api/people.rb
123
124
  - lib/kp_api/people_search.rb
124
125
  - lib/kp_api/today.rb
@@ -128,9 +129,11 @@ files:
128
129
  - spec/kp_api/film_search_spec.rb
129
130
  - spec/kp_api/film_spec.rb
130
131
  - spec/kp_api/global_search_spec.rb
132
+ - spec/kp_api/live_seach_spec.rb
131
133
  - spec/kp_api/people_search_spec.rb
132
134
  - spec/kp_api/people_spec.rb
133
135
  - spec/kp_api/today_spec.rb
136
+ - spec/kp_api/top_spec.rb
134
137
  - spec/spec_helper.rb
135
138
  homepage: https://github.com/groverz/kp_api
136
139
  licenses:
@@ -161,7 +164,9 @@ test_files:
161
164
  - spec/kp_api/film_search_spec.rb
162
165
  - spec/kp_api/film_spec.rb
163
166
  - spec/kp_api/global_search_spec.rb
167
+ - spec/kp_api/live_seach_spec.rb
164
168
  - spec/kp_api/people_search_spec.rb
165
169
  - spec/kp_api/people_spec.rb
166
170
  - spec/kp_api/today_spec.rb
171
+ - spec/kp_api/top_spec.rb
167
172
  - spec/spec_helper.rb