1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

PHP Поиск музыки с использованием Vkontakte-API

Discussion in 'Multimedia' started by Gooos, Aug 25, 2011.

  1. Gooos Thread starter абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    У кого нет таких денег http://talk.socengine.ru/showthread...%F8%E5%ED%EE-100&p=38560&viewfull=1#post38560

    Делаем сами:

    1. Суть заключается в том, что мы будем использовать VK-API для flash-приложений.
    2. Отправляем специально сформированный запрос API, и получаем готовый ответ в формате XML или JSON который разбирается на раз-два.


    Плюсы
    (+) — Не требуется авторизация вконтакте, но аккаунт всё-же понадобится.
    (+) — Экономичность способа (мало запросов + лёгкие ответы).
    (+) — XML/JSON легко разбирать, размер ответа маленький.
    (+) — Можно задать любое количество возвращаемых результатов (1-100-1000...).
    (+) — Использование API вполне легально.
    Минусы
    (-) — Небольшая сложность в освоении API
    (-) — Лимиты на число запросов к API в секунду (если работать в тестовом режиме)

    1. Авторизуемся вконтакте, и создаём новое приложение на странице vkontakte.ru/apps.php?act=add. Тип: Flash/Iframe приложение, заполняем описание и выбираем категорию.
    vk11.png
    2. После создания приложения, идём на vkontakte.ru/apps.php, находим своё приложение. Щёлкаем на «настроить приложение» и даём приложению полный доступ.
    vkvkv.jpg
    Далее жмём "Редактировать -> Настройки", тут нам нужны 2 поля «ID-приложения» и «ключ приложения», так же нужно знать ID своего аккаунта, который можно посмотреть в разделе «Настройки» вашего профиля).
    vk22.png
    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($chCURLOPT_URL$post_url);
      
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
      
    curl_setopt($chCURLOPT_REFERER$refer);
      
    curl_setopt($chCURLOPT_POST1);
      
    curl_setopt($chCURLOPT_POSTFIELDS$post_data);
      
    curl_setopt($chCURLOPT_CONNECTTIMEOUT15);
      
    curl_setopt($chCURLOPT_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.

    По материалам интернета.
    Trixie, twixi007 and ykcyc like this.
  2. galstuk Famous member


    Offline
    • Знаменитый
    Message Count:
    398
    Likes Received:
    151
    Очень доступно,особенно для тех,кто ищет халяву... ;) Хотя действительно, полный
    :)
  3. its-me User


    Offline
    Message Count:
    406
    Likes Received:
    3
    не замечал такого.
    хмм. за такую помощь доработанным помогу плагином =)
    напиминайте почаще и доработаю и выложу
  4. ruffer Famous member


    Offline
    • Знаменитый
    Message Count:
    393
    Likes Received:
    56
    My version of SE:
    3.20
    получилось сделать скачивание музыки но не её проигрование и добавление в свой список)
    но скоро может что и выйдет

    ---------- Сообщение добавлено в 13:49 ---------- Предыдущее сообщение было в 13:18 ----------

    могу предоставить это добро в обмен на полноценные комментарии с видео музыкой и фото (плагин wall не предлагать)
  5. its-me User


    Offline
    Message Count:
    406
    Likes Received:
    3
    пффф :D
  6. twixi007 Famous member


    Offline
    • Знаменитый
    Message Count:
    416
    Likes Received:
    77
    My version of SE:
    4.6.0
    View attachment vk-audio.1.0.zip
    Просто и со вкусом в настройках ввести ключ и id приложения вконтакте.
    Работает!
  7. ykcyc Novice member


    Offline
    Message Count:
    1
    Likes Received:
    0
    Спасибо за код, но у меня ничего не получилось. И так пробовал и так... Пишет, что неверная сигнатура. sig не проходит в общем. Подскажите как исправить

Share This Page

All rights reserved SocEngine.ru ©