Но все хорошо когда есть GUI'ёвый браузер и доступ к ресурсу, а когда нет такого? К примеру браузера нет под рукой, или аудиосистема подключена дома к основному компу на котором Linux, а сам лежишь в соседней комнате с ноутом ... ?
Одним словом нужно было что то типа из под консоли (командной строки)!
Дано: Linux: curl, bash, ну и mplaeyr, если еще и уровнем звука управлять то alsamixer, а если еще и непрерывно от сессии, то еще и screen
Решение:
1. Ставим вышеперечисленные пакеты:
sudo apt-get install curl mplayer screen2. Создаем исполняемый файлик ...
или
sudo urpmi curl mplayer screen
touch vkplay.sh && chmod a+x ./vkplay.sh3. Открываем его своим любимым редактором и вставляем нижеписанный код:
#!/bin/bash
# Меняем на свой логин/пароль
EMAIL=your@mail.net
PASS=your_super_password
TMPC=/tmp/~vkcookie
TMPG=/tmp/~vkget
echo Получаем куки ...
gets=`curl -s --data "email=$EMAIL&pass=$PASS" http://login.vk.com/?act=login | egrep -o \([a-z]\|[0-9]\){20\,}`
curl -s --cookie-jar $TMPC --data "s=$gets&op=slogin&redirect=1&expire=0&to=0" http://vkontakte.ru/login.php
IFS=$'\n'
OFFSET=0
# И поехали по списку "Мои Аудиозаписи"...
while [ ! $OK ]; do
URL=http://vkontakte.ru/audio.php?offset=$OFFSET
curl -s --cookie $TMPC -o $TMPG $URL
PL=(`cat $TMPG | grep -i title_wrap | grep -v lyricsLink | sed -r "s/<([^<]*)>|(\&\#[0-9]{2,4};)|^\s*//g" | sed -r "s/[ ]{2,}/ /g"`)
PLC=${#PL[@]}
if [ $PLC \> 0 ]; then
UL=(`cat $TMPG | grep -o 'http.*mp3'`)
ULC=${#UL[@]}
for ((n=0; n < $PLC; n++))
do
PL[$n]=`echo ${PL[$n]} | sed -r 's/[ \t]*$//'`
if [ -n "${PL[$n]}" ]; then
echo " $(( $OFFSET+$n )). ${PL[$n]}"
# Собственно играем нашу песенку ... Опция "-mixer /dev/mixer" говорит mplayer'у играть на звуковой той машины на которой запускается он сам ...
mplayer -msglevel all=1 -mixer /dev/mixer ${UL[$n]}
fi
done
OFFSET=$(( $OFFSET+$PLC ))
else
echo Всё! Всё спели, можно и отдохнуть чутку...
OK=1
fi
4. Сохранились, не забыли указать свой логин и пароль, и даже запустились ... и о счастье! запело шарманка наша ... но мы та хотим из другой комнаты и вообще не быть привязанными ...
4.1 запускаем терминальчик по ssh, кто что, xterm, konsole, putty, etc ...
4.2 в нем screen (выход из него сочетание: ctrl+a, d) (обратно подключится к скрину: screen -rd)(если у тебя уже запущено более одного скрина, как переконекчиваться по номеру сессии смысла тебе объяснять уже нет ;) )
4.3 ну и запускаем наше чудо-файлик
4.4 громкостью управлять или самим mplayer'ом (подробности man mplayer), или запускаем alsamixer ... кому что по душе =)
Примечания:
- Листать вперед/назад фишки нет ... но додумать можно, средствами формирования сначала плейлиста а потом скармливания мплаеру)
- Пропустить песню: Ctrl+C, после чего заиграет следующая из списка
- По крону (crontab), вообщем, классный будильник получился ))


пропущен done в конце скрипта, ну и у меня не взлетело - разбираюсь почему сейчас
ОтветитьУдалить