KinopoiskAPI 0.8.0

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.
@@ -0,0 +1,66 @@
1
+ module KinopoiskAPI
2
+ class Reviews < Agent
3
+ attr_accessor :id, :url
4
+
5
+ def initialize(id)
6
+ @id = id
7
+ @url = "#{DOMAINS[:api]}/#{METHODS[:get_reviews][:method]}?#{METHODS[:get_reviews][:id]}=#{id}"
8
+ @json = json
9
+ end
10
+
11
+ def all
12
+ {
13
+ pages: pages,
14
+ page: page,
15
+ quantity: quantity,
16
+ reviews: reviews
17
+ }
18
+ end
19
+
20
+ def pages
21
+ @json['pagesCount']
22
+ end
23
+
24
+ def page
25
+ @json['page']
26
+ end
27
+
28
+ def quantity
29
+ {
30
+ reviews: @json['reviewAllCount'],
31
+ good_reviews: @json['reviewPositiveCount'],
32
+ good_reviews_in_percent: @json['reviewAllPositiveRatio'],
33
+ bad_reviews: @json['reviewNegativeCount'],
34
+ neutral_reviews: @json['reviewNeutralCount']
35
+ }
36
+ end
37
+
38
+ def reviews
39
+ correctly = []
40
+ json_reviews.each do |item|
41
+ type_array = item['reviewType'].split('_')
42
+ type = type_array.last
43
+ new_item = {
44
+ id: item['reviewID'],
45
+ type: type,
46
+ data: item['reviewData'],
47
+ author: {
48
+ name: item['reviewAutor'],
49
+ avatar: "#{DOMAINS[:kinopoisk][:poster][:gallery]}/#{item['reviewAutorImageURL']}"
50
+ },
51
+ title: item['reviewTitle'],
52
+ description: item['reviewDescription']
53
+ }
54
+ correctly.push(new_item)
55
+ end
56
+ correctly
57
+ end
58
+
59
+ private
60
+
61
+ def json_reviews
62
+ @json['reviews']
63
+ end
64
+
65
+ end
66
+ end
@@ -0,0 +1,42 @@
1
+ module KinopoiskAPI
2
+ class Similar < Agent
3
+ attr_accessor :id, :url
4
+
5
+ def initialize(id)
6
+ @id = id
7
+ @url = "#{DOMAINS[:api]}/#{METHODS[:get_similar][:method]}?#{METHODS[:get_similar][:id]}=#{id}&type=#{METHODS[:get_similar][:type]}"
8
+ @json = json
9
+ end
10
+
11
+ def all
12
+ correctly = []
13
+ json['items'].each do |items|
14
+ items.each do |item|
15
+ rating_array = item['rating'].delete(' ').split('(')
16
+ new_item = {
17
+ title: {
18
+ ru: item['nameRU'],
19
+ en: item['nameEN']
20
+ },
21
+ year: item['year'],
22
+ rating: rating_array.first,
23
+ number_of_rated: rating_array.last.delete(')'),
24
+ poster: "#{DOMAINS[:kinopoisk][:poster][:film]}_#{item['id']}.jpg",
25
+ duration: item['filmLength'],
26
+ countries: item['country'].split(',').map { |country| country.strip },
27
+ genres: item['genre'].split(',').map { |genre| genre.strip }
28
+ }
29
+ correctly.push(new_item)
30
+ end
31
+ end
32
+ correctly
33
+ end
34
+
35
+ private
36
+
37
+ def items
38
+ @json['items']
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,53 @@
1
+ module KinopoiskAPI
2
+ class Staff < Agent
3
+ attr_accessor :id, :url
4
+
5
+ def initialize(id)
6
+ @id = id
7
+ @url = "#{DOMAINS[:api]}/#{METHODS[:get_name][:method]}?#{METHODS[:get_name][:id]}=#{id}"
8
+ @json = json
9
+ end
10
+
11
+ def all
12
+ correctly = {}
13
+ unless creators.nil?
14
+ creators.each do |items|
15
+ new_items = []
16
+ items.each do |item|
17
+ poster = item['posterURL'].present? ? "#{DOMAINS[:kinopoisk][:poster][:name]}_#{item['id']}.jpg" : nil
18
+ new_item = {
19
+ id: item['id'],
20
+ url: "#{DOMAINS[:kinopoisk][:main]}/name/#{item['id']}",
21
+ full_name: {
22
+ ru: item['nameRU'],
23
+ en: item['nameEN']
24
+ },
25
+ poster: poster,
26
+ profession: item['professionText']
27
+ }
28
+ new_items.push(new_item)
29
+ end
30
+ items.each do |item|
31
+ correctly[item['professionKey']] = new_items
32
+ end
33
+ end
34
+ end
35
+ correctly
36
+ end
37
+
38
+ def profession(name)
39
+ all[name]
40
+ end
41
+
42
+ private
43
+
44
+ def creators
45
+ if @json.present?
46
+ @json['creators'].present? ? @json['creators'] : nil
47
+ else
48
+ nil
49
+ end
50
+ end
51
+
52
+ end
53
+ end
@@ -0,0 +1,42 @@
1
+ module KinopoiskAPI
2
+ class TodayFilms < Agent
3
+ attr_accessor :url
4
+
5
+ def initialize
6
+ @url = "#{DOMAINS[:api]}/#{METHODS[:get_today_films][:method]}"
7
+ @json = json
8
+ end
9
+
10
+ def all
11
+ films.map do |film|
12
+ {
13
+ id: film['id'],
14
+ title: {
15
+ :en => film['nameEN'],
16
+ :ru => film['nameRU']
17
+ },
18
+ :premiere => {
19
+ :ru => film['premiereRU']
20
+ },
21
+ poster: "#{DOMAINS[:kinopoisk][:poster][:film]}_#{film['id']}.jpg",
22
+ year: film['year'],
23
+ rating: film['rating'],
24
+ rating_vote_count: film['ratingVoteCount'],
25
+ duration: film['filmLength'],
26
+ countries: s2a(film['country']),
27
+ genres: s2a(film['genre']),
28
+ video: film['videoURL'],
29
+ is_imax: film['isIMAX'],
30
+ is_3d: film['is3D']
31
+ }
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def films
38
+ @json['filmsData']
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,3 @@
1
+ module KinopoiskAPI
2
+ VERSION = '0.8.0'
3
+ end
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: KinopoiskAPI
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
5
+ platform: ruby
6
+ authors:
7
+ - proFox
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-05-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.10'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: 'Gem is based on the API from the author: http://docs.kinopoiskapi.apiary.io'
56
+ email:
57
+ - admin@byprofox.com
58
+ executables:
59
+ - console
60
+ - setup
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - CODE_OF_CONDUCT.md
65
+ - Gemfile
66
+ - KinopoiskAPI.gemspec
67
+ - LICENSE
68
+ - LICENSE.txt
69
+ - README.md
70
+ - Rakefile
71
+ - bin/console
72
+ - bin/setup
73
+ - lib/KinopoiskAPI.rb
74
+ - lib/KinopoiskAPI/agent.rb
75
+ - lib/KinopoiskAPI/film.rb
76
+ - lib/KinopoiskAPI/gallery.rb
77
+ - lib/KinopoiskAPI/genres.rb
78
+ - lib/KinopoiskAPI/global_search.rb
79
+ - lib/KinopoiskAPI/reviews.rb
80
+ - lib/KinopoiskAPI/similar.rb
81
+ - lib/KinopoiskAPI/staff.rb
82
+ - lib/KinopoiskAPI/today_films.rb
83
+ - lib/KinopoiskAPI/version.rb
84
+ homepage: https://github.com/afuno/Kinopoisk-API-Gem/
85
+ licenses:
86
+ - MIT
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project:
104
+ rubygems_version: 2.6.8
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: Gem for operation with Kinopoisk API
108
+ test_files: []