alchemy-api-rb 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +77 -3
- data/.ruby-version +1 -1
- data/.travis.yml +6 -5
- data/CHANGELOG.md +5 -1
- data/README.md +4 -3
- data/Rakefile +1 -2
- data/alchemy-api-rb.gemspec +4 -2
- data/lib/alchemy-api/author_extraction.rb +1 -1
- data/lib/alchemy-api/base.rb +7 -8
- data/lib/alchemy-api/config.rb +2 -2
- data/lib/alchemy-api/emotion_analysis.rb +15 -0
- data/lib/alchemy-api/image_scene_text.rb +19 -0
- data/lib/alchemy-api/text_categorization.rb +1 -1
- data/lib/alchemy-api/text_extraction.rb +1 -1
- data/lib/alchemy-api/title_extraction.rb +1 -1
- data/lib/alchemy-api/version.rb +1 -1
- data/lib/alchemy_api.rb +5 -3
- data/spec/emotion_analysis_spec.rb +47 -0
- data/spec/image_scene_text_spec.rb +45 -0
- data/spec/spec_helper.rb +0 -2
- data/spec/vcr_cassettes/emotion_analysis_call_basic_html_json_search.yml +58 -0
- data/spec/vcr_cassettes/emotion_analysis_call_basic_text_json_search.yml +56 -0
- data/spec/vcr_cassettes/emotion_analysis_call_basic_url_json_search.yml +62 -0
- data/spec/vcr_cassettes/image_scene_text_basic_url_json_search.yml +90 -0
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0a16e75a69158f058748bf8683051976cf2d16152d98fd22b5d89308aec40b5b
|
4
|
+
data.tar.gz: 0f0ca590a560302c6a6b994be02c669bc4af706d62dd9f9474764512578680f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1c067bfaeb3796ec79cf1c885f875f175fe33e3db49d571f1b9c7d34dd8a111d75661a90565db1c60485db03d30b4775d0d439b7a2d183a107b7c336cf25b06
|
7
|
+
data.tar.gz: '0584936bc2802852de9fa1a5715e87846d3383c7f85bf60d2b031b6c85e18f98e747860addf6c35a524027b5a830cd629df0fff6206f5eb096de152de82c2f46'
|
data/.rubocop.yml
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
AllCops:
|
2
|
+
TargetRubyVersion: 2.2
|
2
3
|
Exclude:
|
3
4
|
- alchemy-api-rb.gemspec
|
4
5
|
- vendor/**/*
|
@@ -11,7 +12,80 @@ Encoding:
|
|
11
12
|
# no need to always specify encoding
|
12
13
|
Enabled: false
|
13
14
|
|
14
|
-
|
15
|
-
#
|
16
|
-
|
15
|
+
Style/NumericPredicate:
|
16
|
+
# The following is a false positive for specs:
|
17
|
+
#
|
18
|
+
# "Use be.positive? instead of be > 0."
|
19
|
+
Exclude:
|
20
|
+
- 'spec/**/*'
|
21
|
+
|
22
|
+
Metrics/BlockLength:
|
23
|
+
# Certain DSL use blocks and can be lengthy
|
24
|
+
Exclude:
|
25
|
+
- 'spec/**/*'
|
26
|
+
- 'alchemy-api-rb.gemspec'
|
27
|
+
|
28
|
+
AlignParameters:
|
29
|
+
# allow for multi-line methods to have normal indentation.
|
30
|
+
# for example:
|
31
|
+
#
|
32
|
+
# Person.where(
|
33
|
+
# first_name: 'tom',
|
34
|
+
# last_name: 'foolery'
|
35
|
+
# )
|
36
|
+
EnforcedStyle: with_fixed_indentation
|
37
|
+
|
38
|
+
Layout/AlignParameters:
|
39
|
+
# allow for end of if to be aligned with a variable.
|
40
|
+
# for example:
|
41
|
+
#
|
42
|
+
# foo = if a == b
|
43
|
+
# 'bar'
|
44
|
+
# else
|
45
|
+
# 'baz'
|
46
|
+
# end
|
47
|
+
EnforcedStyle: with_fixed_indentation
|
48
|
+
|
49
|
+
Layout/MultilineMethodCallIndentation:
|
50
|
+
# allow for multi-line method chaining to have normal indentation.
|
51
|
+
# for example:
|
52
|
+
#
|
53
|
+
# Person
|
54
|
+
# .where(first_name: 'tom')
|
55
|
+
# .not(last_name: 'foolery')
|
56
|
+
EnforcedStyle: indented
|
57
|
+
|
58
|
+
Style/RaiseArgs:
|
59
|
+
Enabled: false
|
60
|
+
|
61
|
+
Lint/EndAlignment:
|
62
|
+
EnforcedStyleAlignWith: variable
|
63
|
+
|
64
|
+
ClassAndModuleChildren:
|
65
|
+
# ok to use compact style when modules are predefined.
|
66
|
+
# for example the following is fine so long as we're sure that
|
67
|
+
# module MDB has already been required/defined.
|
68
|
+
#
|
69
|
+
# class MDB::Person; end
|
70
|
+
Enabled: false
|
71
|
+
|
72
|
+
Style/FrozenStringLiteralComment:
|
73
|
+
Enabled: false
|
74
|
+
|
75
|
+
Style/ParallelAssignment:
|
76
|
+
Enabled: false
|
17
77
|
|
78
|
+
Metrics/AbcSize:
|
79
|
+
Enabled: true
|
80
|
+
|
81
|
+
Metrics/MethodLength:
|
82
|
+
Enabled: false
|
83
|
+
|
84
|
+
Style/PercentLiteralDelimiters:
|
85
|
+
PreferredDelimiters:
|
86
|
+
default: ()
|
87
|
+
"%i": ()
|
88
|
+
"%w": ()
|
89
|
+
|
90
|
+
Style/FormatString:
|
91
|
+
Enabled: false
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.2.9
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
* Your contribution here.
|
4
4
|
|
5
|
+
# 0.8.0 (01/24/2018)
|
6
|
+
|
7
|
+
* [#26](https://github.com/technekes/alchemy-api-rb/pull/26): Add support for image scene text extraction endpoint - [@sciamp](https://github.com/sciamp)
|
8
|
+
* [#25](https://github.com/technekes/alchemy-api-rb/pull/25): Add support for emotion analysis endpoint - [@sciamp](https://github.com/sciamp)
|
9
|
+
|
5
10
|
# 0.7.0 (04/22/2016)
|
6
11
|
|
7
12
|
### Changes
|
@@ -49,4 +54,3 @@
|
|
49
54
|
#### Fixes
|
50
55
|
|
51
56
|
* [#9](https://github.com/technekes/alchemy-api-rb/pull/9): Set excon adapter on faraday initialization - [@AdamFerguson](https://github.com/AdamFerguson).
|
52
|
-
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
[![Build Status](https://secure.travis-ci.org/technekes/alchemy-api-rb.png?branch=master)](http://travis-ci.org/technekes/alchemy-api-rb)
|
4
4
|
[![Code Climate](https://codeclimate.com/github/technekes/alchemy-api-rb.png)](https://codeclimate.com/github/technekes/alchemy-api-rb)
|
5
5
|
[![Coverage Status](https://img.shields.io/coveralls/technekes/alchemy-api-rb.svg)](https://coveralls.io/r/technekes/alchemy-api-rb)
|
6
|
-
[![Dependency Status](https://gemnasium.com/
|
6
|
+
[![Dependency Status](https://gemnasium.com/badges/github.com/technekes/alchemy-api-rb.svg)](https://gemnasium.com/github.com/technekes/alchemy-api-rb)
|
7
7
|
[![Gem Version](https://badge.fury.io/rb/alchemy-api-rb.png)](http://badge.fury.io/rb/alchemy-api-rb)
|
8
8
|
|
9
9
|
This is a Ruby Client Library that provides access to the [Alchemy text mining API](http://www.alchemyapi.com/). The current version targets the following API's:
|
@@ -11,8 +11,10 @@ This is a Ruby Client Library that provides access to the [Alchemy text mining A
|
|
11
11
|
* Author Extraction
|
12
12
|
* Combined Call
|
13
13
|
* Concept Tagging
|
14
|
+
* Emotion Analysis
|
14
15
|
* Entity Extraction
|
15
16
|
* Face Detection/Recognition
|
17
|
+
* Image Scene Text Extraction
|
16
18
|
* Image Tagging
|
17
19
|
* Keyword Extraction
|
18
20
|
* Language Detection
|
@@ -107,8 +109,7 @@ If you would like to expirement with the API you can run the `console` rake task
|
|
107
109
|
## TODO
|
108
110
|
|
109
111
|
1. Add missing Alchmey API search modes
|
110
|
-
|
111
|
-
3. Add support for raw output (JSON, XML and RDF)?
|
112
|
+
1. Add support for raw output (JSON, XML and RDF)?
|
112
113
|
|
113
114
|
## Contributing
|
114
115
|
|
data/Rakefile
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
#!/usr/bin/env rake
|
2
1
|
require 'bundler/gem_tasks'
|
3
2
|
require 'rake/testtask'
|
4
3
|
require 'rubocop/rake_task'
|
5
4
|
|
6
5
|
RuboCop::RakeTask.new(:rubocop)
|
7
6
|
|
8
|
-
task default:
|
7
|
+
task default: %i(rubocop test)
|
9
8
|
|
10
9
|
Rake::TestTask.new do |t|
|
11
10
|
t.libs.push 'lib'
|
data/alchemy-api-rb.gemspec
CHANGED
@@ -16,6 +16,8 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.require_paths = ["lib"]
|
17
17
|
gem.version = AlchemyAPI::VERSION
|
18
18
|
|
19
|
+
gem.required_ruby_version = '>= 2.2.9'
|
20
|
+
|
19
21
|
gem.add_dependency 'faraday', '~> 0.9.0'
|
20
22
|
gem.add_dependency 'excon', '~> 0.28'
|
21
23
|
|
@@ -24,7 +26,7 @@ Gem::Specification.new do |gem|
|
|
24
26
|
gem.add_development_dependency 'rake', '~> 10.3.0'
|
25
27
|
gem.add_development_dependency 'minitest-reporters', '~> 1.0.0'
|
26
28
|
gem.add_development_dependency 'vcr', '~> 2.9.2'
|
27
|
-
gem.add_development_dependency 'webmock', '~>
|
29
|
+
gem.add_development_dependency 'webmock', '~> 3.3.0'
|
28
30
|
gem.add_development_dependency 'coveralls', '~> 0.7.0'
|
29
|
-
gem.add_development_dependency 'rubocop', '~> 0.
|
31
|
+
gem.add_development_dependency 'rubocop', '~> 0.52.1'
|
30
32
|
end
|
data/lib/alchemy-api/base.rb
CHANGED
@@ -19,9 +19,8 @@ module AlchemyAPI
|
|
19
19
|
when :json
|
20
20
|
parsed = JSON.parse(@response.body)
|
21
21
|
indexer ? parsed[indexer] : parsed
|
22
|
-
when :xml
|
23
|
-
|
24
|
-
fail NotImplementedError
|
22
|
+
when :rdf, :xml
|
23
|
+
raise NotImplementedError
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
@@ -34,8 +33,8 @@ module AlchemyAPI
|
|
34
33
|
def check_options(opts)
|
35
34
|
@options = opts
|
36
35
|
|
37
|
-
|
38
|
-
|
36
|
+
raise MissingOptionsError unless options && options.keys
|
37
|
+
raise UnsupportedSearchMode unless supported_search_types.include?(mode)
|
39
38
|
end
|
40
39
|
|
41
40
|
def connection
|
@@ -46,15 +45,15 @@ module AlchemyAPI
|
|
46
45
|
end
|
47
46
|
|
48
47
|
def supported_search_types
|
49
|
-
|
48
|
+
%i(text url html)
|
50
49
|
end
|
51
50
|
|
52
51
|
def mode
|
53
|
-
|
52
|
+
%i(text url html).each do |type|
|
54
53
|
return type if options.keys && options.keys.include?(type)
|
55
54
|
end
|
56
55
|
|
57
|
-
|
56
|
+
raise MissingOptionsError
|
58
57
|
end
|
59
58
|
|
60
59
|
def method_prefix
|
data/lib/alchemy-api/config.rb
CHANGED
@@ -6,7 +6,7 @@ module AlchemyAPI
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.add_mode(key, klass)
|
9
|
-
@modes
|
9
|
+
@modes ||= {}
|
10
10
|
|
11
11
|
@modes[key] = klass
|
12
12
|
end
|
@@ -22,7 +22,7 @@ module AlchemyAPI
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def self.output_mode=(value)
|
25
|
-
|
25
|
+
raise InvalidOutputMode unless valid_output_modes.include?(value.to_s)
|
26
26
|
|
27
27
|
@output_mode = value
|
28
28
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module AlchemyAPI
|
2
|
+
class ImageSceneText < Base
|
3
|
+
Config.add_mode :image_scene_text, self
|
4
|
+
|
5
|
+
def web_method
|
6
|
+
"#{method_prefix}GetRankedImageSceneText"
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def supported_search_types
|
12
|
+
[:url]
|
13
|
+
end
|
14
|
+
|
15
|
+
def indexer
|
16
|
+
'sceneTextLines'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/alchemy-api/version.rb
CHANGED
data/lib/alchemy_api.rb
CHANGED
@@ -16,9 +16,11 @@ require 'alchemy-api/author_extraction'
|
|
16
16
|
require 'alchemy-api/taxonomy'
|
17
17
|
require 'alchemy-api/image_tagging'
|
18
18
|
require 'alchemy-api/combined_call'
|
19
|
+
require 'alchemy-api/emotion_analysis'
|
20
|
+
require 'alchemy-api/image_scene_text'
|
19
21
|
|
20
22
|
module AlchemyAPI
|
21
|
-
BASE_URL = 'https://access.alchemyapi.com/calls/'
|
23
|
+
BASE_URL = 'https://access.alchemyapi.com/calls/'.freeze
|
22
24
|
|
23
25
|
def self.config
|
24
26
|
Config
|
@@ -39,8 +41,8 @@ module AlchemyAPI
|
|
39
41
|
def self.search(mode, opts)
|
40
42
|
klass = Config.modes[mode]
|
41
43
|
|
42
|
-
|
43
|
-
|
44
|
+
raise InvalidAPIKey unless Config.apikey
|
45
|
+
raise InvalidSearchMode unless klass
|
44
46
|
|
45
47
|
klass.new.search(opts)
|
46
48
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
2
|
+
|
3
|
+
describe AlchemyAPI, 'emotion_analysis' do
|
4
|
+
before do
|
5
|
+
AlchemyAPI::Config.apikey = API_KEY
|
6
|
+
end
|
7
|
+
|
8
|
+
subject { AlchemyAPI::EmotionAnalysis.new }
|
9
|
+
|
10
|
+
describe '#search' do
|
11
|
+
{
|
12
|
+
text: 'Google is a large company',
|
13
|
+
html: '<html><body>Google is a large company</body></html>',
|
14
|
+
url: 'http://www.alchemy.com'
|
15
|
+
}.each do |type, value|
|
16
|
+
[:json].each do |mode|
|
17
|
+
before do
|
18
|
+
AlchemyAPI::Config.output_mode = mode
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#{type} search with #{mode} results" do
|
22
|
+
it 'returns a hash of results' do
|
23
|
+
cassette_name = "emotion_analysis_call_basic_#{type}_#{mode}_search"
|
24
|
+
VCR.use_cassette(cassette_name) do
|
25
|
+
result = subject.search(type => value)
|
26
|
+
|
27
|
+
result.must_be_instance_of Hash
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'includes the keyword docEmotions' do
|
32
|
+
cassette_name = "emotion_analysis_call_basic_#{type}_#{mode}_search"
|
33
|
+
VCR.use_cassette(cassette_name) do
|
34
|
+
result = subject.search(type => value)
|
35
|
+
|
36
|
+
result['anger'].wont_be_nil
|
37
|
+
result['disgust'].wont_be_nil
|
38
|
+
result['fear'].wont_be_nil
|
39
|
+
result['joy'].wont_be_nil
|
40
|
+
result['sadness'].wont_be_nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
2
|
+
|
3
|
+
describe AlchemyAPI, 'image_scene_text' do
|
4
|
+
before do
|
5
|
+
AlchemyAPI::Config.apikey = API_KEY
|
6
|
+
end
|
7
|
+
|
8
|
+
subject { AlchemyAPI::ImageSceneText.new }
|
9
|
+
|
10
|
+
describe '#search' do
|
11
|
+
{
|
12
|
+
url: 'https://www.scenicwonders.com/wp-content/uploads/2011/03/Yosemite-National-Park-sign-by-Acradenia.jpg'
|
13
|
+
}.each do |type, value|
|
14
|
+
[:json].each do |output_mode|
|
15
|
+
before do
|
16
|
+
AlchemyAPI::Config.output_mode = output_mode
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#{type} search with #{output_mode} results" do
|
20
|
+
it 'returns an array of results' do
|
21
|
+
cassette_name = 'image_scene_text_basic_'\
|
22
|
+
"#{type}_#{output_mode}_search"
|
23
|
+
VCR.use_cassette(cassette_name) do
|
24
|
+
result = subject.search(type => value)
|
25
|
+
|
26
|
+
result.must_be_instance_of Array
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'includes the keyword text, words and confidence' do
|
31
|
+
cassette_name = 'image_scene_text_basic_'\
|
32
|
+
"#{type}_#{output_mode}_search"
|
33
|
+
VCR.use_cassette(cassette_name) do
|
34
|
+
result = subject.search(type => value)[0]
|
35
|
+
|
36
|
+
result['text'].wont_be_nil
|
37
|
+
result['words'].wont_be_nil
|
38
|
+
result['confidence'].wont_be_nil
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -4,10 +4,8 @@ require 'minitest/reporters'
|
|
4
4
|
require 'webmock/minitest'
|
5
5
|
require 'vcr'
|
6
6
|
require 'pry'
|
7
|
-
require 'codeclimate-test-reporter'
|
8
7
|
require 'coveralls'
|
9
8
|
|
10
|
-
CodeClimate::TestReporter.start
|
11
9
|
Coveralls.wear!
|
12
10
|
Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
|
13
11
|
|
@@ -0,0 +1,58 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://access.alchemyapi.com/calls/html/HTMLGetEmotion
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: apikey=ALCHEMY_KEY&html=%3Chtml%3E%3Cbody%3Efoo+bar%3C%2Fbody%3E%3C%2Fhtml%3E&outputMode=json
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.2
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: ''
|
18
|
+
headers:
|
19
|
+
Server:
|
20
|
+
- nginx
|
21
|
+
Date:
|
22
|
+
- Tue, 10 May 2016 08:36:48 GMT
|
23
|
+
Content-Type:
|
24
|
+
- application/json
|
25
|
+
Content-Length:
|
26
|
+
- '449'
|
27
|
+
Connection:
|
28
|
+
- keep-alive
|
29
|
+
Cache-Control:
|
30
|
+
- no-cache
|
31
|
+
X-Alchemyapi-Currentversion:
|
32
|
+
- '12.36'
|
33
|
+
X-Alchemyapi-Html-Content-Size:
|
34
|
+
- '33'
|
35
|
+
X-Alchemyapi-Key:
|
36
|
+
- ALCHEMY_KEY
|
37
|
+
X-Alchemyapi-Params:
|
38
|
+
- sentiment=0&knowledgeGraph=0&detectedLanguage=english&submitLanguage=detect
|
39
|
+
X-Alchemyapi-Status:
|
40
|
+
- OK
|
41
|
+
X-Alchemyapi-Text-Content-Size:
|
42
|
+
- '9'
|
43
|
+
X-Alchemyapi-Total-Emotion-Transactions:
|
44
|
+
- '1'
|
45
|
+
Access-Control-Allow-Origin:
|
46
|
+
- "*"
|
47
|
+
body:
|
48
|
+
encoding: UTF-8
|
49
|
+
string: "{\r\n \"status\": \"OK\",\r\n \"usage\": \"By accessing AlchemyAPI
|
50
|
+
or using information generated by AlchemyAPI, you are agreeing to be bound
|
51
|
+
by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html\",\r\n
|
52
|
+
\ \"totalTransactions\": \"0\",\n \"language\": \"english\",\n \"docEmotions\":
|
53
|
+
{\n \"anger\": \"0.062204\",\n \"disgust\": \"0.199106\",\n
|
54
|
+
\ \"fear\": \"0.349846\",\n \"joy\": \"0.191003\",\n \"sadness\":
|
55
|
+
\"0.134205\"\n }\n}\r\n"
|
56
|
+
http_version:
|
57
|
+
recorded_at: Tue, 10 May 2016 08:36:48 GMT
|
58
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,56 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://access.alchemyapi.com/calls/text/TextGetEmotion
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: apikey=ALCHEMY_KEY&outputMode=json&text=lorem+ipsum
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.2
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: ''
|
18
|
+
headers:
|
19
|
+
Server:
|
20
|
+
- nginx
|
21
|
+
Date:
|
22
|
+
- Tue, 10 May 2016 08:36:55 GMT
|
23
|
+
Content-Type:
|
24
|
+
- application/json
|
25
|
+
Content-Length:
|
26
|
+
- '449'
|
27
|
+
Connection:
|
28
|
+
- keep-alive
|
29
|
+
Cache-Control:
|
30
|
+
- no-cache
|
31
|
+
X-Alchemyapi-Currentversion:
|
32
|
+
- '12.37'
|
33
|
+
X-Alchemyapi-Key:
|
34
|
+
- ALCHEMY_KEY
|
35
|
+
X-Alchemyapi-Params:
|
36
|
+
- sentiment=0&knowledgeGraph=0&detectedLanguage=english&submitLanguage=detect
|
37
|
+
X-Alchemyapi-Status:
|
38
|
+
- OK
|
39
|
+
X-Alchemyapi-Text-Content-Size:
|
40
|
+
- '11'
|
41
|
+
X-Alchemyapi-Total-Emotion-Transactions:
|
42
|
+
- '1'
|
43
|
+
Access-Control-Allow-Origin:
|
44
|
+
- "*"
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: "{\r\n \"status\": \"OK\",\r\n \"usage\": \"By accessing AlchemyAPI
|
48
|
+
or using information generated by AlchemyAPI, you are agreeing to be bound
|
49
|
+
by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html\",\r\n
|
50
|
+
\ \"totalTransactions\": \"0\",\n \"language\": \"english\",\n \"docEmotions\":
|
51
|
+
{\n \"anger\": \"0.112686\",\n \"disgust\": \"0.186012\",\n
|
52
|
+
\ \"fear\": \"0.188489\",\n \"joy\": \"0.444334\",\n \"sadness\":
|
53
|
+
\"0.215615\"\n }\n}\r\n"
|
54
|
+
http_version:
|
55
|
+
recorded_at: Tue, 10 May 2016 08:36:55 GMT
|
56
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,62 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://access.alchemyapi.com/calls/url/URLGetEmotion
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: apikey=ALCHEMY_KEY&outputMode=json&url=http%3A%2F%2Fwww.google.com
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.2
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: ''
|
18
|
+
headers:
|
19
|
+
Server:
|
20
|
+
- nginx
|
21
|
+
Date:
|
22
|
+
- Tue, 10 May 2016 08:36:53 GMT
|
23
|
+
Content-Type:
|
24
|
+
- application/json
|
25
|
+
Content-Length:
|
26
|
+
- '485'
|
27
|
+
Connection:
|
28
|
+
- keep-alive
|
29
|
+
Cache-Control:
|
30
|
+
- no-cache
|
31
|
+
X-Alchemyapi-Currentversion:
|
32
|
+
- '12.36'
|
33
|
+
X-Alchemyapi-Key:
|
34
|
+
- ALCHEMY_KEY
|
35
|
+
X-Alchemyapi-Params:
|
36
|
+
- sentiment=0&knowledgeGraph=0&detectedLanguage=english&submitLanguage=detect
|
37
|
+
X-Alchemyapi-Raw-Content-Size:
|
38
|
+
- '45721'
|
39
|
+
X-Alchemyapi-Requested-Url:
|
40
|
+
- http://www.google.com
|
41
|
+
X-Alchemyapi-Retrieved-Url:
|
42
|
+
- http://www.google.com/
|
43
|
+
X-Alchemyapi-Status:
|
44
|
+
- OK
|
45
|
+
X-Alchemyapi-Text-Content-Size:
|
46
|
+
- '435'
|
47
|
+
X-Alchemyapi-Total-Emotion-Transactions:
|
48
|
+
- '1'
|
49
|
+
Access-Control-Allow-Origin:
|
50
|
+
- "*"
|
51
|
+
body:
|
52
|
+
encoding: UTF-8
|
53
|
+
string: "{\r\n \"status\": \"OK\",\r\n \"usage\": \"By accessing AlchemyAPI
|
54
|
+
or using information generated by AlchemyAPI, you are agreeing to be bound
|
55
|
+
by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html\",\r\n
|
56
|
+
\ \"url\": \"http://www.google.com/\",\n \"totalTransactions\": \"0\",\n
|
57
|
+
\ \"language\": \"english\",\n \"docEmotions\": {\n \"anger\":
|
58
|
+
\"0.031833\",\n \"disgust\": \"0.140543\",\n \"fear\": \"0.106253\",\n
|
59
|
+
\ \"joy\": \"0.50064\",\n \"sadness\": \"0.040764\"\n }\n}\r\n"
|
60
|
+
http_version:
|
61
|
+
recorded_at: Tue, 10 May 2016 08:36:53 GMT
|
62
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,90 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://access.alchemyapi.com/calls/url/URLGetRankedImageSceneText
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: apikey=ALCHEMY_KEY&outputMode=json&url=https%3A%2F%2Fwww.scenicwonders.com%2Fwp-content%2Fuploads%2F2011%2F03%2FYosemite-National-Park-sign-by-Acradenia.jpg
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.2
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: ''
|
18
|
+
headers:
|
19
|
+
Server:
|
20
|
+
- nginx
|
21
|
+
Date:
|
22
|
+
- Tue, 10 May 2016 10:28:20 GMT
|
23
|
+
Content-Type:
|
24
|
+
- application/json
|
25
|
+
Content-Length:
|
26
|
+
- '2780'
|
27
|
+
Connection:
|
28
|
+
- keep-alive
|
29
|
+
Cache-Control:
|
30
|
+
- no-cache
|
31
|
+
X-Alchemyapi-Currentversion:
|
32
|
+
- '12.37'
|
33
|
+
X-Alchemyapi-Key:
|
34
|
+
- ALCHEMY_KEY
|
35
|
+
X-Alchemyapi-Params:
|
36
|
+
- sentiment=0&knowledgeGraph=0&detectedLanguage=unknown
|
37
|
+
X-Alchemyapi-Raw-Content-Size:
|
38
|
+
- '517691'
|
39
|
+
X-Alchemyapi-Requested-Url:
|
40
|
+
- https://www.scenicwonders.com/wp-content/uploads/2011/03/Yosemite-National-Park-sign-by-Acradenia.jpg
|
41
|
+
X-Alchemyapi-Retrieved-Url:
|
42
|
+
- https://www.scenicwonders.com/wp-content/uploads/2011/03/Yosemite-National-Park-sign-by-Acradenia.jpg
|
43
|
+
X-Alchemyapi-Status:
|
44
|
+
- OK
|
45
|
+
X-Alchemyapi-Total-Scene-Text-Transactions:
|
46
|
+
- '4'
|
47
|
+
Access-Control-Allow-Origin:
|
48
|
+
- "*"
|
49
|
+
body:
|
50
|
+
encoding: UTF-8
|
51
|
+
string: "{\r\n \"status\": \"OK\",\r\n \"usage\": \"By accessing AlchemyAPI
|
52
|
+
or using information generated by AlchemyAPI, you are agreeing to be bound
|
53
|
+
by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html\",\r\n
|
54
|
+
\ \"url\": \"https://www.scenicwonders.com/wp-content/uploads/2011/03/Yosemite-National-Park-sign-by-Acradenia.jpg\",\n
|
55
|
+
\ \"totalTransactions\": \"0\",\n \"sceneText\": \"yosemite\\nnational\\npark\\nw\",\n
|
56
|
+
\ \"sceneTextLines\": [\n {\n \"confidence\": 0.990553,\n
|
57
|
+
\ \"region\": {\n \"height\": 60,\n \"width\":
|
58
|
+
224,\n \"x\": 607,\n \"y\": 289\n },\n
|
59
|
+
\ \"text\": \"yosemite\",\n \"words\": [\n {\n
|
60
|
+
\ \"confidence\": 0.990553,\n \"region\":
|
61
|
+
{\n \"height\": 60,\n \"width\":
|
62
|
+
224,\n \"x\": 607,\n \"y\":
|
63
|
+
289\n },\n \"text\": \"yosemite\"\n
|
64
|
+
\ }\n ]\n },\n {\n \"confidence\":
|
65
|
+
0.990283,\n \"region\": {\n \"height\": 61,\n \"width\":
|
66
|
+
224,\n \"x\": 607,\n \"y\": 349\n },\n
|
67
|
+
\ \"text\": \"national\",\n \"words\": [\n {\n
|
68
|
+
\ \"confidence\": 0.990283,\n \"region\":
|
69
|
+
{\n \"height\": 61,\n \"width\":
|
70
|
+
224,\n \"x\": 607,\n \"y\":
|
71
|
+
349\n },\n \"text\": \"national\"\n
|
72
|
+
\ }\n ]\n },\n {\n \"confidence\":
|
73
|
+
0.990963,\n \"region\": {\n \"height\": 50,\n \"width\":
|
74
|
+
131,\n \"x\": 659,\n \"y\": 425\n },\n
|
75
|
+
\ \"text\": \"park\",\n \"words\": [\n {\n
|
76
|
+
\ \"confidence\": 0.990963,\n \"region\":
|
77
|
+
{\n \"height\": 50,\n \"width\":
|
78
|
+
131,\n \"x\": 659,\n \"y\":
|
79
|
+
425\n },\n \"text\": \"park\"\n }\n
|
80
|
+
\ ]\n },\n {\n \"confidence\": 0,\n \"region\":
|
81
|
+
{\n \"height\": 17,\n \"width\": 34,\n \"x\":
|
82
|
+
326,\n \"y\": 8\n },\n \"text\": \"w\",\n
|
83
|
+
\ \"words\": [\n {\n \"confidence\":
|
84
|
+
0.511145,\n \"region\": {\n \"height\":
|
85
|
+
17,\n \"width\": 34,\n \"x\":
|
86
|
+
326,\n \"y\": 8\n },\n \"text\":
|
87
|
+
\"w\"\n }\n ]\n }\n ]\n}\r\n"
|
88
|
+
http_version:
|
89
|
+
recorded_at: Tue, 10 May 2016 10:28:20 GMT
|
90
|
+
recorded_with: VCR 2.9.3
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alchemy-api-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Allen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 3.3.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 3.3.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: coveralls
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +142,14 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.
|
145
|
+
version: 0.52.1
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 0.
|
152
|
+
version: 0.52.1
|
153
153
|
description: Provides access to the Alchemy text mining API - http://www.alchemyapi.com/
|
154
154
|
email:
|
155
155
|
- john.allen@technekes.com
|
@@ -174,8 +174,10 @@ files:
|
|
174
174
|
- lib/alchemy-api/combined_call.rb
|
175
175
|
- lib/alchemy-api/concept_tagging.rb
|
176
176
|
- lib/alchemy-api/config.rb
|
177
|
+
- lib/alchemy-api/emotion_analysis.rb
|
177
178
|
- lib/alchemy-api/entity_extraction.rb
|
178
179
|
- lib/alchemy-api/face_detection.rb
|
180
|
+
- lib/alchemy-api/image_scene_text.rb
|
179
181
|
- lib/alchemy-api/image_tagging.rb
|
180
182
|
- lib/alchemy-api/keyword_extraction.rb
|
181
183
|
- lib/alchemy-api/language_detection.rb
|
@@ -193,8 +195,10 @@ files:
|
|
193
195
|
- spec/base_spec.rb
|
194
196
|
- spec/combined_call_spec.rb
|
195
197
|
- spec/concept_tagging_spec.rb
|
198
|
+
- spec/emotion_analysis_spec.rb
|
196
199
|
- spec/entity_extraction_spec.rb
|
197
200
|
- spec/face_detection_spec.rb
|
201
|
+
- spec/image_scene_text_spec.rb
|
198
202
|
- spec/image_tagging_spec.rb
|
199
203
|
- spec/keyword_extraction_spec.rb
|
200
204
|
- spec/language_detection_spec.rb
|
@@ -214,10 +218,14 @@ files:
|
|
214
218
|
- spec/vcr_cassettes/concept_basic_html_json_search.yml
|
215
219
|
- spec/vcr_cassettes/concept_basic_text_json_search.yml
|
216
220
|
- spec/vcr_cassettes/concept_basic_url_json_search.yml
|
221
|
+
- spec/vcr_cassettes/emotion_analysis_call_basic_html_json_search.yml
|
222
|
+
- spec/vcr_cassettes/emotion_analysis_call_basic_text_json_search.yml
|
223
|
+
- spec/vcr_cassettes/emotion_analysis_call_basic_url_json_search.yml
|
217
224
|
- spec/vcr_cassettes/entity_basic_html_json_search.yml
|
218
225
|
- spec/vcr_cassettes/entity_basic_text_json_search.yml
|
219
226
|
- spec/vcr_cassettes/entity_basic_url_json_search.yml
|
220
227
|
- spec/vcr_cassettes/face_detection_basic_url_json_search.yml
|
228
|
+
- spec/vcr_cassettes/image_scene_text_basic_url_json_search.yml
|
221
229
|
- spec/vcr_cassettes/image_tagging_basic_url_json_search.yml
|
222
230
|
- spec/vcr_cassettes/keyword_basic_html_json_search.yml
|
223
231
|
- spec/vcr_cassettes/keyword_basic_text_json_search.yml
|
@@ -248,7 +256,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
248
256
|
requirements:
|
249
257
|
- - ">="
|
250
258
|
- !ruby/object:Gem::Version
|
251
|
-
version:
|
259
|
+
version: 2.2.9
|
252
260
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
253
261
|
requirements:
|
254
262
|
- - ">="
|
@@ -256,7 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
256
264
|
version: '0'
|
257
265
|
requirements: []
|
258
266
|
rubyforge_project:
|
259
|
-
rubygems_version: 2.
|
267
|
+
rubygems_version: 2.7.4
|
260
268
|
signing_key:
|
261
269
|
specification_version: 4
|
262
270
|
summary: This is a ruby client library that provides access to the Alechemy text mining
|
@@ -268,8 +276,10 @@ test_files:
|
|
268
276
|
- spec/base_spec.rb
|
269
277
|
- spec/combined_call_spec.rb
|
270
278
|
- spec/concept_tagging_spec.rb
|
279
|
+
- spec/emotion_analysis_spec.rb
|
271
280
|
- spec/entity_extraction_spec.rb
|
272
281
|
- spec/face_detection_spec.rb
|
282
|
+
- spec/image_scene_text_spec.rb
|
273
283
|
- spec/image_tagging_spec.rb
|
274
284
|
- spec/keyword_extraction_spec.rb
|
275
285
|
- spec/language_detection_spec.rb
|
@@ -289,10 +299,14 @@ test_files:
|
|
289
299
|
- spec/vcr_cassettes/concept_basic_html_json_search.yml
|
290
300
|
- spec/vcr_cassettes/concept_basic_text_json_search.yml
|
291
301
|
- spec/vcr_cassettes/concept_basic_url_json_search.yml
|
302
|
+
- spec/vcr_cassettes/emotion_analysis_call_basic_html_json_search.yml
|
303
|
+
- spec/vcr_cassettes/emotion_analysis_call_basic_text_json_search.yml
|
304
|
+
- spec/vcr_cassettes/emotion_analysis_call_basic_url_json_search.yml
|
292
305
|
- spec/vcr_cassettes/entity_basic_html_json_search.yml
|
293
306
|
- spec/vcr_cassettes/entity_basic_text_json_search.yml
|
294
307
|
- spec/vcr_cassettes/entity_basic_url_json_search.yml
|
295
308
|
- spec/vcr_cassettes/face_detection_basic_url_json_search.yml
|
309
|
+
- spec/vcr_cassettes/image_scene_text_basic_url_json_search.yml
|
296
310
|
- spec/vcr_cassettes/image_tagging_basic_url_json_search.yml
|
297
311
|
- spec/vcr_cassettes/keyword_basic_html_json_search.yml
|
298
312
|
- spec/vcr_cassettes/keyword_basic_text_json_search.yml
|