Страница 1 из 1
плеер аудио из своей же группы\страницы в iframe-приложении
Добавлено: 29 мар 2013, 11:14
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. С видеоплеер легче - я копирую код видео вконтакта в бд, и оттуда уже в приложение загружаю его -
мороки ноль - но можно ли так поступать?
Спасибо.
Re: плеер аудио из своей же группы\страницы в iframe-приложении
Добавлено: 30 мар 2013, 19:30
Александр
segasega2
Может будет удобнее использовать
http://www.jplayer.org/
Для работы с аудио надо использовать методы ВКонтакте API audio.*
Вызывать методы для получения ссылки на файл надо со стороны клиента.
http://vk.com/dev/methods
Re: плеер аудио из своей же группы\страницы в iframe-приложении
Добавлено: 04 апр 2013, 12:03
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 аудио и юзера ввожу правильно.
Честно - не понимаю как получить права на аудио, если в этом проблема.
Re: плеер аудио из своей же группы\страницы в iframe-приложении
Добавлено: 09 апр 2013, 22:33
Александр
segasega2
Искать причину в файле xxxx.php на 155 линии, при вызове функции get_headers.
Вероятно в $mp3->audio->url - пустое значение. Надо посмотреть что там. Использовать print_r и echo.