Class: Treehouse::Downloader
- Inherits:
-
Object
- Object
- Treehouse::Downloader
- Defined in:
- lib/treehouse-dl/downloader.rb
Class Method Summary collapse
- .create_directory(directory, video_folder) ⇒ Object
- .download(url, paths) ⇒ Object
- .login(username, password) ⇒ Object
- .valid(url) ⇒ Object
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.login(username,password) SpinningCursor.run do "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. "Email or Password is invalid".red return false else SpinningCursor. "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 |