require "sys/filesystem" module Saber module Task class CHD < Base desc "chd", "chd" def chd(o={}) t = Tracker["chd"].new begin t.login Saber.ui.say "Begin to watch." # mark all loaded. t.update_cache(true) while true # check free diskspace s = Sys::Filesystem.stat(Rc.chd.diskspace_dir.p) if s.block_size * s.blocks_free < Rc.chd.diskspace_limit Saber.ui.say "::SKIP:: Reach low diskspace." else t.add_torrents end sleep Rc.chd.update_interval end rescue Errno::ETIMEDOUT, Mechanize::ResponseCodeError, SocketError sleep 60 retry end end end end end