class MyJobAnime44

Public Class Methods

new(args={}) click to toggle source
# File lib/lib/job.rb, line 3
def initialize(args={})
  require 'kconv'
  require 'mechanize'
  require 'net/http'
  @a = args
  @debug = args[:debug] ||= false
  @a[:url] ||= 'http://www.anime44.com/'
  @a[:status] ||= :top_page
  return if @a[:url].nil?
  @agent = Mechanize.new
  @a[:recursive] ||= 4
end

Public Instance Methods

anime44_fetch() click to toggle source
# File lib/lib/job.rb, line 116
def anime44_fetch
  print "video".yellow

  savedir = @a[:machine].savedir
  Dir.chdir savedir

  filename = "#{@a[:title].gsub(' ','').gsub(' ','')}.mp4"
  savepath = "#{savedir}/#{filename}"

  if File.exist?(savepath) && File.size(savepath) > 1024 * 1024 * 3
    puts "File Already Saved ".yellow.bold  + savepath
    return
  else
    puts "Fetching ".green.bold + savepath
    MyLogger.ln "Fetch Attempt Start ".green.bold  + savepath
  end
  # use curl command
  # no need UA...
  command = "curl -# -L -R -o '#{filename}' '#{@a[:url]}' >/dev/null 2>&1 &"
  puts command 
  system command unless @debug
end
anime44_first() click to toggle source
# File lib/lib/job.rb, line 33
def anime44_first
  print :anime44_first if @debug
  puts @a[:url] if @debug
  begin
    @agent.get @a[:url]
  rescue => ex
    p ex if @debug
    p @a[:url] if @debug
    return 
  end
  @title = @agent.page.title

  flg = false

  videozer_embeds_links = @agent.page.search('embed[@src^="http://www.videozer"]').map {|ne| ne[:src] }
  unless videozer_embeds_links[0].nil?
    flg = true
    url1 = videozer_embeds_links[0].gsub('http://www.videozer.com/embed/','http://video195.videozer.com/video?v=')
    url = "#{url1}&r=1&t=#{Time.new.to_i.to_s}&u=&start=0"
    job = MyJobAnime44.new(
                           @a.merge({
                                      :url => url,
                                      :title => @title,
                                      :status => :anime44_fetch}))
    @a[:machine].retry job
  end

  unless flg == true
    begin
      @agent.get @a[:url]
    rescue => ex
      p ex if @debug
      p @a[:url] if @debug
      return 
    end
    
    daily_embeds_links = @agent.page.search('embed[@src^="http://www.daily"]').map {|ne| ne[:src] }
    unless daily_embeds_links[0].nil?
      uri = daily_src2hqurl(daily_embeds_links[0])
      if uri[:status] == :ok
        flg = true
        job = MyJobAnime44.new(
                               @a.merge({
                                          :url => uri[:url],
                                          :title => @title,
                                          :status => :anime44_fetch}))
        @a[:machine].retry job
      end
    end
  end
  
  begin
    if @a[:recursive] > 0
      alignleft = @agent.page.search('div.alignleft a')[0]['href']
      job = MyJobAnime44.new(
                             @a.merge({
                                        :url => alignleft,
                                        :recursive => @a[:recursive] -1 ,
                                        :status => :anime44_first}))
      @a[:machine].retry job
    else
      p "recursive stop" if @debug
    end
  rescue => ex
  end
  
  begin
    if @a[:recursive] > 0
      alignright = @agent.page.search('div.alignright a')[0]['href']
      job = MyJobAnime44.new(
                             @a.merge({
                                        :url => alignright,
                                        :recursive => @a[:recursive] - 1,
                                        
                                        :status => :anime44_first}))
      @a[:machine].retry job
    else
      p "recursive stop" if @debug
    end
  rescue => ex
  end
end
daily_src2hqurl(url) click to toggle source
# File lib/lib/job.rb, line 139
def daily_src2hqurl(url)
  require 'json'
  begin
    js= JSON.parse(@agent.get(url.gsub('swf','sequence/full')).body)
    uri = js[0]['layerList'][0]['sequenceList'][1]['layerList'][2]['param']['videoPluginParameters']['hqURL']
  rescue =>ex
    return {:status => :error}
  end
  {:status => :ok,:url => uri}
end
run() click to toggle source
# File lib/lib/job.rb, line 150
def run
  send @a[:status]
end
top_page() click to toggle source
# File lib/lib/job.rb, line 16
def top_page
  print :top_page if @debug
  @agent.get @a[:url]
  #    p @agent.page
  @agent.page.search('table')[1].css('td li')
  targs =  @agent.page.search('table')[1].css('td li')# .select {|ne| ne.text =~ /\(Raw\)/ }
  a_s = []
  targs.each {|ne| a_s << ne.css('a').map{|e|e[:href]}[0]}
  a_s.each do |link|
    job = MyJobAnime44.new(@a.merge({
                                      :url => link,
                                      :status => :anime44_first
                                    }))
    @a[:machine].retry job
  end
end