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