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 +4 -4
- data/README.md +24 -0
- data/lib/sightengine.rb +6 -0
- data/lib/sightengine/api/base.rb +1 -2
- data/lib/sightengine/api/celebrity.rb +9 -0
- data/lib/sightengine/api/face_attributes.rb +2 -11
- data/lib/sightengine/api/feedback.rb +0 -0
- data/lib/sightengine/api/nudity.rb +1 -17
- data/lib/sightengine/api/response.rb +12 -0
- data/lib/sightengine/api/responses/celebrity.rb +21 -0
- data/lib/sightengine/api/responses/face_attributes.rb +19 -0
- data/lib/sightengine/api/responses/nudity.rb +25 -0
- data/lib/sightengine/api/responses/scam.rb +17 -0
- data/lib/sightengine/api/responses/wad.rb +25 -0
- data/lib/sightengine/api/scam.rb +1 -9
- data/lib/sightengine/api/wad.rb +1 -17
- data/lib/sightengine/client.rb +2 -0
- data/lib/sightengine/version.rb +1 -1
- data/sightengine.gemspec +1 -0
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 828d67cc2cf495058fcda68d876bcdaf24bc2880
|
4
|
+
data.tar.gz: 4f8434aa1b2402154e88a9672c237ad874f9ac46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
data/lib/sightengine/api/base.rb
CHANGED
@@ -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
|
@@ -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
|
data/lib/sightengine/api/scam.rb
CHANGED
@@ -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
|
data/lib/sightengine/api/wad.rb
CHANGED
@@ -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
|
data/lib/sightengine/client.rb
CHANGED
@@ -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
|
|
data/lib/sightengine/version.rb
CHANGED
data/sightengine.gemspec
CHANGED
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.
|
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-
|
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
|