data_science_theater_3000 0.0.5 → 0.0.6
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.
- data/README.md +10 -0
- data/lib/data_science_theater_3000.rb +17 -6
- data/lib/data_science_theater_3000/version.rb +1 -1
- metadata +8 -8
data/README.md
CHANGED
@@ -13,6 +13,16 @@
|
|
13
13
|
|
14
14
|
#### Just ...
|
15
15
|
require "data_science_theater_3000"
|
16
|
+
|
17
|
+
DataScienceTheater3000.ip2coordinates(ip_string)
|
18
|
+
DataScienceTheater3000.file2text(path_to_file) # local files only right now
|
19
|
+
DataScienceTheater3000.coordinates2politics(lat_long_string)
|
20
|
+
DataScienceTheater3000.street2coordinates(address_string)
|
21
|
+
|
22
|
+
Or
|
23
|
+
dst3k = DataScienceTheater3000
|
24
|
+
dst3k.coordinates2politics( dst3k.ip2coordinates(ip_string) )
|
25
|
+
dst3k.coordinates2politics( dst3k.street2coordinates(address_string) )
|
16
26
|
|
17
27
|
## Contributing
|
18
28
|
|
@@ -7,18 +7,23 @@ module DataScienceTheater3000
|
|
7
7
|
# Converts an ip address into a location hash
|
8
8
|
#
|
9
9
|
# @param [String] ip the ip address to be located
|
10
|
-
# @return [Hash]
|
10
|
+
# @return [Hash] hash of location information. Can be passed as input to coordinates2politics
|
11
11
|
def self.ip2coordinates ip
|
12
12
|
url = "http://www.datasciencetoolkit.org"
|
13
13
|
response = Curl::Easy.perform( url + "/ip2coordinates/" + ip ).body_str
|
14
14
|
|
15
15
|
coordinates = make_hashy(response)
|
16
|
+
# Account for satellite provider or anonymous proxy
|
17
|
+
if coordinates.invert.keys.include?(nil)
|
18
|
+
coordinates[ip] = { :longitude => "unknown", :latitude => "unknown", :country => "unknown", :region => "unknown", :postal_code => "unknown" }
|
19
|
+
end
|
20
|
+
coordinates
|
16
21
|
end
|
17
22
|
|
18
23
|
# Converts a street address into a location hash
|
19
24
|
#
|
20
25
|
# @param [String] address the address to be located
|
21
|
-
# @return [Hash]
|
26
|
+
# @return [Hash] hash of location information. Can be passed as input to coordinates2politics
|
22
27
|
def self.street2coordinates address
|
23
28
|
url = "http://www.datasciencetoolkit.org"
|
24
29
|
address.gsub!( "," , "%2c" )
|
@@ -31,9 +36,13 @@ module DataScienceTheater3000
|
|
31
36
|
# Uses latitude,longitude pair to find detailed political information about a location.
|
32
37
|
# Currently supporting a single pair.
|
33
38
|
#
|
34
|
-
# @param [String] "
|
35
|
-
# @return [Array]
|
36
|
-
def self.coordinates2politics coords
|
39
|
+
# @param [String,Hash] coords "lat,long" or the hash returned from ip2coordinates/street2coordinates
|
40
|
+
# @return [Array] contains hashes with detailed political information for a location
|
41
|
+
def self.coordinates2politics coords
|
42
|
+
if coords.class == Hash
|
43
|
+
coords = coords.keys.map{|k| "#{coords[k]["latitude"]},#{coords[k]["longitude"]}"}.first
|
44
|
+
end
|
45
|
+
|
37
46
|
url = "http://www.datasciencetoolkit.org"
|
38
47
|
coords.gsub!( "," , "%2c" )
|
39
48
|
response = Curl::Easy.perform( url + "/coordinates2politics/" + coords ).body_str
|
@@ -64,6 +73,9 @@ module DataScienceTheater3000
|
|
64
73
|
# @param [String] file_path
|
65
74
|
# @return [String] text discerned from image
|
66
75
|
def self.file2text file_path
|
76
|
+
file_reg = /([^\s]+(\.(?i)(jpg|png|gif|bmp))$)/
|
77
|
+
raise "Does not look like path to a file: #{file_path}" if !file_reg.match(file_path)
|
78
|
+
raise "Support paths to images hosted remotely soon" if file_path.include?('http:')
|
67
79
|
url = "http://www.datasciencetoolkit.org"
|
68
80
|
c = Curl::Easy.new( url + '/file2text')
|
69
81
|
c.multipart_form_post = true
|
@@ -72,7 +84,6 @@ module DataScienceTheater3000
|
|
72
84
|
response = c.body_str
|
73
85
|
end
|
74
86
|
|
75
|
-
|
76
87
|
def self.make_hashy response
|
77
88
|
ActiveSupport::JSON.decode(response)
|
78
89
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_science_theater_3000
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-22 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: active_support
|
16
|
-
requirement: &
|
16
|
+
requirement: &13277320 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *13277320
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: curb
|
27
|
-
requirement: &
|
27
|
+
requirement: &13276660 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *13276660
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: json
|
38
|
-
requirement: &
|
38
|
+
requirement: &13275860 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *13275860
|
47
47
|
description: Ruby interface to issue Data Science Toolkit API calls.
|
48
48
|
email:
|
49
49
|
- tad@isotope11.com
|