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 +4 -4
- data/README.md +50 -4
- data/lib/kp_api/live_search.rb +33 -0
- data/lib/kp_api/top.rb +12 -13
- data/lib/kp_api/version.rb +1 -1
- data/lib/kp_api.rb +12 -6
- data/spec/kp_api/live_seach_spec.rb +29 -0
- data/spec/kp_api/top_spec.rb +23 -0
- metadata +6 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50c8c90694366c971f47463ed2c4882b91ca3f6f
|
4
|
+
data.tar.gz: 1e757f1a6d0a2f58558b25e736211f4892ff5d8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 672c8ac47d41aa2bf9167190036337c479edabfb3a1d4f639bf6ab5cb7a6df73f54a767f117f4707f92a0960686198145674942c07316d6de63a4348472ccaf7
|
7
|
+
data.tar.gz: abc70480e11d244db7fa26a330525881af05601b6522b6b50bd657474cc6280250c4cfc0b3c37f2013689346364195e70ba21e0bb524c4603e65c8ba4a27dee1
|
data/README.md
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
# КиноПоиск API (Gem)
|
1
|
+
# КиноПоиск API (Gem)
|
2
|
+
[](https://travis-ci.org/groverz/kp_api)
|
3
|
+
[](https://badge.fury.io/rb/kp_api)
|
4
|
+
[](https://gemnasium.com/github.com/groverz/kp_api)
|
5
|
+
[](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
|
-
|
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
|
27
|
-
|
28
|
-
|
29
|
-
|
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
|
-
|
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
|
data/lib/kp_api/version.rb
CHANGED
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
|
-
|
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
|
-
|
19
|
-
|
20
|
-
#
|
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.
|
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
|