Sha256: 04c7e6167eceddcfe79c66e42b02a237185c3b2e220a4df349b9c761845a852e
Contents?: true
Size: 1.87 KB
Versions: 2
Compression:
Stored size: 1.87 KB
Contents
require "colorize" require "json" require "trollop" module AllTweets class CLI def initialize @screen_name, @opts = parse_args @settings = Settings.new update_access_token @fetcher = Fetcher.new( consumer_key: @settings.consumer_key, consumer_secret: @settings.consumer_secret, access_token: @settings.access_token, access_token_secret: @settings.access_token_secret ) end def run warn "Downloading @#{@screen_name}'s all tweets" result = @fetcher.fetch_all_tweets(@screen_name, include_retweets: @opts[:retweets]).map(&:to_h) if @opts[:yaml] dump_data = YAML.dump(result) else dump_data = JSON.dump(result) end puts dump_data rescue warn "Error: #{$!}".colorize(:red) exit 1 end private def parse_args opts = Trollop::options do opt :retweets, "Include retweets" opt :yaml, "Use YAML instead of JSON" version "alltweets #{VERSION}" end unless ARGV.size == 1 warn "usage: alltweets [options] <screen name>" exit 1 end screen_name = ARGV.first [screen_name, opts] end def update_access_token unless @settings.exist? consumer = OAuth::Consumer.new( @settings.consumer_key, @settings.consumer_secret, site: "https://api.twitter.com" ) request_token = consumer.get_request_token warn "1) Open: #{request_token.authorize_url}".colorize(:cyan) $stderr.print "2) Enter the PIN: ".colorize(:cyan) pin = $stdin.gets.strip access_token = request_token.get_access_token(oauth_verifier: pin) warn "Saving access token and access token secret to #{@settings.filename}" @settings.add_access_tokens(access_token.token, access_token.secret) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
alltweets-1.1.1 | lib/alltweets/cli.rb |
alltweets-1.1.0 | lib/alltweets/cli.rb |