crawler-movie-core 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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