class MyMachineAnisoku
Class of Machine by EventMachine. this class controll jobs for Anisoku @example
machine = MyMachineAnisoku.new("YourVideoSaveDir") machine.setup machine.go
Attributes
savedir[RW]
directory of save video files default “#{ENV}/Desktop/video”
Public Class Methods
new(args={ })
click to toggle source
set video save dir @param [Hash] args @option args [String] :savedir save dir
default "#{ENV['HOME']}/Desktop/video"
Calls superclass method
MyMachine::new
# File lib/lib/machine.rb, line 204 def initialize(args={ }) super(args) args[:savedir] ||= "#{ENV['HOME']}/Desktop/video" @savedir = args[:savedir] begin Dir::mkdir(@savedir, 0777) rescue => ex warn ex end require 'rubygems' require 'eventmachine' # @gaman controll eventmachine end @gaman = 0 @checklist = {} @filelist = {} @dellist = [] @args = args @args[:limit] ||= 7 @args[:recent] ||= 7 @args[:mode] ||= :anisoku make_filelist make_dellist end
Public Instance Methods
chk_header(string)
click to toggle source
# File lib/lib/machine.rb, line 246 def chk_header(string) @filelist[string] end
del_small_files()
click to toggle source
# File lib/lib/machine.rb, line 272 def del_small_files @dellist.each do |e| p e if @debug File.delete("#{e}") end end
episode_exists?(key)
click to toggle source
# File lib/lib/machine.rb, line 279 def episode_exists?(key) if @checklist[key].nil? puts "MACHINE NOE FIRST CHECK THIS EPISODE!!".red.bold if @debug @checklist[key] = "checked" return false else return true end end
finalize_files()
click to toggle source
delete tiny fail files
# File lib/lib/machine.rb, line 305 def finalize_files del_small_files command = "find #{@savedir} -size -1000k -type f -print0| xargs -0 rm -v " exec command command = "find /Users/seijiro/Desktop/video -type f > ~/Desktop/video.m3u && open ~/Desktop/video.m3u " exec command end
go()
click to toggle source
machine go to run eventmachine
# File lib/lib/machine.rb, line 290 def go EM.run do EM.add_periodic_timer(0.00001) do print "loop".green if should_stop_machine? finalize_files EM.stop end @queue.pop.run unless @queue.empty? end end puts "End of fetch".green.bold end
make_dellist()
click to toggle source
# File lib/lib/machine.rb, line 258 def make_dellist @filelist.each do |k,v| p k if @debug max_size = v.map { |e| e[:size] }.max p max_size if @debug v.each do |vv| if vv[:size] < max_size || vv[:size] < 1024 * 1024 * 2 @dellist << vv[:name] end end end pp @dellist if @debug end
make_filelist()
click to toggle source
# File lib/lib/machine.rb, line 229 def make_filelist Dir.new(@savedir).each do |entry| if File.file?("#{@savedir}/#{entry}") header = make_header(entry) if header filesize = File.size("#{@savedir}/#{entry}") @filelist[header] = [] unless chk_header(header) @filelist[header] << { :size => filesize, :name => "#{@savedir}/#{entry}", } end end end pp @filelist if @debug end
make_header(string)
click to toggle source
# File lib/lib/machine.rb, line 250 def make_header(string) if string.scan(/^.*?\d{1,3}話/).first header = string.scan(/^.*?\d{1,3}話/).first.gsub(' ','').gsub(' ','') end p header if @debug return header end
Private Instance Methods
setupjobs()
click to toggle source
setup jobs
# File lib/lib/machine.rb, line 316 def setupjobs if @args[:mode] == :anime44 ajob = MyJobAnime44 .new( :machine => self, :limit => @args[:limit], :recent => @args[:recent], :debug => @debug, ) elsif @args[:mode] == :second ajob = MyJobAnime44 .new( :machine => self, :limit => @args[:limit], :recent => @args[:recent], :debug => @debug, ) else ajob = MyJobAnisoku2 .new( :machine => self, :limit => @args[:limit], :recent => @args[:recent], :debug => @debug, ) end @queue.push ajob end
should_stop_machine?()
click to toggle source
should stop machine or not
# File lib/lib/machine.rb, line 346 def should_stop_machine? @gaman += 1 if @queue.empty? print @gaman if @debug return @queue.empty? && @gaman > 4000 end