Как скачать видео с YouTube из командной строки


ramok аватар

ramok - Posted on 28 Ноябрь 2007

На самом деле существует немало скриптов что бы скачать видео с YouTube в командной строке. Лично я пользуюсь youtube-dl, главным образом потому что он есть в репозитории Debian Ж:-)

# sudo apt-get install youtube-dl
# youtube-dl http://www.youtube.com/watch\?v\=FOnBFfhGvf4
Retrieving video webpage... done.
Extracting URL "t" parameter... done.
Requesting video file... done.Video data found at http://chi-v171.chi.youtube.com/get_video?video_id=FOnBFfhGvf4
Retrieving video data: 100.0% (  20.58M of 20.58M) at  151.27k/s ETA 00:00 done.
Video data saved to FOnBFfhGvf4.flv

Опцией -o можно указать имя файла под которым сохранить видео.
Если указана опция -l то имя файла будет создано из заголовка видео.
Если указана опция -t то имя файла будет создано из заголовка видео, но из него будут оставлены только английские буквы и пробелы заменены на знак '_'.

0
Ваша оценка: Ничего

http://megosvalko.ru/soft/internet-i-kommunikacii/351-orbit-downloader-3005-portable-multilingual.html - лучшая и самая удобная прога для скачивания видео и аудио с тюбов, контакта, мейла и др сайтов

есть простой вариант для скачивания видео с YouTube после скачки программа автоматически конвертит файл в нужный формат (задается в настройках). программа распространяется свободно...вот ссылка кому надо

http://depositfiles.com/files/h9avuum22

Скриптик на Питоне... Не знаю, как-то не люблю с ним связываться... Юзаю шелловский скриптик (где-то в Сети нашел, добавил опцию ручного задания имени):

#!/bin/sh
 
if  (("${#}" <= "1")) ;
then
   {
   echo "example: ${0} youtube_url";
   echo "or example: ${0} youtube_url filename.flv";
   exit 1;
   }
fi
 
 
BASEURL="http://youtube.com/get_video.php?";
ORIGURL="${1}";
TMPFILE="$(mktemp)";
 
echo " + search file name...";
wget -q -c -O "${TMPFILE}" "${ORIGURL}";
if &#91; "${?}" != "0" &#93;;
then
    {
    echo " - Error";
    exit 1;
    }
fi
 
TITLE=$(cat ${TMPFILE} | grep '&title=' | sed -e 's/.*title=//g' | sed -e "s/'.*//g");
T=$(cat ${TMPFILE} | grep 'video_id' | grep '&t=' | sed -e 's/.*\&t=//g' | sed -e 's/\&.*//');
V=$(echo ${ORIGURL} | sed -e 's/.*\?v\=//g' | sed -e 's/\&.*//g');
rm "${TMPFILE}" &> /dev/null;
 
 
if &#91; "${2}" != "" &#93;;
then
    {
    echo "Manual naming.";
    echo " + download file \"${2}\"...";
    wget -q -c -S -O "${2}.flv" "${BASEURL}video_id=${V}&t=${T}";
    }
else
    {
    echo "Auto naming";
    echo " + download file \"${TITLE}\"...";
    wget -q -c -S -O "${TITLE}.flv" "${BASEURL}video_id=${V}&t=${T}";
    }

Без указания имени - пытается "выудить" его из заголовка ролика на youtube.
Указывать желаемое вручную - явно указывая расширение .flv.

а у вас fi в конце пропущен Ж:-P
но само по себе хороший пример.
вот подправил немного, убрал башизмы и всякоразно

#!/bin/sh
 
if  [ "${#}" -lt "1" ]; then
   echo "example: ${0} youtube_url"
   echo "or example: ${0} youtube_url filename.flv"
   exit 1
fi
 
 
BASEURL="http://youtube.com/get_video.php?"
ORIGURL="${1}"
TMPFILE="$(mktemp)"
 
if ! wget -q -c -O "${TMPFILE}" "${ORIGURL}"; then
    echo " - Error"
    exit 1
fi
 
TITLE=$(sed -e '/&title=/!d;s/.*title=//g;'"s/'.*//g;"'s/[^a-zA-Z0-9._]/-/g;s/--*/-/g' ${TMPFILE})
T=$(    sed -e '/video_id/!d' -e '/&t=/!d' -e 's/.*\&t=//g' -e 's/\&.*//' ${TMPFILE})
V=$(echo ${ORIGURL} | sed -e 's/.*\?v\=//g' -e 's/\&.*//g')
rm -f "${TMPFILE}"
 
wget -c -S -O "${2:-$TITLE}.flv" "${BASEURL}video_id=${V}&t=${T}"

Ой!! Скопинедопастил %-)) За компактизацию спасибо, опробую как-нибудь.

Недавно появился букмарклет, который на страничке ютуба, вставляет ссылку по которой можно скачать то же видео, только в формате мп4 и лучшего качества. А можно это перенести в cli?
http://googlesystem.blogspot.com/2008/04/download-youtube-videos-as-mp4-files.html

аа, и желательно в wget передавать.

$ man youtube-dl
...
       -g, --get-url
          print final video URL only
...
       -b, --best-quality
          try to download the best quality version

скачать в лучшем качестве

скачать в лучшем качестве через wget (зачем правда не понятно Ж:-)

$ youtube-dl -b -g http://www.youtube.com/watch\?v\=FOnBFfhGvf | xargs wget

--
Signature invent in progress 24% ##........

а зачем ставить еще один пакет если можно тянуть вгетом?

для того что бы тянуть wget нужно узнать нужный url у youtube. для этого должен быть скрипт который качает как минимум инфрмацию с двух адресов, парсит это дело и получает нужный урл. и youtube-dl и есть такой скрипт

--
Signature invent in progress 24% ##........

а clive не только youtube умеет ;)

попробуйте адрес ковырну - быстрее в сто раз! качать ручками как тут http://websofthelp.ru/infchan/102--you-tube.html

В генту тоже есть ;-)

Спасибо!

Спасибо авторам за эту программу, очень интересная

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.