Хочу поделиться с читателями «Хабрахабра» небольшим веб-сервисом (скриптом), который написал для себя.
С появлением социальных сетей и их широким распространением пользователи довольно много времени проводят в онлайне. Все любят музыку, а лично я без нее жить не могу. Так вышло, что всю свою музыкальную коллекцию храню в профайле «Вконтакте». Поскольку всегда в курсе новинок, не трачу свое время на поиск и скачивание, а возможность доступа к своей музыке почти с любого гаджета в любом месте где есть интернет придает максимум удобства. Я очень рад, что прошли те деревянные времена, когда хороший интернет был роскошью. Больше нет необходимости хранить такую информацию на своем жестком диске. Все, что не конфиденциально, выбрасываю в облако.
Большую часть своей работы я выполняю за компьютером, а это значит, что музыка мне необходима как кислород — чтобы сконцентрироваться на поставленных задачах. Врубаешь любимый альбом в 5.1 и творишь. Но есть одно но: чтобы послушать музыку в VK.com, я должен зайти в онлайн, а если заходишь в онлайн — то непременно получаешь кучу сообщений и затягиваешься в нежелательные беседы. Я человек добрый и отзывчивый, поэтому не могу игнорировать своих друзей с их постоянными проблемами. Но ведь мне нужно сконцентрироваться на работе, а вся моя музыка там, где меня всегда что-то отвлекает.
Я обожаю Linux, но нормальных плагинов для музыкальных плееров или самих плееров для прослушивания музыки с VK.com так и не встретил. Тогда решил, что с этим нужно что-то делать и накидал за пару часов небольшой php скрипт, который и назвал vkpls (не трудно догадаться, что я имел ввиду).
Суть скрипта в получении прямых ссылок на аудиозаписи и генерации потокового плейлиста, алгоритм до безобразия прост, я завязал его на VK.API:
Для начала я создал Standalone приложение в разделе «Для разработчиков» и получил для него права на доступ к аудиозаписям. После этого мне необходимо было пройти авторизацию для создания ACCESS_TOKEN, т.к. доступ к информации об аудиозаписях (метод audio.get в vk.api) невозможен по простому POST или GET запросу.
Теперь я мог с помощью средств старенького PHP направлять запрос с интересующими меня параметрами без ограничений, а в ответ получать интересующую меня информацию в формате JSON. Функция audio.get возвращает список аудиозаписей пользователя или сообщества со всей дополнительной информацией. Бинго, это-то мне и было нужно.
Так, например, в ответ такого запроса:
https://api.vk.com/method/audio.get?user_id=ВАШ_ID&v=5.28&access_token=ВАШ_ACCESS_TOKEN
мы получаем массив в формате JSON со следующей информацией:
count: 505,
items: [{
id: '34',
photo: 'http://cs7009.vk....2/rj4RvYLCobY.jpg',
name: 'Tatyana Plutalova',
name_gen: 'Tatyana'
}, {
id: 232745053,
owner_id: 34,
artist: 'Ambassadeurs',
title: 'Sparks',
duration: 274,
url: 'http://cs6164.vk....lGEJhqRK8d5OQZngI',
lyrics_id: 120266970,
genre_id: 18
}, {
id: 232733966,
owner_id: 34,
artist: 'Aloe Blacc',
title: 'Can You Do This ',
duration: 176,
url: 'http://cs6157.vk....erOa0DvsyOCYTPO1w',
genre_id: 2
}, {
id: 232735496,
owner_id: 34,
artist: 'Aloe Blacc',
title: 'Wake Me Up',
duration: 224,
url: 'http://cs6109.vk....FzHJU55ixz8Av8ujc',
lyrics_id: 119056069,
genre_id: 2
}]
}
Посмотрите — интересующие нас ключи artist, title, duration, url присутствуют для каждой аудиозаписи. Воспользовавшись функцией json_decode я преобразовал полученный массив в понятный для php формат. Все, что мне осталось для достижения результата — это сгенерировать файл плейлиста.
#EXTINF:duration,artist — title
url
…
Не было ничего проще записать в файл с помощью цикла foreach все полученные данные и сохранить его в m3u.
Ура, все получилось, теперь я могу слушать музыку в любом музыкальном плеере без необходимости авторизации вконтакте.
Резюме
Я решил поделиться своей идеей и сделать ее доступной для таких же, как я. С помощью CSS фрэймворка Maxmertkit (представленного одним из пользователей «Хабрахабра» здесь) сверстал небольшую страницу для удобства использования скрипта. Для всех желающих она доступна по следующей ссылке — VKPLS. Там же вы можете прочитать инструкцию или посмотреть видео.
Следует отметить, что существует одно но. В связи с тем, что ссылки на аудиозаписи на серверах «Вконтакте» меняются с переодичностью в 0,5 — 3 дня, рекомендую чаще обновлять свой плэйлист.
На этом все, спасибо за внимание.
Автор: alsmile