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