Скрипт для скачивания с rutube.ru

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
Fangelion
Сообщения: 112
ОС: Debian GNU/Linux

Скрипт для скачивания с rutube.ru

Сообщение Fangelion »

Примерно с начала 2010 года рутуб начал переводить выдачу контента своих серверов с обычного HTTP протокола на RTMP. Протокол заковыристый, но все же поддающийся грабежу. Существует утилита для скачивания с рутуб видео, это rtmpdump. О ней я узнал отсюда.
Там же есть еще несколько программ, но они все под виндовс.
Вобщем утилита то есть, но доставать куски ссылок для обязательных переменных, которые она принимает, очень утомительно. А т.к. на линуксе я вкорень обленился, то решил наваять скрипт себе в помощь.
Сам скрипт:

Код: Выделить всё

#!/bin/bash
#Скрипт для скачивания роликов с сайта Rutube.ru
#Принимает ссылку на страницу с видео. на выходе получаем файл output_videoN.flv
#Если в каталоге уже есть файл с таким именем, то N увеличивается на 1

##В зависимостях программа rtmpdump и bash
##Я не делал проверку на наличие программы у вас

#e-mail: fangel.btr@gmail.com
#Автор: FAngel
#Релиз: 2.04.2011
#Версия: 1.0


target=$( echo "$1" | cut --delimiter='=' -f 2 )
target='http://bl2.rutube.ru/'"$target"'.xml'
s=$( wget -q -O - $target )
target=$( expr match "$s" '.*\(rtmp.*\)\]\].*' )
link=$(echo "$target" | cut --delimiter='/' -f 1,2,3)
link=$link"/"
target=$(echo "$target" | cut --delimiter='/' -f 4-)
app=$(expr match "$target" '\(.*\)mp4:.*')
app=$app
playpath=$(expr match "$target" '.*\(mp4:.*\)')
live=''
if [[ $app = 'vod/' ]]
then
    live='--live'
fi

echo -e "$link \n $app \n $playpath"

outn="output_video0.flv"
n=0
while [ 1 ]
do
if [[ -e "$outn" ]]
then
    n=$(expr $n + 1)
    outn="output_video"$n".flv"
else
    break
fi
done

echo "@@@@@ Use $outn"
rtmpdump --rtmp "$link" --app "$app" --swfUrl "http://rutube.ru/player.swf" --playpath "$playpath" --flv "$outn" "$live"


Переходим в эмуляторе терминала в нужную папку и запускаем наш скрипт которому скармливаем ссылку на страницу с видео.
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение sspphheerraa »

Как альтернатива (более универсальный способ), использовать оперу и ее кеш. Открыть страницу с видео в ней и подождать пока все видео загрузится (полоса прогресса). Далее открываем папку с кешем (где она находится смотрим на вкладке "About Opera") и ищем самый большой файл. Проверяем его например мплеером (он или не он), если он - сохраняем себе :)

ссори за оффтоп
Sspphheerraa
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 5145
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение /dev/random »

sspphheerraa писал(а):
02.04.2011 09:59
Как альтернатива (более универсальный способ), использовать оперу и ее кеш. Открыть страницу с видео в ней и подождать пока все видео загрузится (полоса прогресса). Далее открываем папку с кешем (где она находится смотрим на вкладке "About Opera") и ищем самый большой файл. Проверяем его например мплеером (он или не он), если он - сохраняем себе :)

А оно точно работает с _ru_tube? Там rtmp используется, я сильно сомневаюсь, что браузеры умеют его кешировать.
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Скрипт для скачивания с rutube.ru

Сообщение t.t »

Если уж говорить о браузерах, то есть отличный плагин к огнелису -- UnPlug. Только что проверил: с рутуба видео сохраняет. Это гораздо более прямое решение, чем ручное выковыривание из кеша проприетарного браузера.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Скрипт для скачивания с rutube.ru

Сообщение drBatty »

у мну вот такой скрипт для флешей

Shell

$ cat save_flash.sh #!/bin/sh # каталог, в который грузим файл TD="$HOME/Загрузки" # расширение EXT=".flv" # браузер BR="seamonkey" lsof | sed -rn "s%^$BR\s+([0-9]+)\s+\w+\s+([0-9]+)u\s+.*/tmp/(Flash\w+)\s+\(deleted\)$%touch $TD/\3$EXT \&\& dd if=/proc/\1/fd/\2 of=$TD/\3$EXT bs=4096 \&\& file $TD/\3$EXT%e;T;p"



наверное и для этих целей пойдёт...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение sspphheerraa »

/dev/random писал(а):
02.04.2011 10:48
sspphheerraa писал(а):
02.04.2011 09:59
Как альтернатива (более универсальный способ), использовать оперу и ее кеш. Открыть страницу с видео в ней и подождать пока все видео загрузится (полоса прогресса). Далее открываем папку с кешем (где она находится смотрим на вкладке "About Opera") и ищем самый большой файл. Проверяем его например мплеером (он или не он), если он - сохраняем себе :)

А оно точно работает с _ru_tube? Там rtmp используется, я сильно сомневаюсь, что браузеры умеют его кешировать.

Да, rtmp похоже таки не умеют
Sspphheerraa
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Скрипт для скачивания с rutube.ru

Сообщение t.t »

sspphheerraa писал(а):
03.04.2011 10:31
/dev/random писал(а):
02.04.2011 10:48
sspphheerraa писал(а):
02.04.2011 09:59
Как альтернатива (более универсальный способ), использовать оперу и ее кеш. Открыть страницу с видео в ней и подождать пока все видео загрузится (полоса прогресса). Далее открываем папку с кешем (где она находится смотрим на вкладке "About Opera") и ищем самый большой файл. Проверяем его например мплеером (он или не он), если он - сохраняем себе :)

А оно точно работает с _ru_tube? Там rtmp используется, я сильно сомневаюсь, что браузеры умеют его кешировать.

Да. Развейте сомнения.

Я таки не понимаю: зачем устраивать танцы с бубном вокруг оперного кеша, если в UnPlug всё работает?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение sspphheerraa »

А я не понимаю о каких бубнах вы говорите?
Жди пока загрузится и забирай файл в папке кэша
Sspphheerraa
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Скрипт для скачивания с rutube.ru

Сообщение t.t »

sspphheerraa писал(а):
07.04.2011 18:26
А я не понимаю о каких бубнах вы говорите?
Жди пока загрузится и забирай файл в папке кэша

Вот прям так и забирай... А найти его среди сотен или тысяч файлов в той же "папке"? Не понимаю всё же, зачем себе лишние проблемы придумывать.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Скрипт для скачивания с rutube.ru

Сообщение drBatty »

t.t писал(а):
07.04.2011 18:29
Вот прям так и забирай...

угу. прям так и забирай. Только у меня он удалённый, и виден лишь в /proc/PID/fd/, или командой lsof :-(

да, забирать его надо командой dd.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Скрипт для скачивания с rutube.ru

Сообщение t.t »

Первый файл -- из кеша, второй -- скачанный unplug-ом с той же страницы:

Код: Выделить всё

t $ find .mozilla/firefox/*.default/Cache/ -type f -mmin -30 | xargs file | grep 'Macromedia Flash' | cut -d: -f1 | xargs ls -l
-rw------- 1 t t 474305 Апр  8 12:08 .mozilla/firefox/qczf176y.default/Cache/2/D5/B5303d01
t $ ll tmp/1.flv
-rw-r--r-- 1 t t 21263957 Апр  8 12:21 tmp/1.flv

Ещё вопросы будут?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Скрипт для скачивания с rutube.ru

Сообщение drBatty »

t.t писал(а):
08.04.2011 13:25
Ещё вопросы будут?

$ help alias

:-)

PS: только не говорите мне, что вам так сложно скопировать этот однострок в свой ~/.bashrc
Может кому-то плагин и проще скачать, но только не вам...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение sspphheerraa »

t.t писал(а):
07.04.2011 18:29
sspphheerraa писал(а):
07.04.2011 18:26
А я не понимаю о каких бубнах вы говорите?
Жди пока загрузится и забирай файл в папке кэша

Вот прям так и забирай... А найти его среди сотен или тысяч файлов в той же "папке"?

если для вас найти файл размером в несколько мегабайт среди тысячи файлов по 50-100КБ действительно очень сложно, то... да, вам таким способом нельзя пользоваться категорически
Sspphheerraa
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Скрипт для скачивания с rutube.ru

Сообщение drBatty »

sspphheerraa писал(а):
08.04.2011 18:21
если для вас найти файл размером в несколько мегабайт среди тысячи файлов по 50-100КБ

ну вот...

Код: Выделить всё

#!/bin/sh

CACHE_DIR=".mozilla/firefox/*.default/Cache/"

FILE_LIST=`mktemp`

find $CACHE_DIR -type f -size +300k >$FILE_LIST

while read NAME; do
    FILE_TYPE=`getfattr -n user.mime_type $NAME 2>/dev/null | sed -r '/^user.mime_type="/!d;s///;s/"$//'`
    if [ -z "$FILE_TYPE" ]; then
        # расширенные атрибуты не поддерживаются, или тип неизвестен
        FILE_TYPE=`file $NAME`
        FILE_TYPE="${FILE_TYPE#*: }"
        echo "FILE_TYPE: $FILE_TYPE"
        setfattr -n user.mime_type -v "$FILE_TYPE" $NAME
    fi
    if [ "$FILE_TYPE" != "${FILE_TYPE#Macromedia Flash *}" ]; then
        N="${NAME##*/}"
        echo "Сохранение файла $N ($FILE_TYPE)..."
        cp $NAME $N
        setfattr -n user.mime_type -v "$FILE_TYPE" $N
    fi
done <$FILE_LIST

rm $FILE_LIST
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение sspphheerraa »

О Господи, сортировку по размеру в файловом менеджере кликнул и все, нужный файл сразу виден (первый по списку)
или вам нужено консольное решение? но тогда зачем вам флеш в консоли?
Sspphheerraa
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Скрипт для скачивания с rutube.ru

Сообщение drBatty »

sspphheerraa писал(а):
08.04.2011 21:21
или вам нужено консольное решение? но тогда зачем вам флеш в консоли?


вы не поняли - тыкаете в вашем любимом ФМ на скрипте, а он сохраняет.

можно ещё расширения добавить, для миниатюр (а они для флеша делаются?)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 5145
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение /dev/random »

sspphheerraa писал(а):
08.04.2011 21:21
О Господи, сортировку по размеру в файловом менеджере кликнул и все, нужный файл сразу виден (первый по списку)
или вам нужено консольное решение? но тогда зачем вам флеш в консоли?

Не флеш, а видео. Лучше, если без флеша.
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение sspphheerraa »

ну да, видео я и имел в виду, файлы .flv и .mp4
Sspphheerraa
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Скрипт для скачивания с rutube.ru

Сообщение t.t »

drBatty писал(а):
08.04.2011 13:40
t.t писал(а):
08.04.2011 13:25
Ещё вопросы будут?

$ help alias

:-)

PS: только не говорите мне, что вам так сложно скопировать этот однострок в свой ~/.bashrc
Может кому-то плагин и проще скачать, но только не вам...

Т.е. то, что в кеше оказался совсем не тот файл, Вас совершенно не смутило? (:

sspphheerraa писал(а):
08.04.2011 18:21
t.t писал(а):
07.04.2011 18:29
sspphheerraa писал(а):
07.04.2011 18:26
А я не понимаю о каких бубнах вы говорите?
Жди пока загрузится и забирай файл в папке кэша

Вот прям так и забирай... А найти его среди сотен или тысяч файлов в той же "папке"?

если для вас найти файл размером в несколько мегабайт среди тысячи файлов по 50-100КБ действительно очень сложно, то... да, вам таким способом нельзя пользоваться категорически

Я чуть ниже наглядно продемонстрировал, что там этого файла может и вообще не быть.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение sspphheerraa »

Я заметил, что есть на рутубе есть "разное видео" или "разные ссылки" если можно так выразиться
С одих в кеш скачивается нормально, а с других - скачивается четверть и останавливается (если воспроизведение пододвинуть ближе к этому месту, то скачивается дальше, но тоже на определенный уровень). Я так понимаю сабж именно об этом.

Беру свои слова обратно, но я действительно не сталкивался с таким видео, в том числе и на рутубе...
Sspphheerraa
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Скрипт для скачивания с rutube.ru

Сообщение t.t »

sspphheerraa писал(а):
09.04.2011 14:56
Я заметил, что есть на рутубе есть "разное видео" или "разные ссылки" если можно так выразиться
С одих в кеш скачивается нормально, а с других - скачивается четверть и останавливается (если воспроизведение пододвинуть ближе к этому месту, то скачивается дальше, но тоже на определенный уровень). Я так понимаю сабж именно об этом.

Беру свои слова обратно, но я действительно не сталкивался с таким видео, в том числе и на рутубе...

Сравните размер двух файлов из моего позапрошлого поста. Там разница в двадцать раз. Это не четверть, это плейер.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение sspphheerraa »

под "четвертью" я имел в виду четверть полосы прогресса видео
Sspphheerraa
Спасибо сказали:

Аватара пользователя
Fangelion
Сообщения: 112
ОС: Debian GNU/Linux

Re: Скрипт для скачивания с rutube.ru

Сообщение Fangelion »

sspphheerraa писал(а):
07.04.2011 18:26
А я не понимаю о каких бубнах вы говорите?
Жди пока загрузится и забирай файл в папке кэша

rtmp качается кусками, его просто нет в кеше полностью либо частично, нет отдельного процесса чтоб спереть оттуда как писали на многих ресурсах.

t.t
когда я гуглил чем скачать с рутубы советовали все что угодно, Но все советы с кешем, отдельными процессами, качалками оказались нерабочими. Потом уже нашел по самому протоколу программы. И уже намного позже узнал что mplayer вроде как умеет этот протокол. Но т.к. сначала был rtmpdump то я не стал перемучивать скрипт на mplayer
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение sspphheerraa »

Fangelion писал(а):
10.04.2011 21:44
И уже намного позже узнал что mplayer вроде как умеет этот протокол. Но т.к. сначала был rtmpdump то я не стал перемучивать скрипт на mplayer

так что, получается для проигрывания рутубе, флеш-видео как таковой и не нужен... достаточно кмплеер плагин к конкверору
Sspphheerraa
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 5145
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение /dev/random »

sspphheerraa писал(а):
11.04.2011 11:53
так что, получается для проигрывания рутубе, флеш-видео как таковой и не нужен... достаточно кмплеер плагин к конкверору

Нет, это не совсем так. То, что mplayer умеет rtmp, не означает, что сайт будет его подгружать и передавать ему ссылку. Он будет подгружать swf, а при невозможности - ругаться. Чтобы проиграть rtmp mplayer'ом, нужно как-то передать ему ссылку. А для этого нужно её получить, способом, специфичным именно для этого сайта. Например, приведённым выше скриптом.
Спасибо сказали:

Аватара пользователя
Fangelion
Сообщения: 112
ОС: Debian GNU/Linux

Re: Скрипт для скачивания с rutube.ru

Сообщение Fangelion »

Четко работает народ на rutube.ru Они уже сделали динамическую смену rtmp ссылок, которые меняются при каждом обращении к серверу, А т.к. весь поток за раз не скачивается, то всякий раз придется обновлять rtmp ссылку, как применить это к rtmpdump я не знаю. Указаный плагин работает через тот же rtmpdump, а mplayer совсем не видит видео.
rtmp ссылки такого вида: rtmp://video-1-6.rutube.ru/rutube_vod_1/mp4:vol25 являются динамическими.
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Скрипт для скачивания с rutube.ru

Сообщение sspphheerraa »

Fangelion писал(а):
20.04.2011 22:48
А т.к. весь поток за раз не скачивается, то всякий раз придется обновлять rtmp ссылку, как применить это к rtmpdump я не знаю.

А как в плеере это реализовано? он же как-то обновляет ссылку когда проигрывается видео... Да и к тому же, можно сделать реализацию по типу захвата видео, т.е. видео играется и одновременно поток на диск сохраняется.

зы Да, реакция оперативная, похоже эту тему мониторят владельцы.
Sspphheerraa
Спасибо сказали:

Аватара пользователя
Fangelion
Сообщения: 112
ОС: Debian GNU/Linux

Re: Скрипт для скачивания с rutube.ru

Сообщение Fangelion »

sspphheerraa
Незнаю я как в плеере реализовно. Очень лень ковырять. Позже, когда уляжется бдительность, поломаю голову.

Эх. не досмотрю сериал((
Спасибо сказали: