crawler-movie-core 1.0.0 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a72036ce835643633d79c8d7d35e0b30caa086b9dec05cbf3f028d21911aad1
4
- data.tar.gz: f621b1d9562bbf9eb6f56ae037e452ac966309d1e432e9fdef31b2265541cc92
3
+ metadata.gz: c09660f760f7aad4dd88b7b73d8580b9760a28b2339240c0e153e11e6a6619c9
4
+ data.tar.gz: c569adae99e851476dc3acc569cc0edfca62c226724d99993e5791112da62a75
5
5
  SHA512:
6
- metadata.gz: e8972f89f805de8c1f5015ad74b926ed2580b4b828d3b72facd920d75876ccef29c107cb5a033fadce78d89e72f0ecb06828de7614c2b3242ea29e3a6e4acdec
7
- data.tar.gz: deeff50be8e1546d17f811511203bd1f61f2637215390864749fc07e83ff58834cad6a4b9becc26953091df6687d40676c646a34b9b5fca539075ef385e99cd5
6
+ metadata.gz: 40dda74a2f4e84f4ccda4a1fca6fda3890c580a80a83af0fb50624c4dfe766ec75dbca6be4995cbdc1f2a3d3620276e8ab3db623bdcf9c35519685d0c218a96a
7
+ data.tar.gz: 285870055ab6182b48ff2412dae6b6b0bdd7c3fec2d8ccbc5af983df880f7ff302ab8eb1fe5a85facea024a92cae1e1972d1e44c2bd8efd40d6843bc8fef51b3
@@ -30,4 +30,5 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'rake', '~> 10.0'
31
31
  spec.add_runtime_dependency 'activesupport', '>= 3.0'
32
32
  spec.add_runtime_dependency 'levenshtein-ffi', '>= 1.0'
33
+ spec.add_runtime_dependency 'crawler-core', '>= 0.2'
33
34
  end
@@ -1,9 +1,12 @@
1
1
  require 'active_support/core_ext/hash/keys'
2
2
  require 'active_support/inflector'
3
- require 'levenshtein-ffi'
3
+ require 'crawler/base'
4
+ require 'crawler/utils'
4
5
 
5
6
  module Crawler
6
7
  module Movie
8
+ include Base
9
+
7
10
  PROVIDERS = []
8
11
  SCORES = {}
9
12
 
@@ -17,27 +20,15 @@ module Crawler
17
20
  end
18
21
  end
19
22
 
20
- def self.configure
21
- yield self
22
- end
23
-
24
- def self.transliterate(string)
25
- ActiveSupport::Inflector.transliterate(string.gsub(/[:\-.,!?]/, ' ').strip.gsub(/\s+/, ' ')).downcase
26
- end
27
-
28
23
  def self.search(query, year: nil)
29
24
  movies = PROVIDERS.flat_map do |provider_name|
30
25
  camelized = ActiveSupport::Inflector.camelize("crawler/movie/providers/#{provider_name.to_s}")
31
26
  klass = ActiveSupport::Inflector.constantize(camelized)
32
- movies = klass.search(transliterate(query))
27
+ movies = klass.search(Utils.transliterate(query))
33
28
 
34
29
  movies.map do |movie|
35
30
  provider_score = SCORES[provider_name] || 0.5
36
- query_transliterated = transliterate(query)
37
- title_transliterated = transliterate(movie[:title])
38
- levenshtein_distance = Levenshtein.distance(query_transliterated, title_transliterated)
39
- max_size = [query_transliterated.size, title_transliterated.size].max.to_f
40
- title_score = (max_size - levenshtein_distance) / max_size
31
+ title_score = Utils.levenshtein_score(query, movie[:title])
41
32
  year_score = 1.0 unless year
42
33
  year_score ||= movie[:release_date] && year.to_s == movie[:release_date].year.to_s ? 1.0 : 0.9
43
34
 
@@ -49,7 +40,7 @@ module Crawler
49
40
  end
50
41
 
51
42
  movies.group_by do |movie|
52
- [transliterate(movie[:data][:title]), movie[:data][:release_date] && movie[:data][:release_date].year]
43
+ [Utils.transliterate(movie[:data][:title]), movie[:data][:release_date] && movie[:data][:release_date].year]
53
44
  end
54
45
  end
55
46
 
@@ -1,7 +1,7 @@
1
1
  module Crawler
2
2
  module Movie
3
3
  module Core
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crawler-movie-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan PHILIPPE
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: crawler-core
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0.2'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0.2'
69
83
  description: ''
70
84
  email:
71
85
  - jonathan@cinema.paris