Class: Treehouse::Downloader

Inherits:
Object
  • Object
show all
Defined in:
lib/treehouse-dl/downloader.rb

Class Method Summary collapse

Class Method Details

.create_directory(directory, video_folder) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/treehouse-dl/downloader.rb', line 74

def self.create_directory(directory,video_folder)
  FileUtils.cd(ENV["HOME"])
  if File.directory?(directory)
    FileUtils.cd(directory)
    if File.directory?(video_folder)
      FileUtils.cd(video_folder)
    else
      FileUtils.mkdir(video_folder)
      FileUtils.cd(video_folder)
    end
  else
    FileUtils.mkdir(directory)
    FileUtils.cd(directory)
    FileUtils.mkdir(video_folder)
    FileUtils.cd(video_folder)
  end
end

.download(url, paths) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/treehouse-dl/downloader.rb', line 50

def self.download(url,paths)
  shift_no = 0
  link_no  = 0
  begin
    while shift_no <= paths.size  do
      full_link = "https://teamtreehouse.com#{paths[shift_no]}"
      shift_no += 1
      download_page_source = $agent.get(full_link)
      video_folder = $agent.get(url).search('//*[@id="syllabus-title"]/h1')
      if download_page_source.body =~ /mp4/
        link_no += 1
        video_name = download_page_source.title
        videolink = download_page_source.body.split(' ').select{|i| i=~/mp4/}[1]
        videolink[0..4] = ""
        videolink.chop!
        Downloader.create_directory("Treehouse",video_folder.text.parameterize)
        system("wget -O #{link_no}-#{video_name.parameterize}.mp4 #{videolink}")
      end
    end
  rescue Mechanize::ResponseCodeError
    retry
  end
end

.login(username, password) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/treehouse-dl/downloader.rb', line 26

def self.(username,password)
  SpinningCursor.run do
    banner "Logging in, please wait".green
    type :dots

    action do
      $agent = Mechanize.new
      page = $agent.get('https://teamtreehouse.com/signin')
      form = page.forms[0]
      form["user_session[email]"] = username
      form["user_session[password]"] = password
      page = $agent.submit(form)

      if page.body =~ /Free Trial/
        SpinningCursor.set_message "Email or Password is invalid".red
        return false
      else
        SpinningCursor.set_message "Signed in succesfully".green
        return true
      end
    end
  end
end

.valid(url) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/treehouse-dl/downloader.rb', line 14

def self.valid(url)
  driver = Selenium::WebDriver.for :phantomjs
  driver.navigate.to url
  course_page = driver.page_source
  course_page_paths = course_page.split(' ').select{ |i| i =~ /library/ }.select{ |i| i =~ /href/ }.uniq
  course_page_paths = course_page_paths.each do |i|
    i[0..5] = ""
    i[i.size - 2..i.size] = ""
  end
    Downloader.download(url,course_page_paths)
end