class Ruboty::YMCrawl::Core

Public Class Methods

new() click to toggle source
# File lib/ruboty/ymcrawl/main.rb, line 66
def initialize
        @data = DataManager.instance
        if @data.get_save_to != "local"
                @uploader = Uploader.new(@data.get_save_to, @data.get_current_app_key, @data.get_current_app_secret, @data.get_current_access_token)
                puts "env dropbox app key: #{@data.get_current_app_key}"
                puts "env dropbox app sec: #{@data.get_current_app_secret}"
        end
end

Public Instance Methods

crawl(urls) click to toggle source

画像をクロールして保存する。保存したファイルのパスを返す。

# File lib/ruboty/ymcrawl/main.rb, line 78
def crawl(urls)
        puts "in crawl"
        ncrawler  = Crawler.new(@data.get_setting["dst_dir"], @data.get_current_uploder_info(urls[0]), @data.get_setting["wait_time"])
        urls.map{ |v| ncrawler.save_images(v) }
end
get_uploader() click to toggle source
# File lib/ruboty/ymcrawl/main.rb, line 122
def get_uploader; @uploader end
start(urls) click to toggle source
# File lib/ruboty/ymcrawl/main.rb, line 75
def start(urls); upload crawl(urls) end
upload(file_dirs) click to toggle source

画像を指定した先へアップロード

# File lib/ruboty/ymcrawl/main.rb, line 85
def upload(file_dirs)
        puts "in upload"
        setting  = @data.get_setting
        return nil if @data.get_save_to == "local"

        @uploader.login(@data.get_current_access_token)
        zip_paths = file_dirs.map{ |dir| zip_dir(dir) }
        encode = (ENV["LANG"] == nil) ? "utf-8" : ENV["LANG"]
        begin
                file_dirs.each{ |dir| FileUtils::remove_entry_secure( dir.force_encoding(encode) ) }
        rescue
                if encode != "ascii-8bit"
                        encode = "ascii-8bit"
                        retry
                end
        end
        share_paths = []
        zip_paths.each do |path|
                puts "uploading #{path} to dropbox"
                put_result = @uploader.put([path])
                File::delete(path)
                share_paths << @uploader.get_share_link(put_result["path"])["url"]
        end
        return share_paths
end
zip_dir(src) click to toggle source

指定されたディレクトリ以下のファイルをzipにする。返り値はzipのパス

# File lib/ruboty/ymcrawl/main.rb, line 112
def zip_dir(src)
        dst = "#{src}.zip"
        Zip::Archive.open(dst, Zip::CREATE) do |ar|
                Dir.glob("#{src}/*").each do |item|
                        ar.add_file(item)
                end
        end
        dst
end