sightengine 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c52700aefc81d507cf3a25c3f9b91bc5c25d472a
4
- data.tar.gz: 1cb342bed62b587449689fe30ecf49e63217dc4b
3
+ metadata.gz: 828d67cc2cf495058fcda68d876bcdaf24bc2880
4
+ data.tar.gz: 4f8434aa1b2402154e88a9672c237ad874f9ac46
5
5
  SHA512:
6
- metadata.gz: dad55c114ea0dccda19f61b7a54d3146212ab76ae84e53030360ef8550531f4e0a57c3d9f614cd210bae458b7335ca71daccac4355dccd8befa2ac6fcd781a0e
7
- data.tar.gz: fa8a5a1c13ed05b52445ef52421307f6c8bdcca2b4d12335c7be01839daad6fae2ac5ac4e5c16af71e91cee1d08e732039637c688b8f0de6da458243014c0206
6
+ metadata.gz: 4ef556ebf8ec0c00cf65f1ad3b384bf34cc2cb48bdfd8c9c4843c30648afbb624e4a40ff49e914f49acde46ad064dd104ac404ca6358db112a1a863ddd266cbe
7
+ data.tar.gz: d8bee6aad4af2e5d97077f45421ee212281aba58b0e114bb7c71c390cd180572d9b537684d4da878f688c1b3978531208b240f40fd9731cc5b7416b1466ab8ad
data/README.md CHANGED
@@ -68,6 +68,30 @@ response = client.scam("https://d3m9459r9kwism.cloudfront.net/img/examples/examp
68
68
  response.scam? # true
69
69
  ```
70
70
 
71
+ ### Celebrities detection
72
+
73
+ ```ruby
74
+ response = client.celebrities("https://sightengine.com/assets/img/examples/example-craig-300.jpg")
75
+
76
+ response.celebrity? # true
77
+ response.celebrities # [{"name"=>"Daniel Craig", "prob"=>0.99}, {"name"=>"Graham Fellows", "prob"=>0.08}, ...]
78
+ ```
79
+
80
+ ### Multi-models check
81
+
82
+ ```ruby
83
+ # Detect nudity, scammers and celebrities in picture
84
+ response = client.check("https://d3m9459r9kwism.cloudfront.net/img/examples/example-scam1-1000.jpg", [
85
+ Sightengine::NUDITY,
86
+ Sightengine::SCAM,
87
+ Sightengine::CELEBRITIES
88
+ ])
89
+
90
+ response.raw_nudity? # false
91
+ response.scam? # true
92
+ response.celebrity? # false
93
+ ```
94
+
71
95
  ## Development
72
96
 
73
97
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/lib/sightengine.rb CHANGED
@@ -3,4 +3,10 @@ require "sightengine/connection"
3
3
  require "sightengine/client"
4
4
 
5
5
  module Sightengine
6
+ NUDITY = "nudity"
7
+ WAD = "wad"
8
+ SCAM = "scam"
9
+ CELEBRITIES = "celebrities"
10
+ FACE_ATTRIBUTES = "face-attributes"
11
+ FACE = "face"
6
12
  end
@@ -2,7 +2,7 @@ module Sightengine
2
2
  module Api
3
3
  module Base
4
4
  def check(image_url, models = [])
5
- do_check(image_url, models)
5
+ Sightengine::Api::Response.new(do_check(image_url, models))
6
6
  end
7
7
 
8
8
  private
@@ -11,7 +11,6 @@ module Sightengine
11
11
  connection.get build_uri('check.json') do |req|
12
12
  req.headers[:content_type] = 'application/json'
13
13
  req.params = default_params.merge({ url: image_url, models: models.join(",") })
14
- p req.params.inspect
15
14
  end.body
16
15
  end
17
16
  end
@@ -0,0 +1,9 @@
1
+ module Sightengine
2
+ module Api
3
+ module Celebrity
4
+ def celebrities(image_url)
5
+ Sightengine::Api::Response.new(do_check(image_url, ["celebrities"]))
6
+ end
7
+ end
8
+ end
9
+ end
@@ -5,6 +5,7 @@ module Sightengine
5
5
  attr_accessor :x1, :y1, :x2, :y2
6
6
  attr_accessor :features
7
7
  attr_accessor :attributes
8
+ attr_accessor :celebrity
8
9
 
9
10
  def initialize(hash)
10
11
  hash.each do |k, v|
@@ -33,18 +34,8 @@ module Sightengine
33
34
  end
34
35
  end
35
36
 
36
- class Response < ::Sightengine::Api::Response
37
- attr_accessor :faces
38
-
39
- def faces
40
- (self.instance_variable_get("@faces") || []).map do |face|
41
- Face.new(face)
42
- end
43
- end
44
- end
45
-
46
37
  def face_attributes(image_url)
47
- Response.new(do_check(image_url, ["face-attributes"]))
38
+ Sightengine::Api::Response.new(do_check(image_url, ["face-attributes"]))
48
39
  end
49
40
  end
50
41
  end
File without changes
@@ -1,24 +1,8 @@
1
1
  module Sightengine
2
2
  module Api
3
3
  module Nudity
4
- class Response < Sightengine::Api::Response
5
- attr_accessor :nudity
6
-
7
- def raw_nudity?(min_prob = 0.9)
8
- nudity["raw"].to_f >= min_prob.to_f
9
- end
10
-
11
- def partial_nudity?(min_prob = 0.9)
12
- nudity["partial"].to_f >= min_prob.to_f
13
- end
14
-
15
- def safe?(min_prob = 0.9)
16
- nudity["safe"].to_f >= min_prob.to_f
17
- end
18
- end
19
-
20
4
  def nudity(image_url)
21
- Response.new(do_check(image_url, ["nudity"]))
5
+ Sightengine::Api::Response.new(do_check(image_url, ["nudity"]))
22
6
  end
23
7
  end
24
8
  end
@@ -1,6 +1,18 @@
1
+ require "sightengine/api/responses/nudity"
2
+ require "sightengine/api/responses/wad"
3
+ require "sightengine/api/responses/scam"
4
+ require "sightengine/api/responses/face_attributes"
5
+ require "sightengine/api/responses/celebrity"
6
+
1
7
  module Sightengine
2
8
  module Api
3
9
  class Response
10
+ include Sightengine::Api::Responses::Nudity
11
+ include Sightengine::Api::Responses::Wad
12
+ include Sightengine::Api::Responses::Scam
13
+ include Sightengine::Api::Responses::FaceAttributes
14
+ include Sightengine::Api::Responses::Celebrity
15
+
4
16
  attr_accessor :status, :request, :media, :error
5
17
 
6
18
  def initialize(hash)
@@ -0,0 +1,21 @@
1
+ module Sightengine
2
+ module Api
3
+ module Responses
4
+ module Celebrity
5
+ def celebrities
6
+ faces.map { |face|
7
+ face["celebrity"] || []
8
+ }.flatten
9
+ end
10
+
11
+ def celebrity?(min_prob = 0.95)
12
+ self.faces.any? { |face|
13
+ face["celebrity"].any? { |c|
14
+ c["prob"] >= min_prob
15
+ }
16
+ }
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ module Sightengine
2
+ module Api
3
+ module Responses
4
+ module FaceAttributes
5
+ def self.included(base)
6
+ base.class_eval do
7
+ attr_accessor :faces
8
+ end
9
+ end
10
+
11
+ def faces
12
+ (self.instance_variable_get("@faces") || []).map do |face|
13
+ Sightengine::Api::FaceAttributes::Face.new(face)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ module Sightengine
2
+ module Api
3
+ module Responses
4
+ module Nudity
5
+ def self.included(base)
6
+ base.class_eval do
7
+ attr_accessor :nudity
8
+ end
9
+ end
10
+
11
+ def raw_nudity?(min_prob = 0.9)
12
+ nudity["raw"].to_f >= min_prob.to_f
13
+ end
14
+
15
+ def partial_nudity?(min_prob = 0.9)
16
+ nudity["partial"].to_f >= min_prob.to_f
17
+ end
18
+
19
+ def safe?(min_prob = 0.9)
20
+ nudity["safe"].to_f >= min_prob.to_f
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ module Sightengine
2
+ module Api
3
+ module Responses
4
+ module Scam
5
+ def self.included(base)
6
+ base.class_eval do
7
+ attr_accessor :faces, :scam
8
+ end
9
+ end
10
+
11
+ def scam?(min_prob = 0.8)
12
+ scam["prob"].to_f > min_prob
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ module Sightengine
2
+ module Api
3
+ module Responses
4
+ module Wad
5
+ def self.included(base)
6
+ base.class_eval do
7
+ attr_accessor :weapon, :drugs, :alcohol
8
+ end
9
+ end
10
+
11
+ def weapon?(min_prob = 0.8)
12
+ weapon.to_f > min_prob
13
+ end
14
+
15
+ def alcohol?(min_prob = 0.8)
16
+ alcohol.to_f > min_prob
17
+ end
18
+
19
+ def drugs?(min_prob = 0.8)
20
+ drugs.to_f > min_prob
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,16 +1,8 @@
1
1
  module Sightengine
2
2
  module Api
3
3
  module Scam
4
- class Response < ::Sightengine::Api::Response
5
- attr_accessor :faces, :scam
6
-
7
- def scam?(min_prob = 0.8)
8
- scam["prob"].to_f > min_prob
9
- end
10
- end
11
-
12
4
  def scam(image_url)
13
- Response.new(do_check(image_url, ["scam"]))
5
+ Sightengine::Api::Response.new(do_check(image_url, ["scam"]))
14
6
  end
15
7
  end
16
8
  end
@@ -1,24 +1,8 @@
1
1
  module Sightengine
2
2
  module Api
3
3
  module Wad
4
- class Response < ::Sightengine::Api::Response
5
- attr_accessor :weapon, :drugs, :alcohol
6
-
7
- def weapon?(min_prob = 0.8)
8
- weapon.to_f > min_prob
9
- end
10
-
11
- def alcohol?(min_prob = 0.8)
12
- alcohol.to_f > min_prob
13
- end
14
-
15
- def drugs?(min_prob = 0.8)
16
- drugs.to_f > min_prob
17
- end
18
- end
19
-
20
4
  def wad(image_url)
21
- Response.new(do_check(image_url, ["wad"]))
5
+ Sightengine::Api::Response.new(do_check(image_url, ["wad"]))
22
6
  end
23
7
  end
24
8
  end
@@ -4,6 +4,7 @@ require "sightengine/api/nudity"
4
4
  require "sightengine/api/wad"
5
5
  require "sightengine/api/face_attributes"
6
6
  require "sightengine/api/scam"
7
+ require "sightengine/api/celebrity"
7
8
 
8
9
  module Sightengine
9
10
  class Client
@@ -13,6 +14,7 @@ module Sightengine
13
14
  include Sightengine::Api::Wad
14
15
  include Sightengine::Api::FaceAttributes
15
16
  include Sightengine::Api::Scam
17
+ include Sightengine::Api::Celebrity
16
18
 
17
19
  BASE_URI = 'https://api.sightengine.com'.freeze
18
20
 
@@ -1,3 +1,3 @@
1
1
  module Sightengine
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/sightengine.gemspec CHANGED
@@ -27,4 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency "bundler", "~> 1.14"
28
28
  spec.add_development_dependency "rake", "~> 10.0"
29
29
  spec.add_development_dependency "rspec", "~> 3.0"
30
+ spec.add_development_dependency "webmock", "~> 3.0"
30
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sightengine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Léonard Hetsch
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-03 00:00:00.000000000 Z
11
+ date: 2017-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: webmock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
83
97
  description: Unofficial wrapper for the Sightengine API which provides image moderation
84
98
  including nudity detection, scammer detection, face attributes, and more.
85
99
  email:
@@ -99,9 +113,16 @@ files:
99
113
  - bin/setup
100
114
  - lib/sightengine.rb
101
115
  - lib/sightengine/api/base.rb
116
+ - lib/sightengine/api/celebrity.rb
102
117
  - lib/sightengine/api/face_attributes.rb
118
+ - lib/sightengine/api/feedback.rb
103
119
  - lib/sightengine/api/nudity.rb
104
120
  - lib/sightengine/api/response.rb
121
+ - lib/sightengine/api/responses/celebrity.rb
122
+ - lib/sightengine/api/responses/face_attributes.rb
123
+ - lib/sightengine/api/responses/nudity.rb
124
+ - lib/sightengine/api/responses/scam.rb
125
+ - lib/sightengine/api/responses/wad.rb
105
126
  - lib/sightengine/api/scam.rb
106
127
  - lib/sightengine/api/wad.rb
107
128
  - lib/sightengine/client.rb