У кого нет таких денег http://talk.socengine.ru/showthread...%F8%E5%ED%EE-100&p=38560&viewfull=1#post38560
Делаем сами:
- Суть заключается в том, что мы будем использовать VK-API для flash-приложений.
- Отправляем специально сформированный запрос API, и получаем готовый ответ в формате XML или JSON который разбирается на раз-два.
Плюсы
(+) — Не требуется авторизация вконтакте, но аккаунт всё-же понадобится.
(+) — Экономичность способа (мало запросов + лёгкие ответы).
(+) — XML/JSON легко разбирать, размер ответа маленький.
(+) — Можно задать любое количество возвращаемых результатов (1-100-1000...).
(+) — Использование API вполне легально.
Минусы
(-) — Небольшая сложность в освоении API
(-) — Лимиты на число запросов к API в секунду (если работать в тестовом режиме)
1. Авторизуемся вконтакте, и создаём новое приложение на странице vkontakte.ru/apps.php?act=add. Тип: Flash/Iframe приложение, заполняем описание и выбираем категорию.
2. После создания приложения, идём на vkontakte.ru/apps.php, находим своё приложение. Щёлкаем на «настроить приложение» и даём приложению полный доступ.
Далее жмём "Редактировать -> Настройки", тут нам нужны 2 поля «ID-приложения» и «ключ приложения», так же нужно знать ID своего аккаунта, который можно посмотреть в разделе «Настройки» вашего профиля).
3. Заходим в документации по API. Нас интересует метод audio.search vkontakte.ru/developers.php?o=-1&p=audio.search. Читаем внимательно и переходим к кодобреду
PHP:
<?php
/*
Предположим у нас есть форма поиска, которая передаёт переменную $query методом GET
Наша задача принять эту переменную, и подготовить к отправке
*/
$query = isset($_GET['query']) ? $query = urldecode($_GET['query']) : '';
/*
Если ваши страницы не в кодировке UTF-8 а в CP1251,
то строку поиска нужно сконвертировать в UTF-8
*/
$query = iconv('cp1251', 'utf-8', $query);
/*
Создадим массив с нужными для работы приложения переменными
Так же можно задать параметры касающиеся сортировки и текста к песне
*/
$set_vk = array(
'vk_key' => 'ТУТВАШКЛЮЧ', //ключ приложения
'vk_l' => '0000000', //ID вашего аккаунта
'api_id' => '000000', //ID приложения
'count_results' => 150, //Сколько возвращать результатов
);
/*
Уникальная сигнатура запроса, согласно API
*/
$sig_vk = md5(
$set_vk['vk_l'].'api_id='.$set_vk['api_id'].'count='.$set_vk['count_results']
.'lyrics=0method=audio.searchoffset=0q='.$query.'sort=0test_mode=1v=2.0'.$set_vk['vk_key'];
);
//Делаем POST-запрос к API, передавая подготовленные параметры
$xml_response = Send_Post(
'http://api.vkontakte.ru/api.php',
'api_id='.$set_vk['api_id'].'&count='.$set_vk['count_results'].''.
'&lyrics=0&method=audio.search&offset=0&q='.$query.'&sort=0&test_mode=1&v=2.0&sig='.$sig_vk,
'http://vkontakte.ru/app'.$set_vk['api_id'].'_'.$set_vk['api_id'].''
);
if(empty($xml_response))
{
//API не дал ответа
}
else
{
//Парсим XML-ответ и получаем объект с результатами поиска
$parse = simplexml_load_string($xml_response);
//Полученый ответ можно обрабатывать как нам уже угодно
//Распечатать объект для изучения
echo '<pre>';
print_r($parse);
echo '</pre>';
//Или пройтись в цикле и выполнить некое действие
//Вывести Артист - Название (продолжительность) и ссылку на скачку файла
foreach($parse->audio as $key => $val)
{
echo $val->artist.' - '.$val->title.' ('.date('i:s', (int)$val->duration).')'."\n";
echo $val->url."\n\n";
}
}
?>
PHP:
<?php
/*
Функция для отправки POST-запросов с использованием Curl
*/
function Send_Post($post_url, $post_data, $refer)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $refer);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.00');
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>
Чтобы всё это работало нам понадобится PHP5, CURL, SimpeXML-модуль.
Не забудьте вписать свои данные в массив $set_vk.
Вот в принципе и всё, что касается поиска. Статья писалась лишь как пример использования, но весь код рабочий и проверенный, при правильном использовании поможет сделать поиск музыки во вконтакте с использованием PHP.
По материалам интернета.