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

    Наткнулся на очень интересный пост, где небольшим скриптом народ составил топ самых обсуждаемых докладов с 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, если ее нет
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 45

      +1
      х) теперь качаем через руби.
      еще туда бы Gemfile для bundle install
      # A sample Gemfile
      source "http://rubygems.org"
      gem "nokogiri"
      gem "httparty"
      # gem "rails"
        +1
        спасибо
          0
          в идеале, кстати, еще стоит добавить какой-нибудь прогресс бар.
            +1
            например, так:

            gem 'ruby-progressbar', :git => git://github.com/leonid-shevtsov/ruby-progressbar.git
            ...
            require 'progressbar'


            … и s/each/each_with_progressbar('Downloading videos')/g
              0
              спасибо за ссылку.
          0
          и как мне соединить список видео ранжированный по упоминаемости с этими ссылками? вручную?
            0
            Добавить фид в Миро, все будет скачиваться само по мере появления) И еще раздаваться другим :)
              +3
              ясно, то есть статью не читали
          +4
          Есть еще один путь. Установить iTunes и смотреть их «подкаст».
          itunes.apple.com/ru/podcast/tedtalks-video/id160892972
          Ежели скачать себе архив выпусков этого подкаста за полгода — то хватит надолго. И несложно отслеживать, какие видео ты уже смотрел.
            0
            А как же продолжение «Спартак Кровь и Песок» rutracker.org/forum/viewtopic.php?t=3173423?
            Второй полный эпизод, приквел, из 6 серий — Спартак: Боги Арены — rutracker.org/forum/viewtopic.php?t=3391361
            ! Фильм не рекомендуется к просмотру лицам до 18 лет!
              0
              OFF: Хороший фильм) жду 3его сезона)
              Кстати этот скрипт можно объединить со скриптом который отправляет статистику на myshow вроде) то есть во время скачивания ставить статус «в процессе»… В общем самое шикарное, это сделать плагин под какой ни будь плеер, который будет закачивать нужное видео, и отсылать статистику на myshows :) разве было бы неплохо?
              +3
              тут субтитры на русском к 489 роликам с ТЕДа. Также файлик downloadList.txt со списком для загрузки (его можно скормить в любой менеджер для загрузки). В некоторых субтитрах есть рассинхрон небольшой, но это не моя вина. У них в некоторых роликах есть реклама, в некоторых нет :)
              dl.dropbox.com/u/505883/rus.7z
                0
                Где же вы все были раньше :))
                Пару месяцев назад начал собирать базу с их видео, друг написал скрипт, который создает для них субтитры.
                Сабы, кстати, брали с dotsub, они там хранятся в таком виде: dotsub.com/view/8646265b-5f98-49dc-be56-fd5628dd6d05/viewTranscript/rus

                И просьба ваш файлик скинуть на файлообменник, а то ваш дропбокс уже заблокирован.
              –7
              Мне конечно не лень погуглить, но автор мог бы в двух словах написать о TED чтоб, не отвлекаясь на википедию, читать дальше статью, а то начинаешь читать и не понимаешь о чем автор пишит…
                +4
                Эм-м-м, как можно не знать о TED? Ты же на Хабре, юзернейм!
                +2
                Я, конечно, не гуру, но писать вот так, как ниже, на Руби как-то не очень красиво.

                urls = []
                file = File.new("data.txt", "r")
                while (line = file.gets)
                urls << line.chomp
                end
                file.close


                Можно написать, например, вот так:

                ulrs = IO.readlines("div0.cpp").map &:chomp
                  +2
                  Или (кому-то это кажется читабельнее) так:

                  ulrs = IO.readlines("div0.cpp").map {|line| line.chomp}
                    +1
                    Я, конечно, имел в виду «data.txt», а не «div0.cpp» =)
                      0
                      спасибо, выглядит логично (8
                      что уж говорить, я синтаксис for each гуглил, не то чтобы думал как одной строкой написать
                        +2
                        Я бы сказал, что дело не в том, чтобы одной строкой написать, нежели так получается читабельнее, т.к. можно охватить одним взглядом. Получается фактически одна операция — чтение строк из файла, которая пропускается через фильтр — удаление переводов строк на конце, а результат присваивается в переменную. Можно даже и не присваивать, а прямо на нем запустить цикл:

                        IO.readlines("data.txt").map {|line| line.chomp}.each_with_index |url, index| do
                        # do stuff with url and index
                        end
                  0
                  На TED шикарный контент, но удобство совсем хромает. Как же хотелось бы иметь возможность фильтровать уже просмотренное видео, сохранять ожидаемое.
                    0
                    в таком случае, лучше в itunes подписаться на подкаст (он отмечает просмотренные) или на вышеупомянутый feed непосредственно с сайта (не знаю правда чем отмечать)
                    +1
                    +1 за TED.

                    Кстати, кто на хабре занимается переводами TED talks?
                      0
                      Я подумываю. Проблема в том, что переводить хочется то, что тронуло. А оно, как правило, уже того, переведено ;) Вот мониторю TED2011 на предмет чего-то интересного лично мне, чтобы отхватить раньше всех :D
                        0
                        Мне в том году за переводы дали доступ к web cast TED2010. В этом не напереводил достаточно, много других дел было… Надеюсь, что если перевести 5-10 видео, дадут на TED 2012…
                          0
                          Ух ты. Я как-то даже и не знал, что за это можно получить доступ к веб-касту. Это просто замечательно же. Спасибо за инфу.
                            0
                            Не факт, конечно же. В тот раз для меня был шок и сюрприз. Но возможность саму я не отрицаю.
                              0
                              Я тогда забил на работу на 4 дня, и смотрел с утра до вечера из дома на большом экране… :)
                              Experience офигительный.
                                0
                                Ха! Еще бы =) Я бы тоже забил на все и смотрел с утра до вечера на большом экране.

                                Ладно, на самом деле не важно, дадут что-то или нет. Я изначально не надеялся, просто мне нравится переводить то, что мне интересно. TED в этом отношении просто золотая жила.

                                … но если дадут, это будет просто чудесно ;)
                                  0
                                  Это да…
                        +1
                        Табличка с выступлениями выглядит приятнее, на мой взгляд, вот в таком виде — spreadsheets0.google.com/lv?hl=en&hl=en&key=0AgsdFQlATsyYdEtnVHQ3alRsU1M5cVdsSFpEbVdlbFE&f=0&rm=full#gid=0

                        Спасибо не помню кому, у кого я эту ссылку впервые увидел.
                          0
                          Очень круто, только не ясно, как отмечать просмотренное :)
                            0
                            Отвечу сам — можно скопировать себе в Google Docs и там помечать цветом или как-нибудь еще. Правда, через некоторое время это будет уже не самая свежая копия.
                          0
                          Еще вместо urls.each do |url| ... end и увеличения count вручную, можно сделать:

                          urls.each_with_index do |url, index|
                          ...
                          end
                            0
                            Мне нравиться категория в которую определили TED на itunes — «Design»
                              0
                              TED = Technology Entertainment Design
                              pick one
                              +1
                              сделайте проверку существования папки videos. Иначе Failed to download w.....
                                0
                                спасибо
                                только что мне тоже на это указали
                                  0
                                  было бы круто сделать еще скачивание субтитров.
                                  думаю даже можно сделать автоматическое подсовывание их в видео с помощью subler.
                                0
                                Положите на RuTracker )
                                  0
                                  это не ruby-way )
                                  0
                                  Для андроида есть удобный клиент TED где, в том числе, можно выбрать ролики по наличию субтитров на нужном языке.
                                    +1
                                    Кто бы ещё готовый сервис сделал с рейтингом… Не всем, знаете ли, охота заморачиваться с какими-то скриптами просто ради того, чтобы один раз получить список.
                                    А вообще, имхо, стоит пинать вебмастеров TED.com, чтобы довели юзабили до ума.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое