kp_api 0.10.0 → 0.10.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![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
|
-
|
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
|