twitter_images 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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