Pull to refresh

Не знаешь что посмотреть? Посмотри лучшие видео с TED

Reading time2 min
Views1.3K
Наткнулся на очень интересный пост, где небольшим скриптом народ составил топ самых обсуждаемых докладов с TED. А так как сериалы становятся все тупее и тупее, решил заполнить свое свободное время чем-то более полезным. Ведь на TED время от времени говорят об интересных и полезных вещах.

В итоге получился другой скрипт, который большинство этих видео скачал.

Одним из вариантов посмотреть все видео был бы открыть XLS файл с сайта и кликать по линкам сверху вниз, но он чрезвычайно неудобен. Через 10-20 ссылок я бы запутался что смотрел а что нет, да и хочется залить все на iPhone и смотреть/слушать по дороге на работу.

После продолжительного гугления синтаксиса Ruby, был написан небольшой скрипт, который брал из файла адреса докладов и скачивал их в папочку. Дело полезное, может быть кому пригодится.

require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'HTTParty'

urls = IO.readlines("data.txt").map {|line| line.chomp}
if !File.exists?("videos")
  Dir.mkdir("videos")
end

urls.each_with_index do |url, count|
  begin
    doc = Nokogiri.parse(open(url).read)
    node = doc.xpath("//dt/a[text()='Download video to desktop (MP4)']")
    video = "http://www.ted.com" + node.attribute("href").to_s
    videoName = "videos/(#{count+1})" + url.match(/http:\/\/www.ted.com\/talks\/(.*)\.html/i)[1] + ".mp4"
    puts "Downloading #{url} to #{videoName}"

    File.open( videoName, "w+") do |f|
      f << HTTParty.get( video ) 
    end
  rescue
    puts "Failed to download #{url}"
  end
end

Соответственно, нужно поставить гемы: nokogirii и httparty.
Скрипт и файл с данными скинул на GitHub.

Для некоторых видео на сайте нет ссылок на скачивание. Их придется смотреть там или на youtube.
Можно было бы выложить все скачанные видео куда-нибудь в торенты, но это не так интересно как собрать из исходниковскачать самому.
С удовольствием выслушаю замечания от гуру Ruby.

P.S. ушел смотреть все по порядку.

Update: добавил Gemfile для упрощения установки
Update2: спасибо detunized за урок Ruby
Update3: добавил создание папки videos, если ее нет
Tags:
Hubs:
Total votes 36: ↑33 and ↓3+30
Comments45

Articles