плеер аудио из своей же группы\страницы в iframe-приложении

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
segasega2
Сообщения: 2
Зарегистрирован: 29 мар 2013, 10:58

плеер аудио из своей же группы\страницы в iframe-приложении

Сообщение segasega2 »

Добрый день!

Цель - есть 100-300 мелодий, каждую из которых я рассортирую в своей БД(sql), сама мелодия будет у меня на странице или группе. В iframe-приложении пользователь выбирает группу из списка(грузится из бд) и ему выдается список мелодий группы(из бд) - нажимает - выскакивает аудио-плеер - он слушает.

1. Т.к. скрипта вконтакта я не вижу, то беру uppod

Код: Выделить всё

 <object id="идентификатор" type="application/x-shockwave-flash" data="ссылка_на_плеер" width="ширина" height="высота">   <param name="bgcolor" value="#ffffff" />   <param name="allowFullScreen" value="true" />   <param name="allowScriptAccess" value="always" />   <param name="wmode" value="window" />   <param name="movie" value="ссылка_на_плеер" />   <param name="flashvars" value="переменные_плеера" /></object> 
Почитав - в flashvars надо запихнуть что-то связанное с адресом песни, адрес должен формироваться вконтактом для кажого ip свой.

1. Может есть уже готовое решение этой задачи ?
2. У каждой загруженной мелодии есть свой id? как его узнать
3. С видеоплеер легче - я копирую код видео вконтакта в бд, и оттуда уже в приложение загружаю его -
мороки ноль - но можно ли так поступать?

Спасибо.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: плеер аудио из своей же группы\страницы в iframe-приложении

Сообщение Александр »

segasega2
Может будет удобнее использовать http://www.jplayer.org/
Для работы с аудио надо использовать методы ВКонтакте API audio.*
Вызывать методы для получения ссылки на файл надо со стороны клиента.
http://vk.com/dev/methods
segasega2
Сообщения: 2
Зарегистрирован: 29 мар 2013, 10:58

Re: плеер аудио из своей же группы\страницы в iframe-приложении

Сообщение segasega2 »

Нашел такое решение-

Сначала подключаю-

Код: Выделить всё

  <script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script> <script type="text/javascript">   VK.init(function() {      // API initialization succeeded      // Your code here   }); </script> 
Далее, где мне надо вывести информацию о песне:

Код: Выделить всё

 <?php/*** Класс для работы с VK API* Класс видоизменен. Первоначальный вид и ссылка на автора класса:* http://a-panov.ru/2011/10/%D0%BA%D0%BB%D0%B0%D1%81%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-vkontakte-api-php/*/class vk {    public static $error = '';     /**    * Основной метод для запроса данных    *    * @param $method string имя метода api    * @param $method array дополнительные параметры api    * @return array результат запроса или FALSE при ошибке    */    static function get($account = array(), $method, $params = array()) {        if (empty($method)) {            self::$error = 'Не задан метод';            return FALSE;        } else {            // обнулить статус ошибки            self::$error = '';        }         $params['api_id'] = $account['id_api'];        $params['method'] = $method;        // версия API        if (empty($params['v'])) $params['v'] = '2.0';         // упорядочить ключи по алфавиту        ksort($params);         // сформировать список значений вида key=value        $datas      = array();        $strdatas   = $account['user_id'];        foreach ($params as $k => $v) {            $strdatas .= $k . '=' . $v;            $datas[]   = $k . '=' . urlencode($v);        }         // формирование подписи        $sig = md5($strdatas . $account['key']);         // полная строка запроса к API        $url = 'http://api.vk.com/api.php' . '?' . implode('&', $datas) . '&sig=' . $sig;         // получить результат        $result = file_get_contents($url);         if ($result) {            // удалить ненужные символы            $result = preg_replace('![\\x00-\\x1f]!', '', $result);             // преобразовать json-строку в массив            $arr = new SimpleXMLElement($result);             // при наличии ошибка            if (isset($arr['error'])) { // записать её текст                self::$error = 'Ошибка: ' . $arr['error']['error_msg']                    . ' (' . $arr['error']['error_code'] . ')';                $arr         = FALSE;            }        } else {            $arr         = FALSE;            self::$error = 'Нет доступа к адресу ' . 'http://api.vk.com/api.php';        }         return $arr;    }} /** * Настройки приложения */$key_app = 'xxxxxxxxx'; // Ключ приложения$user_id = xxx; // Ид создателя$api_id = xxx; // ID приложения $method = 'audio.getById'; // метод /** * Получение информации */$params = array(); $params['audios'] = 'xxxxxx_xxxxxxx';$params['test_mode'] = 0; $mp3 = vk::get(array(    'key'       =>  $key_app,     'user_id'   =>  $user_id,     'id_api'    =>  $api_id),  $method, $params); if (FALSE === $mp3) {    exit ('Error');} else {    /**     * Получаем заголовки файла     */    $get = get_headers($mp3->audio->url,1);     print_r($get);}?> 
Ответ на странице-
Warning: get_headers() [function.get-headers]: Filename cannot be empty in /home/www/xxx/xxx.ru/xxxx.php on line 155

Приложение в режиме теста, IFRAME, в настройках поставил требует установки с запросом прав на audio,video.
Аудио лежит у администратора приложения, id аудио и юзера ввожу правильно.

Честно - не понимаю как получить права на аудио, если в этом проблема.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: плеер аудио из своей же группы\страницы в iframe-приложении

Сообщение Александр »

segasega2
Искать причину в файле xxxx.php на 155 линии, при вызове функции get_headers.
Вероятно в $mp3->audio->url - пустое значение. Надо посмотреть что там. Использовать print_r и echo.
Ответить