Yota Samsung SWC-U200 in Ubuntu Linux

Установка предельно проста (проводил на 11.10):

git clone https://github.com/ago/madwimax.git
cd madwimax
autoreconf --install
sudo apt-get install libusb-1.0-0-dev liblua5.1-0-dev asciidoc docbook2x
./configure
make
sudo make install

Втыкаем модем, проверяем:

sudo ifconfig
#должен появиться wimax0 или по типу того

Заходим на Yota.ru, жмём Личный кабинет, там “привязать устройство” и всё! Покупка-продажа модема весьма проста, не надо никаких симок ни кодов. Нужен просто модем. Больше ничего. Никаких договоров. Удобно. Единственное – при привязке спрашивают как зовут, где живёшь, №паспорта. В остальном хорошо! Посмотрим, что за качество связи у Yota, на что жалуются чуть более чем 100% моих друзей 🙂

Speedtest:
speedtest yota

Настройка трекбола Logitech TrackMan Marble Mouse в Ubuntu Linux


В статье описывается настройка трекбола Logitech TrackMan Marble с возможностью прокрутки страниц. Основной ref тут (документация сообщества Ubuntu) и тут.

Добавьте следующий код в

/usr/share/X11/xorg.conf.d/11-evdev-quirks.conf

и перезапусте X Window сервер:
(или в /etc/X11/xorg.conf.d/50-marblemouse.conf, предварительно выполнив

gsettings set org.gnome.settings-daemon.plugins.mouse active false

)

Section "InputClass"
        Identifier  "Marble Mouse"
        MatchProduct "Logitech USB Trackball"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
        Option "ButtonMapping" "1 8 3 4 5 6 7 2 9"
        Option "EmulateWheel" "true"
        Option "EmulateWheelButton" "8"
        Option "ZAxisMapping" "4 5"
        Option "XAxisMapping" "6 7"
        Option "Emulate3Buttons" "true"
EndSection

Я обычно предпочитаю ставить ButtonMapping таким, как указано выше, но некоторые предпочитают вот такой:

Option "ButtonMapping" "1 2 3 4 5 6 7 8 9"

С моим ButtonMapping я могу легко закрывать ненужные вкладки в браузере, использовать функцию копирования-вставки, и то, и другое с помощью малой левой клавиши. С альтернативным ButtonMapping теряются “возможности средней кнопки” и малая левая кнопка работает как кнопка “назад” при нажатии.

Обновление: работает также в Ubuntu 13.10, 14.04, Debian Squeezy.

Приглашения, рассадочные карточки в Libreoffice

Потребовалось мне тут как-то оформить рассадочные карточки для свадьбы. Для своей свадьбы имена писались на каждую карточку вручную, для чужой свадьбы каждое имя стало писать лень и я решил это дело оптимизировать. С помощью данного способа можно также легко создать кучу персональных приглашений на мероприятие, напечатать почтовые конверты для многих адресатов и др. Задача решалась в свободном офисном приложении LibreOffice Writer (3.3.3), действия в OpenOffice аналогичные.

  1. Для начала выбрал красивый шрифт! Мне понравился Corinthia Regular TrueType Font.
    Шрифт Corinthia
    Шрифт устанавливал в Ubuntu через консоль следующей командой:

    sudo cp CORINTHI.TTF /usr/share/fonts/truetype/openoffice/
    

    Кнопку “Install Font” при кликании на шрифт сначала не разглядел, но думаю должно заработать и так.

  2. После этого создал новый документ в Writer:
    Новый документ в LibreOffice Writer
  3. Установил нужные параметры страницы – ориентацию, размер бумаги, поля
    Размеры полей
  4. Создал таблицу 3х1
    Создание таблицы
  5. После этого преобразовал список имён из такого вида:
    Иванов Иван Иванович
    Петров Пётр Петрович
    Сидоров Сидор Сидорович

    в удобный вид для дальнейшего использования макросами LibreOffice:

    "Иванов Иван Иванович", "Петров Пётр Петрович", "Сидоров Сидор Сидорович"

    Т.е. записал все имена в строчку через запятую и каждое имя в кавычках.
    Имена записывал в строчку с помощью VIM и следующих простых команд:

    :%s/^/"/g
    :%s/$/"/g
    :%s/\n/,/g
    :%s/"\ /"/g
    :%s/\ "/"/g
    :%s/"\ /"/g
    :%s/,$//g
    
  6. По умолчанию макросы отключены в LibreOffice и являются экспериментальной функцией. Включить макросы можно с помощью нажатия галочки в меню:
    “Tools | Options… | General | Enable experimental”
  7. Далее был написан следующий индусский код, который был записан в новый макрос Writer:
    sub Main
    dim document   as object
    dim dispatcher as object
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dim col as integer
    dim row as integer
    dim args4(0) as new com.sun.star.beans.PropertyValue
    
    myarray=Array("Иванов Иван Иванович", "Петров Пётр Петрович", "Сидоров Сидор Сидорович")
    row=0
    Do while row<(UBound(MyArray) \ 3)+1
            col=0
            Do While col<3
                    dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
                    col=col+1
            Loop
            args4(0).Name = "Text"
            col=0
            Do While col<3
                    args4(0).Value = myarray(row*3+col)
                    dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args4())
                    dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
                    col=col+1
            Loop
            row=row+1
    Loop
    end sub
    
  8. Далее при установке курсора в первую ячейку таблицы и активации макроса Иванов, Петров и Сидоров автоматически помещались в таблицу.
  9. Остаётся только изменить размеры ячеек и выбрать нужный шрифт и его размер
    Размеры ячеек

Вот, что получилось в конечном итоге:
Вот, что получилось в конечном итоге

В моём случае 17 листов имён людей создались за пятнадцать-двадцать кликов мышкой!

Апплет индикатор погоды в Ubuntu 11.04 Unity


Если вы также, как и я соскучились по старому доброму индикатору погоды, установить его в новом Unity интерфейсе можно так:

sudo add-apt-repository ppa:weather-indicator-team/ppa
sudo apt-get update
sudo apt-get install indicator-weather

Мне понравился больше индикатор от weather-indicator-team, но также можно установить индикатор от Лоренцо:

sudo add-apt-repository ppa:lorenzo-carbonell/atareao
sudo apt-get update
sudo apt-get install my-weather-indicator

Firefox 5 доступен в Ubuntu из PPA

На днях вышла на свет очередная версия популярного браузера Firefox, теперь уже пятая версия. Mozilla активно разрабатывает свой браузер и под Linux, т.к. он входит в большинство дистрибутивов предустановленным по умолчанию. Благодаря этому Firefox 5 beta 2 уже доступна для установки под Ubuntu из PPA. Подключить PPA Firefox-next могут пользователи дистрибутивов Ubuntu 11.04 и 11.10.

Firefox 5.0

Для того, чтобы установить Firefox 5 beta 2 in Ubuntu необходимо подключить PPA Firefox-Next, для этого нужно открыть терминал и написать:

sudo add-apt-repository ppa:mozillateam/firefox-next

Затем ужно обновить репозитории следующей командой:

sudo apt-get update

После обновления репозиториев можно приступать к установке Firefox 5:

sudo apt-get install firefox

Если у вас уже был установлен Firefox 4, вы также можете воспользоваться командой обновления дистрибутива. Firefox 5 установится вместо вашего Firefox 4:

sudo apt-get upgrade

После можно пользоваться вашим свежеустановленным Firefox 5 beta 2 на вашей Ubuntu.

Установка rTorrent+ruTorrent на Ubuntu Server 10.10 Maverick Meerkat

Линки на продукты: rTorrent+ruTorrent на Ubuntu Server 10.10 Maverick Meerkat.

Имеем:

$ uname -a
Linux klisanor-srv 2.6.35-28-server #49-Ubuntu SMP Tue Mar 1 14:55:37 UTC 2011 x86_64 GNU/Linux
#prerequisites
sudo aptitude update && sudo aptitude upgrade && sudo aptitude install apache2 php5 libapache2-mod-php5 libapache2-mod-scgi
sudo echo "LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so" >> /etc/apache2/apache2.conf
SCGIMount /RPC2 127.0.0.1:5000 -> /etc/apache2/sites-available/default
sudo echo "scgi_port = localhost:5000" >> ~/.rtorrent.rc

Проблемы:

  1. ruTorrent требует для установки свежую xmlrpc-c
  2. Берём её из SVN, компилим libtorrent+rTorrent с новым xmlrpc-c

  3. Проблема библиотеки ncurses. Русские буквы вместо кириллицы в консоли отображаются непонятными символами-кракозябрами.
                                                       *** rTorrent 0.8.6/0.12.6 -  ***
        [View: main]
          Tracker: [Tried all trackers.]
           BBC_M-P~QM-PM-5M-PM-7M-Q~CM-PM- M-P~^M-Q~EM-PM->M-Q~BM-Q~K M-PM-=M-PM-0 M-P~RM-PM-5M-PM-4M-Q~LM-PM-<
                    done      894,7 MB Rate:   0,0 /   0,0 KB Uploaded:  3150,0 MB                 [   R: 3,52 high]
          Tracker: [Tried all trackers.]
           Davidenko_Egypt_xvid.avi
                    done     1264,9 MB Rate:   7,3 /   0,0 KB Uploaded:  5647,2 MB                 [   R: 4,46]  Tracker: [Tried all
        [Throttle off/off KB] [Rate  25,3/591,1 KB] [Port: 6944]                     [U 6/0] [D 36/0] [H 0/32] [S 1/48/768] [F 67/128]
    

    Вместо libncurses5-dev нужно ставить libncursesw5-dev. Правда, по дефолту rtorrent потом не собирается, поскольку заголовочные файлы лежат в нестандартной папке.

Полный guide по установке:

#remove old packages
sudo apt-get remove rtorrent libtorrent11 libxmlrpc-c3 libxmlrpc-c3-dev libxmlrpc-core-c3 libxmlrpc-core-c3-dev

#dev packages
sudo apt-get install checkinstall subversion build-essential make autoconf autotools-dev automake libtool libcurl4-openssl-dev libsigc++-2.0-dev pkg-config libncursesw5-dev

#fresh xmlrpc-c lib install
svn co https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced xmlrpc-c
cd xmlrpc-c
./configure --prefix=/usr
make
sudo checkinstall -D

#libtorrent install
cd ..
# svn co svn://rakshasa.no/libtorrent/trunk
# cd trunk
# cd libtorrent
wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.6.tar.gz
tar zxfv libtorrent-0.12.6.tar.gz
cd libtorrent-0.12.6
./autogen.sh
./configure --prefix=/usr
make
sudo checkinstall -D

#rtorrent install
cd ..
wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.6.tar.gz
tar zxfv rtorrent-0.8.6.tar.gz
cd rtorrent-0.8.6
./autogen.sh
CPPFLAGS="-I/usr/include/ncursesw/" ./configure --with-xmlrpc-c --prefix=/usr
make
sudo checkinstall -D

#rutorrent web-GUI
cd /var/www/
sudo svn co http://rutorrent.googlecode.com/svn/trunk/rutorrent
sudo chown -R  www-data:www-data /var/www/
sudo chmod -R  777 /var/www/rutorrent/share

#update rutorrent
cd /var/www/rutorrent
svn up

thnx to: isudo, zg

rTorrent autostart

sudo -s
wget http://libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh
mv rtorrentInit.sh /etc/init.d/
vim /etc/init.d/rtorrentInit.sh
#change line 34 user="user" to match your setup

sudo chmod +x /etc/init.d/rtorrentInit.sh
cd /etc/init.d/
sudo update-rc.d rtorrentInit.sh defaults

#now you can start it as a service by using
/etc/init.d/rtorrentInit.sh start

rtorrentInit.sh mirror

via rakshasa.no, unixguru.se, lostnihilist

Узнай, кто из друзей Вконтакте пользуется Twitter

Решил на досуге проверить, кто из друзей Вконтакте пользуется Twitter.

Вконтакте очень не любят, когда пользователи уходят покидают их сайт, поэтому не особо любят постинг статусов из других сервисов (частенько прикрывают пути постинга статусов twitter->vk), зато в обратную сторону – пожалуйста, пользуйтесь на здоровье.

Предположение: пользователь забрасывает вконтактик, пишет себе в профиль линк на свой акк в Twitter и уходит туда с головой. Статусы во вконтактике больше не пишет.

Задача: проверить, кто из друзей вконакте указал у себя в профиле линк на Twitter.

Реализация.
Вконтакте очень гордятся своей русскоязычной капчей, обычным wget-ом слить странички друзей и распарсить не получилось, пошёл в обход таким способом:

  1. получить список друзей;
  2. сгенерить тесты Selenium, открывающие страницы друзей и ищущих слово “Twitter”;
  3. пройтись по тестам.

Итак,

  1. Список друзей я получаю через userapi с помощью самопального приложения – жму кнопку “Войти в контакте” и потом сохраняю в текстовый файл friends.
  2. Далее с помощью bash-скрипта (лёгкий sed и while по друзьям) генерирую Selenium-тесты.
  3. #!/bin/bash
    while read vkfile; do
            out=`echo $vkfile | sed -e "s/http:\/\/vkontakte.ru\///g"`;
            export abc="
    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head profile=\"http://selenium-ide.openqa.org/profiles/test-case\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<link rel=\"selenium.base\" href=\"localhost\" />\n<title>$out</title>\n</head>\n<body>\n<table cellpadding=\"1\" cellspacing=\"1\" border=\"1\">\n<thead>\n<tr><td rowspan=\"1\" colspan=\"3\">$out</td></tr>\n</thead><tbody>\n<tr>\n        <td>open</td>\n        <td>$vkfile</td>\n        <td></td>\n</tr>\n<tr>\n        <td>click</td>\n        <td>link=показать подробную информацию</td>\n        <td></td>\n</tr>\n<tr>\n        <td>verifyTextPresent</td>\n        <td>twitter</td>\n        <td></td>\n</tr>\n</tbody></table>\n</body>\n</html>\n";
            echo $abc > $out;
    done < friends
    

    Для тех пользователей, которые установили у себя в профиле “не скрывать подробную информацию” тесты почти такие же:

    #!/bin/bash
    while read vkfile; do
            out=`echo $vkfile | sed -e "s/http:\/\/vkontakte.ru\///g"`;
            export abc="
    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head profile=\"http://selenium-ide.openqa.org/profiles/test-case\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<link rel=\"selenium.base\" href=\"localhost\" />\n<title>$out</title>\n</head>\n<body>\n<table cellpadding=\"1\" cellspacing=\"1\" border=\"1\">\n<thead>\n<tr><td rowspan=\"1\" colspan=\"3\">$out</td></tr>\n</thead><tbody>\n<tr>\n        <td>open</td>\n        <td>$vkfile</td>\n        <td></td>\n</tr>\n<tr>\n        <td>verifyTextPresent</td>\n        <td>twitter</td>\n        <td></td>\n</tr>\n</tbody></table>\n</body>\n</html>\n";
            echo $abc > $out;
    done < friends
    
  4. Прохожу 2 раза этими тестами (для пользователей у которых надо нажимать на кнопку “Показать подробную информацию” и для тех, у кого не надо).
  5. Добавляю все сгенерированные тесты в testSuite и жму кнопку “Play entire test suite”. Скорость ставлю низкую, чтоб не забанили и не было проблем с капчей. Картинки в Firefox отключаю.

    Получаю в окошке Selenium подсвеченные зелёным цветом строчки тех юзеров, кто обмолвился словечком “Twitter” у себя в профиле.

Из 369 моих друзей на 8 страницах было найдено слово “Twitter”, из этих восьми 5 человек (1,35% от всех друзей) – указали свои профили, остальные три – профили в подписках. Предположение, можно считать верным 🙂

Все исходники в одном zip.

Last.fm нахаляву в Ubuntu Linux


Warning: Trying to access array offset on value of type bool in /var/www/sandalov.org/blog/wp-content/themes/mantra/includes/theme-loop.php on line 249


Last.fm — интернет-проект музыкальной тематики, основным сервисом которого является сбор информации о музыке, которую слушает пользователь, и её каталогизация в индивидуальных и общих чартах. После того как собрана информация о той музыке, которую прослушали, пользователь получает радио персональных рекомендаций.

Когда-то во времена коммунизма Last.fm было бесплатно для всех. Можно было слушать сколько угодно. Но потом халява кончилась и доступ остался бесплатным только для таких стран, как USA, UK, Germany. Все остальные для прослушивания должны платить по $5 в месяц. Помаявшись с PayPal платежами, мои $3 ушли в никуда. Как заявляет сам PayPal они ушли на проверку моего счёта. Больше я их не видел 🙂 Позже, после того как мой PayPal был привязан, платёж просто не прошёл. После этого я не стал запариваться насчёт денег, а стал пользоваться с помощью Tor.

Tor (The Onion Router) — свободное программное обеспечение для реализации второго поколения так называемой «луковой маршрутизации». Это система, позволяющая устанавливать анонимное сетевое соединение, защищённое от прослушивания. Рассматривается как анонимная сеть, предоставляющая передачу данных в зашифрованном виде.

Tor можно спокойно настроить и под Windows, но речь далее в посте пойдёт исключительно про Linux. Для настройки связки “Ubuntu Lucid”->Tor (с выходным адресом в UK, US, Germany)->Last.fm было предпринято следующее:

В /etc/apt/sources.list добавляется новый репозиторий


Новый репо можно добавить либо с помощью обычного текстового редактора, либо же с помощью GUI: System –> Admin –> Software Sources. В зависимости от версии Ubuntu в файл добавляются 2 строчки

    deb http://deb.torproject.org/torproject.org <DISTRIBUTION> main
    deb-src http://deb.torproject.org/torproject.org <DISTRIBUTION> main
    

На следующем шаге необходимо добавить ключ для репозитория:

gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade

После того, как источник и его ключ добавлены, можно устанавливать Tor:

  • Ubuntu 9.10 (Karmic) и остальные более поздние версии:
sudo apt-get install tor tor-geoipdb
  • Ubuntu 9.04 (Jaunty) и более ранние версии Ubuntu
sudo apt-get install tor

Установка Privoxy

Одного Tor недостаточно, необходима служба, которая использует мощь анонимности Tor и преобразует в локальный проки-сервер.

sudo apt-get install privoxy

Конфигурация Privoxy

Добавить в файл /etc/privoxy/config в любое место строчку:

forward-socks4a / localhost:9050 .

Запуск служб

sudo /etc/init.d/tor start
sudo /etc/init.d/privoxy start

/* Check that the service is running on port 9050 */
netstat -a | grep 9050
/* You should see the following output: */
tcp 0 0 localhost:9050 *:* LISTEN

Установка Vidalia (не обязательный шаг)


Чтобы наглядно контролировать процесс работы Tor ставится GUI-оболочка Vidalia. Шаг для тех, кому не хочется контролировать Tor/Privoxy из консоли.

sudo apt-get install vidalia

Настройка Privoxy для Vidalia

Чтобы использовать Privoxy для Vidalia нужно убрать Tor и Privoxy из автозагрузки:

sudo update-rc.d -f tor remove
sudo update-rc.d -f privoxy remove

Настройка Vidalia

Проверьте, что присутствует путь Tor в строке Vidalia (vidalia->settings):

/usr/sbin/tor

Для запуска Privoxy при старте Vidalia необходимо создать такой скрипт:

exec gksu /etc/init.d/privoxy start

К примеру, вот так:

echo exec gksu /etc/init.d/privoxy start > ~/privoxyStart.sh

Скрипту даются права на выполнение:

chmod +x ~/privoxyStart.sh

И в строке “Start a proxy application when Tor starts” указывается путь до скрипта:

~/privoxyStart.sh

Для того, чтоб на выходе Tor был с компьютера UK, US, Germany необходимо настроить exit nodes.

vim ~/.vidalia/torrc

В конец файла прописываются Exit Nodes:

ExitNodes server1, server2, server3
StrictNodes 1

(Для старой версии StrictExitNodes)

Сервера берутся из списка “Карта сети Tor” в Vidalia либо из других открытых источников. Делается сортировка по стране и по Uptime.

Настройка клиента Last.fm


Настройки->подключение->настройки прокси. В поле прокси указывается:

127.0.0.1

Порт по умолчанию

8118

Успехов! 🙂

Скачивание песен vkontakte на Linux


Warning: Trying to access array offset on value of type bool in /var/www/sandalov.org/blog/wp-content/themes/mantra/includes/theme-loop.php on line 249

С помощью regexp можно просто скачнуть все песни: сохраняете страничку audio в текстовый файл и проходитесь по нему:

cat vk | grep -P -o  "http://cs.+?\.mp3" | xargs -tl -I _ wget _

Иногда бывает так, что песня в контакте называется правильно, а вот тег совершенно неправильный. Выход один – брать названия у Дурова.

Для этого написал на досуге маленький bash-скриптик script.sh упрощающий массовое скачивание песен из контакта.

script.sh:

#!/bin/bash
cat audio.html | egrep "mp3|title_wrap" > rename.sh
chmod 777 rename.sh
vim -s vk.sh
wget -i download.lst
sh rename.sh
rm rename.sh
rm download.lst

Рядом со скриптом лежит скрипт vk.sh для текстового редактора vim, который парсит страницу, получая названия песен и ссылки на них.

vk.sh:

:e ++enc=cp1251 rename.sh
:%s/\.mp3,.*/\.mp3/g
:%norm jdd
:%s/.*"\ value="//g
:norm Gdd
:w! download.lst
:norm uuu
:%s/^.*audio\///g
:%s/\ <\/span><span\ class="user">.*//g
:%s/^.*');\ return\ false">//g
:%s/<\/a><\/b>\ -\ <span\ class="title">/\ -\ /g
:%s/<a href=""\ onclick="Audio.showLyrics('.*;">//g
:%s/<\/a>//g
:%s/"/'/g
:%s/\//\ /g
:%s/?/\ /g
:%s/</\ /g
:%s/>/\ /g
:%s/\\/\ /g
:%s/\:/\ /g
:%s/*/\ /g
:%s/|/\ /g
:%s/mp3.*\n/mp3\ "/g
:%s/^/mv\ /g
:%s/\n/\.mp3"\r/g
:%s/\ -\ $//
:%s/&amp;/\&/g
:%s/"\ /"/g
:%s/"\ /"/g
:%s/\ .mp3"/.mp3"/g
:%s/\ .mp3"/.mp3"/g
:%s/\ \ -/\ -/g
:%s/\ \ -/\ -/g
:%s/-\ \ /-\ /g
:%s/-\ \ /-\ /g
:norm Gdddddd
:w! ++enc=utf-8 rename.sh
:q!

Для работы скрипта необходимо наличие установленного текстового редактора vim в системе.

Ubuntu:

sudo aptitude install vim

Процедура скачивания:

  1. Сначала необходимо зайти через браузер на страницу с нужными песнями (к примеру сюда: http://vkontakte.ru/audio.php) и сохранить её как html-файлик: audio.php.html
  2. Положить рядом с audio.php.html файл script.sh и vk.sh
  3. Запустить скрипт
    $ sh script.sh
    

UPD: Скачал файл audio.php.html с утра, вечером хотел запустить скрипт на скачку. Ссылки оказались недействительными. Видимо контакт меняет ссылки на файлы через какие-то промежутки времени. Т.о. скрипт стоит запускать сразу же после скачивания audio.php.html, чтоб не было ошибок 404.

UPD2: Скрипт подправил: теперь правильно отображается “&”, подчистил пробелы, а также – да(!), UNIX/WIN не любят “/” в названиях файлов/папок :).

Также, юзеры вконтакте взрослеют и уже освоили копипаст Unicode символов, по типу:

♥♡♥♡♥ Дима Билан ♥♡♥♡♥ - ♥♡♥♡♥ Ты, только ты ♥♡♥♡♥
☭☭☭ Гражданская оборона ☮☮☮ -  У войны не женское лицо

Такую штуку придётся вычищать руками. 🙂 (Всю таблицу как-то неохота в vim скрипт кидать)

20110812: Поправил в связи с новыми поправками Vk.