twitter_images 0.0.3 → 0.0.4
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/bin/twitter_images +1 -3
- data/lib/twitter_images.rb +2 -1
- data/lib/twitter_images/cli.rb +3 -5
- data/lib/twitter_images/configuration.rb +11 -73
- data/lib/twitter_images/downloader.rb +11 -13
- data/lib/twitter_images/requester.rb +61 -0
- data/lib/twitter_images/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa9d6738e520524fa87bebe3509598b51ff6b61c
|
4
|
+
data.tar.gz: d7021a59087e612655ec50a740ac3d02a559f94f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 131398180fdb31450b64b8c1303637ed67b8190272d5e86206458a594c7c5b8222841190d26f0c87412ec8ccb3bcff2b635a48a15b8d10ee9c7ea39d261fd705
|
7
|
+
data.tar.gz: 552d52a07c0525ae55a54777785383c0823823cf21455f9090d0f16f2e3a1d9b0938b1b19b709355527bb20e1c1d06450c101fb964d0872394066d1a2fd7bf86
|
data/bin/twitter_images
CHANGED
@@ -3,6 +3,4 @@
|
|
3
3
|
$LOAD_PATH.unshift(File.expand_path("../lib", __FILE__))
|
4
4
|
require "twitter_images"
|
5
5
|
|
6
|
-
|
7
|
-
downloader = TwitterImages::Downloader.new(configuration)
|
8
|
-
TwitterImages::CLI.new(configuration, downloader).run
|
6
|
+
TwitterImages::CLI.new.run
|
data/lib/twitter_images.rb
CHANGED
@@ -5,7 +5,8 @@ require "json"
|
|
5
5
|
require "oauth"
|
6
6
|
require "ruby-progressbar"
|
7
7
|
|
8
|
+
require "twitter_images/cli"
|
8
9
|
require "twitter_images/configuration"
|
10
|
+
require "twitter_images/requester"
|
9
11
|
require "twitter_images/downloader"
|
10
|
-
require "twitter_images/cli"
|
11
12
|
require "twitter_images/version"
|
data/lib/twitter_images/cli.rb
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
module TwitterImages
|
2
2
|
class CLI
|
3
|
-
attr_accessor :
|
3
|
+
attr_accessor :configuration
|
4
4
|
|
5
|
-
def initialize(
|
6
|
-
@configuration =
|
7
|
-
@downloader = downloader
|
5
|
+
def initialize()
|
6
|
+
@configuration = Configuration.new
|
8
7
|
end
|
9
8
|
|
10
9
|
def run
|
11
10
|
configuration.prepare
|
12
|
-
downloader.download
|
13
11
|
end
|
14
12
|
end
|
15
13
|
end
|
@@ -1,90 +1,28 @@
|
|
1
1
|
module TwitterImages
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :search, :directory
|
4
|
-
:address, :request, :http, :response
|
5
|
-
|
6
|
-
def initialize()
|
7
|
-
@search = search
|
8
|
-
@directory = directory
|
9
|
-
@output = output
|
10
|
-
@consumer_key = consumer_key
|
11
|
-
@access_token = access_token
|
12
|
-
@address = address
|
13
|
-
@request = request
|
14
|
-
@http = http
|
15
|
-
@response = response
|
16
|
-
end
|
3
|
+
attr_accessor :search, :directory
|
17
4
|
|
18
5
|
def prepare
|
19
|
-
|
20
|
-
get_directory
|
21
|
-
change_directory
|
6
|
+
set_directory
|
22
7
|
get_search
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
def establish_connection
|
27
|
-
setup_address
|
28
|
-
setup_http
|
29
|
-
build_request
|
30
|
-
issue_request
|
31
|
-
get_output
|
8
|
+
Requester.new(@search).start
|
32
9
|
end
|
33
10
|
|
34
11
|
private
|
35
12
|
|
36
|
-
def
|
37
|
-
|
38
|
-
@
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
def check_env
|
43
|
-
if ENV.key?("CONSUMER_KEY") &&
|
44
|
-
ENV.key?("CONSUMER_SECRET") &&
|
45
|
-
ENV.key?("ACCESS_TOKEN") &&
|
46
|
-
ENV.key?("ACCESS_SECRET")
|
47
|
-
return true
|
48
|
-
else
|
49
|
-
return "The credentials have not been correctly set up in your ENV"
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def setup_http
|
54
|
-
# Set up Net::HTTP to use SSL, which is required by Twitter.
|
55
|
-
@http = Net::HTTP.new(address.host, address.port)
|
56
|
-
http.use_ssl = true
|
57
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
58
|
-
end
|
59
|
-
|
60
|
-
def build_request
|
61
|
-
# Build the request and authorize it with OAuth.
|
62
|
-
@request = Net::HTTP::Get.new(address.request_uri)
|
63
|
-
request.oauth!(http, consumer_key, access_token)
|
64
|
-
end
|
65
|
-
|
66
|
-
def issue_request
|
67
|
-
# Issue the request and return the response.
|
68
|
-
http.start
|
69
|
-
@response = http.request(request)
|
70
|
-
end
|
71
|
-
|
72
|
-
def get_output
|
73
|
-
@output = JSON.parse(response.body)
|
74
|
-
end
|
75
|
-
|
76
|
-
def setup_address
|
77
|
-
@address = URI("https://api.twitter.com/1.1/search/tweets.json?q=%23#{search}&mode=photos&count=100")
|
13
|
+
def set_directory
|
14
|
+
puts "Please enter the directory to save the images in: "
|
15
|
+
@directory = gets.chomp
|
16
|
+
raise StandardError, "Directory doesn't exist" unless directory_exists?
|
17
|
+
change_directory
|
78
18
|
end
|
79
19
|
|
80
|
-
def
|
81
|
-
|
82
|
-
@directory = gets.chomp
|
83
|
-
raise StandardError, "Directory doesn't exist" unless Dir.exists?(@directory)
|
20
|
+
def directory_exists?
|
21
|
+
Dir.exist?(File.expand_path(@directory))
|
84
22
|
end
|
85
23
|
|
86
24
|
def change_directory
|
87
|
-
Dir.chdir(@directory)
|
25
|
+
Dir.chdir(File.expand_path(@directory))
|
88
26
|
end
|
89
27
|
|
90
28
|
def get_search
|
@@ -1,34 +1,32 @@
|
|
1
1
|
module TwitterImages
|
2
2
|
class Downloader
|
3
|
-
attr_accessor :images
|
4
|
-
attr_reader :configuration
|
3
|
+
attr_accessor :response, :output, :images
|
5
4
|
|
6
|
-
def initialize(
|
7
|
-
@
|
8
|
-
@configuration = configuration
|
5
|
+
def initialize(response)
|
6
|
+
@response = response
|
9
7
|
end
|
10
8
|
|
11
9
|
def download
|
12
|
-
|
10
|
+
get_output
|
11
|
+
parse_output
|
13
12
|
save_images
|
14
13
|
end
|
15
14
|
|
16
15
|
private
|
17
16
|
|
18
|
-
def
|
19
|
-
@
|
20
|
-
raise StandardError, "Couldn't find any images" unless (@images.count > 0)
|
17
|
+
def get_output
|
18
|
+
@output = JSON.parse(response.body)
|
21
19
|
end
|
22
20
|
|
23
|
-
def
|
24
|
-
|
21
|
+
def parse_output
|
22
|
+
@images = output.inspect.scan(/https:\/\/pbs.twimg.com\/media\/\w+\.(?:jpg|png|gif)/)
|
23
|
+
raise StandardError, "Couldn't find any images" unless @images.count > 0
|
25
24
|
end
|
26
25
|
|
27
26
|
def save_images
|
28
27
|
progressbar = ProgressBar.create(:total => images.count)
|
29
28
|
images.each do |src|
|
30
|
-
|
31
|
-
File.open(File.basename(uri), 'wb'){ |f| f.write(open(uri).read) }
|
29
|
+
File.open(File.basename(src), "wb") { |f| f.write(open(src + ":large").read) }
|
32
30
|
progressbar.increment
|
33
31
|
end
|
34
32
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module TwitterImages
|
2
|
+
class Requester
|
3
|
+
attr_accessor :search, :consumer_key, :access_token, :address, :https,
|
4
|
+
:request, :response
|
5
|
+
|
6
|
+
def initialize(search)
|
7
|
+
@search = search
|
8
|
+
end
|
9
|
+
|
10
|
+
def start
|
11
|
+
set_address
|
12
|
+
setup_credentials
|
13
|
+
setup_https
|
14
|
+
build_request
|
15
|
+
issue_request
|
16
|
+
Downloader.new(@response).download
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def set_address
|
22
|
+
@address = URI("https://api.twitter.com/1.1/search/tweets.json?q=%23#{search}&mode=photos&count=100")
|
23
|
+
end
|
24
|
+
|
25
|
+
def setup_credentials
|
26
|
+
check_env
|
27
|
+
@consumer_key = OAuth::Consumer.new(ENV["CONSUMER_KEY"], ENV["CONSUMER_SECRET"])
|
28
|
+
@access_token = OAuth::Token.new(ENV["ACCESS_TOKEN"], ENV["ACCESS_SECRET"])
|
29
|
+
end
|
30
|
+
|
31
|
+
def check_env
|
32
|
+
if ENV.key?("CONSUMER_KEY") &&
|
33
|
+
ENV.key?("CONSUMER_SECRET") &&
|
34
|
+
ENV.key?("ACCESS_TOKEN") &&
|
35
|
+
ENV.key?("ACCESS_SECRET")
|
36
|
+
return true
|
37
|
+
else
|
38
|
+
puts "The credentials have not been correctly set up in your ENV"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def setup_https
|
43
|
+
# Set up Net::HTTP to use SSL, which is required by Twitter.
|
44
|
+
@https = Net::HTTP.new(address.host, address.port)
|
45
|
+
https.use_ssl = true
|
46
|
+
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
47
|
+
end
|
48
|
+
|
49
|
+
def build_request
|
50
|
+
# Build the request and authorize it with OAuth.
|
51
|
+
@request = Net::HTTP::Get.new(address.request_uri)
|
52
|
+
request.oauth!(https, consumer_key, access_token)
|
53
|
+
end
|
54
|
+
|
55
|
+
def issue_request
|
56
|
+
# Issue the request and return the response.
|
57
|
+
@https.start
|
58
|
+
@response = https.request(request)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitter_images
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexey Zabelin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fileutils
|
@@ -171,6 +171,7 @@ files:
|
|
171
171
|
- lib/twitter_images/cli.rb
|
172
172
|
- lib/twitter_images/configuration.rb
|
173
173
|
- lib/twitter_images/downloader.rb
|
174
|
+
- lib/twitter_images/requester.rb
|
174
175
|
- lib/twitter_images/version.rb
|
175
176
|
homepage: https://github.com/alexeyzab/twitter_images
|
176
177
|
licenses:
|