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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 680f11ce26e7df87577faabdc26ad693666aab6a
4
- data.tar.gz: cd696a0c46369e957d9090a248685ea950765caf
3
+ metadata.gz: 663c7dbbd3a7a65e9d70ade8c05a543c4d1ca7d4
4
+ data.tar.gz: 8ac2b5f66ef0ae89672a77add20dd02cf1ae4ca8
5
5
  SHA512:
6
- metadata.gz: f95223c9dcf5183030b9573a4ace1356fb1e996885bb36b08a278f2a7b779d8d1375cef0b270298b16f1bb897032e30efeb6866ba136b8257fa341d3fb3d878c
7
- data.tar.gz: a7008e590ab5b044b3a936e005641354adfac80ea4dc2a3e4aa90238a32bb47ef50af06f6e38dbf5f4bb0562d7ab8ef5efc374a83c98dba456f32f67d7b10f53
6
+ metadata.gz: aeac47ed15425d246891c48ef9b1fb099ae3ce510042d75db5aec2521910eb3ee3c4ce44003f89479165e8f5a32ed2f7426aa748a7ae39ea75849a0f60c7f9f2
7
+ data.tar.gz: 1fb08285fd02a9e62f89f97926a8fe55d33ae31906d860136e13c8505d27d672dab4bd0b8192e684e6c1d4df0c871c599c925ba3faf902bbd57da4ef1b256baa
@@ -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
- set_credentials
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 access_token
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 set_credentials
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 :consumer_key, :access_token, :downloader, :search, :parser, :authorizer
4
- attr_accessor :https, :address, :response
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
- get_links(search, amount)
14
- download
15
+ puts "Getting links to the pictures..."
16
+ send_requests(search, amount)
17
+ download(links)
15
18
  end
16
19
 
17
- def get_links(search, amount)
20
+ def send_requests(search, amount)
21
+ configure_client
18
22
  loop do
19
- configure_request(search)
20
- parse
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 configure_request(search)
29
- setup_address(search)
30
- setup_https
31
- issue_request
32
- end
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 consumer_key
43
- OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET)
44
- end
45
-
46
- def access_token
47
- OAuth::Token.new(authorizer.access_token, authorizer.access_secret)
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 issue_request
57
- request = Net::HTTP::Get.new(address.request_uri)
58
- request.oauth!(https, consumer_key, access_token)
59
- @https.start
60
- @response = https.request(request)
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 parse
64
- parser.parse(response)
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
- parser.trim_links(amount)
66
+ @links = @links.slice(0...amount)
69
67
  end
70
68
 
71
- def download
72
- downloader.download(parser.parsed_links)
69
+ def download(links)
70
+ downloader.download(links)
73
71
  end
74
72
  end
75
73
  end
@@ -1,3 +1,3 @@
1
1
  module TwitterImages
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  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.3.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-01-31 00:00:00.000000000 Z
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