twitter_images 0.3.0 → 0.4.0
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/lib/twitter_images.rb +1 -4
- data/lib/twitter_images/authorizer.rb +4 -8
- data/lib/twitter_images/requester.rb +40 -42
- data/lib/twitter_images/version.rb +1 -1
- metadata +16 -37
- data/lib/twitter_images/parser.rb +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 663c7dbbd3a7a65e9d70ade8c05a543c4d1ca7d4
|
4
|
+
data.tar.gz: 8ac2b5f66ef0ae89672a77add20dd02cf1ae4ca8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aeac47ed15425d246891c48ef9b1fb099ae3ce510042d75db5aec2521910eb3ee3c4ce44003f89479165e8f5a32ed2f7426aa748a7ae39ea75849a0f60c7f9f2
|
7
|
+
data.tar.gz: 1fb08285fd02a9e62f89f97926a8fe55d33ae31906d860136e13c8505d27d672dab4bd0b8192e684e6c1d4df0c871c599c925ba3faf902bbd57da4ef1b256baa
|
data/lib/twitter_images.rb
CHANGED
@@ -1,18 +1,15 @@
|
|
1
1
|
require "rubygems"
|
2
|
-
require "open-uri"
|
3
|
-
require "fileutils"
|
4
|
-
require "json"
|
5
2
|
require "oauth"
|
6
3
|
require "ruby-progressbar"
|
7
4
|
require "typhoeus"
|
8
5
|
require "optparse"
|
9
6
|
require "launchy"
|
7
|
+
require "twitter"
|
10
8
|
|
11
9
|
require "twitter_images/cli"
|
12
10
|
require "twitter_images/configuration"
|
13
11
|
require "twitter_images/authorizer"
|
14
12
|
require "twitter_images/requester"
|
15
|
-
require "twitter_images/parser"
|
16
13
|
require "twitter_images/downloader"
|
17
14
|
require "twitter_images/version"
|
18
15
|
require "twitter_images/consumer"
|
@@ -7,18 +7,14 @@ module TwitterImages
|
|
7
7
|
visit_url
|
8
8
|
get_pin
|
9
9
|
authorize_with_pin
|
10
|
-
|
10
|
+
write_credentials
|
11
|
+
assign_credentials
|
11
12
|
puts "Authorization successful. Credentials have been written to #{ENV['HOME']}/.twitter_imagesrc"
|
12
13
|
end
|
13
14
|
|
14
|
-
def
|
15
|
+
def assign_credentials
|
15
16
|
if File.exist?(ENV["HOME"] + "/.twitter_imagesrc")
|
16
17
|
@access_token = IO.readlines(ENV["HOME"] + "/.twitter_imagesrc")[0].chomp
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def access_secret
|
21
|
-
if File.exist?(ENV["HOME"] + "/.twitter_imagesrc")
|
22
18
|
@access_secret = IO.readlines(ENV["HOME"] + "/.twitter_imagesrc")[1].chomp
|
23
19
|
end
|
24
20
|
end
|
@@ -44,7 +40,7 @@ module TwitterImages
|
|
44
40
|
@access_token_object = request_token.get_access_token(:oauth_verifier => @pin)
|
45
41
|
end
|
46
42
|
|
47
|
-
def
|
43
|
+
def write_credentials
|
48
44
|
File.open(ENV["HOME"] + "/.twitter_imagesrc", "w") do |file|
|
49
45
|
file.puts(access_token_object.token)
|
50
46
|
file.puts(access_token_object.secret)
|
@@ -1,75 +1,73 @@
|
|
1
1
|
module TwitterImages
|
2
2
|
class Requester
|
3
|
-
attr_reader :
|
4
|
-
attr_accessor :
|
3
|
+
attr_reader :downloader, :authorizer, :search
|
4
|
+
attr_accessor :client, :tweets, :links, :max_id
|
5
5
|
|
6
6
|
def initialize
|
7
7
|
@downloader = Downloader.new
|
8
|
-
@parser = Parser.new
|
9
8
|
@authorizer = Authorizer.new
|
9
|
+
@max_id = nil
|
10
|
+
@tweets = []
|
11
|
+
@links = []
|
10
12
|
end
|
11
13
|
|
12
14
|
def start(search, amount)
|
13
|
-
|
14
|
-
|
15
|
+
puts "Getting links to the pictures..."
|
16
|
+
send_requests(search, amount)
|
17
|
+
download(links)
|
15
18
|
end
|
16
19
|
|
17
|
-
def
|
20
|
+
def send_requests(search, amount)
|
21
|
+
configure_client
|
18
22
|
loop do
|
19
|
-
|
20
|
-
|
21
|
-
break if @parser.parsed_links.count > amount
|
23
|
+
get_tweets(search, amount)
|
24
|
+
break if @links.count > amount
|
22
25
|
end
|
23
26
|
trim_links(amount)
|
24
27
|
end
|
25
28
|
|
26
29
|
private
|
27
30
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
def setup_address(search)
|
35
|
-
unless parser.max_id.nil?
|
36
|
-
@address = URI("https://api.twitter.com/1.1/search/tweets.json?q=#{search}&result_type=recent&count=100&max_id=#{parser.max_id}")
|
37
|
-
else
|
38
|
-
@address = URI("https://api.twitter.com/1.1/search/tweets.json?q=#{search}&result_type=recent&count=100")
|
31
|
+
def configure_client
|
32
|
+
@client = Twitter::REST::Client.new do |config|
|
33
|
+
config.consumer_key = CONSUMER_KEY
|
34
|
+
config.consumer_secret = CONSUMER_SECRET
|
35
|
+
config.access_token = authorizer.access_token
|
36
|
+
config.access_token_secret = authorizer.access_secret
|
39
37
|
end
|
40
38
|
end
|
41
39
|
|
42
|
-
def
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
def setup_https
|
51
|
-
@https = Net::HTTP.new(address.host, address.port)
|
52
|
-
https.use_ssl = true
|
53
|
-
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
40
|
+
def get_tweets(search, amount)
|
41
|
+
client.search(search, result_type: "recent", max_id: @max_id).take(amount).each do |tweet|
|
42
|
+
@tweets << tweet
|
43
|
+
end
|
44
|
+
get_max_id(@tweets)
|
45
|
+
get_links(@tweets)
|
54
46
|
end
|
55
47
|
|
56
|
-
def
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
48
|
+
def get_max_id(tweets)
|
49
|
+
ids = []
|
50
|
+
tweets.each do |tweet|
|
51
|
+
ids << tweet.id
|
52
|
+
end
|
53
|
+
@max_id = ids.min - 1
|
61
54
|
end
|
62
55
|
|
63
|
-
def
|
64
|
-
|
56
|
+
def get_links(tweets)
|
57
|
+
tweets.each do |tweet|
|
58
|
+
if !tweet.media.empty?
|
59
|
+
@links << tweet.media[0].media_url.to_s
|
60
|
+
@links.uniq!
|
61
|
+
end
|
62
|
+
end
|
65
63
|
end
|
66
64
|
|
67
65
|
def trim_links(amount)
|
68
|
-
|
66
|
+
@links = @links.slice(0...amount)
|
69
67
|
end
|
70
68
|
|
71
|
-
def download
|
72
|
-
downloader.download(
|
69
|
+
def download(links)
|
70
|
+
downloader.download(links)
|
73
71
|
end
|
74
72
|
end
|
75
73
|
end
|
metadata
CHANGED
@@ -1,49 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitter_images
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
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-
|
11
|
+
date: 2016-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: fileutils
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.7'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.7'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: json
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.8.2
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 1.8.2
|
37
|
-
type: :runtime
|
38
|
-
prerelease: false
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - "~>"
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 1.8.2
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 1.8.2
|
47
13
|
- !ruby/object:Gem::Dependency
|
48
14
|
name: oauth
|
49
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,6 +84,20 @@ dependencies:
|
|
118
84
|
- - ">="
|
119
85
|
- !ruby/object:Gem::Version
|
120
86
|
version: 2.4.3
|
87
|
+
- !ruby/object:Gem::Dependency
|
88
|
+
name: twitter
|
89
|
+
requirement: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - "~>"
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '5.16'
|
94
|
+
type: :runtime
|
95
|
+
prerelease: false
|
96
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - "~>"
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '5.16'
|
121
101
|
- !ruby/object:Gem::Dependency
|
122
102
|
name: bundler
|
123
103
|
requirement: !ruby/object:Gem::Requirement
|
@@ -221,7 +201,6 @@ files:
|
|
221
201
|
- lib/twitter_images/configuration.rb
|
222
202
|
- lib/twitter_images/consumer.rb
|
223
203
|
- lib/twitter_images/downloader.rb
|
224
|
-
- lib/twitter_images/parser.rb
|
225
204
|
- lib/twitter_images/requester.rb
|
226
205
|
- lib/twitter_images/version.rb
|
227
206
|
homepage: https://github.com/alexeyzab/twitter_images
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module TwitterImages
|
2
|
-
class Parser
|
3
|
-
attr_reader :response
|
4
|
-
attr_accessor :parsed_links, :max_id
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
@parsed_links = []
|
8
|
-
end
|
9
|
-
|
10
|
-
def parse(response)
|
11
|
-
parsed = JSON.parse(response.body)
|
12
|
-
get_max_id(parsed)
|
13
|
-
collect_responses(parsed)
|
14
|
-
end
|
15
|
-
|
16
|
-
def trim_links(amount)
|
17
|
-
@parsed_links = @parsed_links.slice!(0...amount)
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def get_max_id(parsed)
|
23
|
-
ids = []
|
24
|
-
parsed["statuses"].each do |tweet|
|
25
|
-
ids << tweet["id"]
|
26
|
-
end
|
27
|
-
@max_id = ids.min - 1
|
28
|
-
end
|
29
|
-
|
30
|
-
def collect_responses(parsed)
|
31
|
-
@parsed_links += parsed.inspect.scan(/https:\/\/pbs.twimg.com\/media\/\w+\.(?:jpg|png|gif)/)
|
32
|
-
@parsed_links.uniq!
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|