alxrt 24.03.2011 11:01

СкриптыПолучение прямых ссылок на видео вконтакте

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

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
#vkget dirty version

tmpf=`mktemp`
curl -so $tmpf $1
uid=$(cat $tmpf|egrep -o '\\"uid\\":\\"<0-9>+\\"'|egrep -o "<0-9>+"|head -n1)
vtag=$(cat $tmpf|egrep -o '\\"vtag\\":\\"<0-9a-zA-Z>+-?\\"'|egrep -o "<0-9a-zA-Z>+-?"|grep -v "vtag")
vkhost=$(cat $tmpf|egrep -o '\\"host\\":\\".+\\"'|egrep -o '<a-z0-9>+(vkontakte|vkadre)\.ru'|head -n1)
vkid=$(cat $tmpf|egrep -o '\\"vkid\\":\\"<0-9>+\\"'|egrep -o "<0-9>+"|head -n1)

if < -n "$vkhost" >; then
if < "$uid" != "0" >; then

if < -z "$(curl -sI "http://$vkhost/u$uid/video/$vtag.flv"|grep 404)" >; then echo "http://$vkhost/u$uid/video/$vtag.flv";fi
if < -z "$(curl -sI "http://$vkhost/u$uid/video/$vtag.240.mp4"|grep 404)" >; then echo "http://$vkhost/u$uid/video/$vtag.240.mp4";fi
if < -z "$(curl -sI "http://$vkhost/u$uid/video/$vtag.260.mp4"|grep 404)" >; then echo "http://$vkhost/u$uid/video/$vtag.360.mp4";fi
if < -z "$(curl -sI "http://$vkhost/u$uid/video/$vtag.480.mp4"|grep 404)" >; then echo "http://$vkhost/u$uid/video/$vtag.480.mp4";fi
if < -z "$(curl -sI "http://$vkhost/u$uid/video/$vtag.720.mp4"|grep 404)" >; then echo "http://$vkhost/u$uid/video/$vtag.720.mp4";fi
else
if < -z "$(curl -sI "http://$vkhost/assets/videos/$vtag$vkid.vk.flv"|grep 404)" >; then echo "http://$vkhost/assets/videos/$vtag$vkid.vk.flv";fi
fi
fi

rm $tmpf
</a-z0-9>



Использование:
1
./vkvget "http:/vnontate.none/video12345678_87655411"



P.S.
Доменное имя изменено намеренно.
За работоспособность не ручаюсь, но буду благодарен, если пришлете в личку ссылки на видео, которые в браузере открываются, а скрипт не может получить ссылку.
Для работы нужен curl.


Тэги: bash vkontakte
+ 6 -
Похожие Поделиться

sumboid 24.03.2011 13:58 #
Офигенно! Спасибо :)
h31 24.03.2011 14:00 #
http://saahriktu.org/ru/utils.html
Vacuumvideoscript. Вроде бы поддерживал ВКонтакте.
alxrt 24.03.2011 14:35 #
Огромное спасибо за наводку на этот скрипт!
Впрочем, из вконтакта он сможет выкачать только старые видяшки, новые, в т.ч. те, которые в HD он не возьмет.
andreika 25.03.2011 09:52 #
ПАсибо украл Ваш скрипт.
Vcoder 27.03.2011 23:04 #
Чуть обновил 8-ю строчку, чтоб и с vk.com работало:

vkhost=$(cat $tmpf|egrep -o '\\"host\\":\\".+\\"'|egrep -o '+((vkontakte|vkadre)\.ru|vk\.com)'|head -n1)
garry 29.03.2011 00:25 #
идея прикольная...а так есть расширение для хромиума, которое отображает ссылку "Скачать" на странице с видео Ж-)
mhspace 29.03.2011 00:40 #
Хотелось бы полноценного (ну или почти) аналога youtube-dl. Чтобы по ссылке на страницу с видео скачивал само видео в лучшем доступном качестве.
alxrt 29.03.2011 13:32 #
Изначально именно так и было (скрипт не выдавал адреса, а качал файлы сразу).
Но потом, я решил, что мои предпочтения могут отличаться от предпочтений других пользователей: кто-то качает wget-ом, кто-то curl-ом, а кто-то - вообще через aria2c.
Кроме того, может потребоваться обработать кучу виде (то бишь получить кучу прямых ссылок).
Впрочем, думаю скоро выложить "not so dirty version".
effJkeee 23.05.2012 14:15 #
Может кто нить сделать данный скрипт на PHP? и что бы ссылка принималась вида http:/vnontate.none/video12345678_87655411
mealsforall 23.05.2012 22:30 #
У XBMC есть классный плагин VK-xbmc, делает почти то же самое.
mealsforall 24.05.2012 15:47 #
По-моему, движок сайта испортил код скрипта.
Повсюду if < >, и странное количество обратных слешей и кавычек.

Можно выложить куда-нибудь на pastebin?
rhineheart 06.08.2012 04:19 #
Скрипт на самом деле полезный, не считая того, что код изначально подпорчен движком сайта. Но возможно его стоит немного переделать. Дело в том, что проверяя ссылки на работоспособность, Ваш скрипт пробует найти 404'ую ошибку, что в принципе логично. Но на самом деле он ищет по всем http заголовкам ЧИСЛО - "404". А оно с некоторой вероятностью может оказаться в заголовке "Content-Length" или других, что приведёт к пропуску 100% рабочей ссылки. Хочу посоветовать, проверять не на наличие либо отсуцтвие 404'ой ошибки, что само по себе не говорит о наличии видео по этой ссылке, а на наличие "Content-Type:*video*". В общем как-то так.
rhineheart 06.08.2012 04:26 #
Прошу прощения, не ЧИСЛО, а последовательность символов - "четыре" "ноль" "четыре".