Сначала предыстория, которая вполне себе тянет на миниатюрный топик.
Итак, ваша коллекция музыки находится вконтакте, и вы захотели ее стащить на харды, как захотел я. Основная масса предлагаемых в интернете решений — всякие левые утилитки под Win, которым надо скармливать данные своего аккаунта (да-да, кому-то отдавать их на блюдечке с голубой каемочкой). Эти утилитки к каждой песне добавляют кнопочку «скачать», предлагая (опять же) глупый ручной труд.
На просторах рунета был найден следующий скрипт:
<font color="black"><ol>
<li>#!/bin/bash</li>
<li>gets=`curl -s --data <font color="#A31515">"email=yourmailhere@some.mail&pass=yourpassword"</font> http:<font color="#008000">//login.vk.com/?act=login | egrep -o \([a-z]\|[0-9]\){20\,}`</font></li>
<li>curl -v --cookie-jar /tmp/vkcookie --data <font color="#A31515">"s=$gets&op=slogin&redirect=1&expire=0&to=0"</font> http:<font color="#008000">//vkontakte.ru/login.php</font></li>
<li>curl -v --cookie /tmp/vkcookie <a href="http://vkontakte.ru/audio.php">vkontakte.ru/audio.php</a> | grep -o <font color="#A31515">'http.*mp3'</font> | wget -i -</li>
</ol></font><font color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font color="gray">Source Code Highlighter</font></a>.</font>
Данный скрипт всего в 3 строчки вытягивает музыку со страницы «аудиозаписи» пользователя. Вместо строчки
<a href="http://vkontakte.ru/audio.php">vkontakte.ru/audio.php</a>
можно вписать любую вконтактовскую ссылку, например, на страницу «аудиозаписи» какой-либо группы (я проверил, работает).
Ну а теперь вопрос, а точнее просьба к знающим людям — помогите довести скрипт до ума.
Дело в том, что музыку он сохраняет в файлы с именами fd8787fdsf98.mp3 (но с тегами!), и если на каком-то моменте прервалась связь, или повис wget, или был случайно закрыт терминал — придется либо заняться разбиранием «награбленного» с целью удаления из записей вконтакта тех композиций, которые уже были скачаны, либо качать все заново. А качает оно нешустро — я не спец в параметрах wget'а, но даже менеджер загрузок Оперы выдает б
ольшую скорость.
То есть, нужно добавить проверку на то, был ли уже скачан файл.
Помимо прочего, я совершенно не уверен, что скрипт лезет куда-то за пределы первой страницы со списком музыки — проверить данный факт не брался, очень уж долго оно качает даже первую страницу.
Очень неплохо было бы прикрутить какой-нибудь интерфейс с использованием gxmessage или zenity — чтобы вбивать данные аккаунта в окошке, а не вписывать в теле скрипта, т.к. последнее небезопасно (я чуть не опубликовал скрипт с моими логином и паролем, если что). Ну и выбор источника — страница аудиозаписей пользователя, или записи какой-либо группы (достаточно передавать скрипту только GID, чтобы он сформировал ссылку), или вписывать весь адрес вручную (допустим, ссылка на чью-то стену, откуда вы хотите вытащить выложенную музыку). В процессе граббинга можно выдавать завершение скачивания очередного трека через notify-send, либо использовать опцию прогресс-бара для zenity.
Может, данная задачка кого-то из линукс-гуру заинтересует?
P.S. исходный скрипт — не моя работа,
авторство указать затруднительно найден на просторах рунета
вот тут и является, очевидно, коллективным творчеством.