From 8bf15d2a1b269e515a4b3f321898cb274b125b91 Mon Sep 17 00:00:00 2001 From: Effy Elden Date: Fri, 26 Feb 2016 06:18:53 +1100 Subject: [PATCH] Added sync command --- bin/ebooks | 21 +++++++++++++++ lib/twitter_ebooks.rb | 1 + lib/twitter_ebooks/sync.rb | 52 ++++++++++++++++++++++++++++++++++++++ twitter_ebooks.gemspec | 1 + 4 files changed, 75 insertions(+) create mode 100644 lib/twitter_ebooks/sync.rb diff --git a/bin/ebooks b/bin/ebooks index 31b9907..9fada60 100755 --- a/bin/ebooks +++ b/bin/ebooks @@ -28,6 +28,7 @@ Usage: ebooks append ebooks gen [input] ebooks archive [path] + ebooks sync [username] ebooks tweet ebooks version STR @@ -227,6 +228,25 @@ STR Ebooks::Archive.new(username, outpath).sync end + HELP.sync = <<-STR + Usage: ebooks sync + + Copies and flips 's avatar and cover photo, uploading them to 's profile. + + Stores saved avatar's and covers in image/. + + STR + + def self.sync(botname, username) + if botname.nil? + help :sync + exit 1 + end + + load File.join(APP_PATH, 'bots.rb') + Ebooks::Sync::run(botname, username) + end + HELP.tweet = <<-STR Usage: ebooks tweet @@ -409,6 +429,7 @@ STR when "append" then append(args[1],args[2]) when "gen" then gen(args[1], args[2..-1].join(' ')) when "archive" then archive(args[1], args[2]) + when "sync" then sync(args[1], args[2]) when "tweet" then tweet(args[1], args[2]) when "jsonify" then jsonify(args[1..-1]) when "auth" then auth diff --git a/lib/twitter_ebooks.rb b/lib/twitter_ebooks.rb index 9d9652f..f086418 100644 --- a/lib/twitter_ebooks.rb +++ b/lib/twitter_ebooks.rb @@ -16,6 +16,7 @@ end require 'twitter_ebooks/nlp' require 'twitter_ebooks/archive' +require 'twitter_ebooks/sync' require 'twitter_ebooks/suffix' require 'twitter_ebooks/model' require 'twitter_ebooks/bot' diff --git a/lib/twitter_ebooks/sync.rb b/lib/twitter_ebooks/sync.rb new file mode 100644 index 0000000..b3f2322 --- /dev/null +++ b/lib/twitter_ebooks/sync.rb @@ -0,0 +1,52 @@ +#!/usr/bin/env ruby +# encoding: utf-8 + +require 'twitter' +require 'json' +require 'mini_magick' +require 'open-uri' +require 'pry' + +module Ebooks + class Sync + + def self.run(botname, username) + bot = Ebooks::Bot.get(botname) + bot.configure + source_user = username + ebooks_user = bot.username + user = bot.twitter.user(source_user) + if user.profile_image_url then + Ebooks::Sync::get(user.profile_image_url(:original), "image/#{source_user}_avatar") + avatar = MiniMagick::Image.open("image/#{source_user}_avatar") + avatar.flip + avatar.write("image/#{ebooks_user}_avatar") + avatar64 = Base64.encode64(File.read("image/#{ebooks_user}_avatar")) + bot.twitter.update_profile_image(avatar64) + p "Updated profile image for #{ebooks_user} from #{source_user}." + else + p "#{source_user} does not have a profile image to clone." + end + if user.profile_banner_url then + Ebooks::Sync::get(user.profile_banner_url, "image/#{source_user}banner") + banner = MiniMagick::Image.open("image/#{source_user}banner") + banner.flip + banner.write("image/#{ebooks_user}_banner") + banner64 = Base64.encode64(File.read("image/#{ebooks_user}_banner")) + bot.twitter.update_profile_banner(banner64) + p "Updated cover image for #{ebooks_user} from #{source_user}." + else + p "#{source_user} does not have a cover image to clone." + end + end + + def self.get(url, destination) + File.open(destination, "wb") do |saved_file| + open(url, "rb") do |read_file| + saved_file.write(read_file.read) + end + end + end + + end +end diff --git a/twitter_ebooks.gemspec b/twitter_ebooks.gemspec index 6cb0200..3f3508c 100644 --- a/twitter_ebooks.gemspec +++ b/twitter_ebooks.gemspec @@ -33,4 +33,5 @@ Gem::Specification.new do |gem| gem.add_runtime_dependency 'highscore' gem.add_runtime_dependency 'pry' gem.add_runtime_dependency 'oauth' + gem.add_runtime_dependency 'mini_magick' end