[Из песочницы] VKPLS — Генерация потокового аудио-плейлиста из vk.com

imageХочу поделиться с читателями «Хабрахабра» небольшим веб-сервисом (скриптом), который написал для себя.

С появлением социальных сетей и их широким распространением пользователи довольно много времени проводят в онлайне. Все любят музыку, а лично я без нее жить не могу. Так вышло, что всю свою музыкальную коллекцию храню в профайле «Вконтакте». Поскольку всегда в курсе новинок, не трачу свое время на поиск и скачивание, а возможность доступа к своей музыке почти с любого гаджета в любом месте где есть интернет придает максимум удобства. Я очень рад, что прошли те деревянные времена, когда хороший интернет был роскошью. Больше нет необходимости хранить такую информацию на своем жестком диске. Все, что не конфиденциально, выбрасываю в облако.

Большую часть своей работы я выполняю за компьютером, а это значит, что музыка мне необходима как кислород — чтобы сконцентрироваться на поставленных задачах. Врубаешь любимый альбом в 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 со следующей информацией: Ответ на audio.get в JSON response: {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 формат. Все, что мне осталось для достижения результата — это сгенерировать файл плейлиста.Структура M3U плэйлиста: #EXTM3U#EXTINF: duration, artist — titleurl…

Не было ничего проще записать в файл с помощью цикла foreach все полученные данные и сохранить его в m3u.Ура, все получилось, теперь я могу слушать музыку в любом музыкальном плеере без необходимости авторизации вконтакте.

Резюме Я решил поделиться своей идеей и сделать ее доступной для таких же, как я. С помощью CSS фрэймворка Maxmertkit (представленного одним из пользователей «Хабрахабра» здесь) сверстал небольшую страницу для удобства использования скрипта. Для всех желающих она доступна по следующей ссылке — VKPLS. Там же вы можете прочитать инструкцию или посмотреть видео.Следует отметить, что существует одно но. В связи с тем, что ссылки на аудиозаписи на серверах «Вконтакте» меняются с переодичностью в 0,5 — 3 дня, рекомендую чаще обновлять свой плэйлист.

На этом все, спасибо за внимание.

© Habrahabr.ru