sightengine 0.1.0 → 0.1.1

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
  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