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

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)

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

Сообщение segasega2 » 29 мар 2013, 11:14

Добрый день!

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

1. Т.к. скрипта вконтакта я не вижу, то беру uppod
  1.  
  2. <object id="идентификатор" type="application/x-shockwave-flash" data="ссылка_на_плеер" width="ширина" height="высота">
  3.    <param name="bgcolor" value="#ffffff" />
  4.    <param name="allowFullScreen" value="true" />
  5.    <param name="allowScriptAccess" value="always" />
  6.    <param name="wmode" value="window" />
  7.    <param name="movie" value="ссылка_на_плеер" />
  8.    <param name="flashvars" value="переменные_плеера" />
  9. </object>
  10.  

Почитав - в flashvars надо запихнуть что-то связанное с адресом песни, адрес должен формироваться вконтактом для кажого ip свой.

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

Спасибо.
segasega2

 
Автор темы
Сообщения: 2
Зарегистрирован: 29 мар 2013, 10:58
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение Александр » 30 мар 2013, 19:30

segasega2
Может будет удобнее использовать http://www.jplayer.org/
Для работы с аудио надо использовать методы ВКонтакте API audio.*
Вызывать методы для получения ссылки на файл надо со стороны клиента.
http://vk.com/dev/methods
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

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

Сообщение segasega2 » 04 апр 2013, 12:03

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

Сначала подключаю-
  1.  
  2.  <script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script>
  3.  
  4. <script type="text/javascript">
  5.   VK.init(function() {
  6.      // API initialization succeeded
  7.      // Your code here
  8.   });
  9. </script>
  10.  

Далее, где мне надо вывести информацию о песне:
  1.  
  2. <?php
  3. /**
  4. * Класс для работы с VK API
  5. * Класс видоизменен. Первоначальный вид и ссылка на автора класса:
  6. * http://a-panov.ru/2011/10/%D0%BA%D0%BB% ... e-api-php/
  7. */
  8. class vk {
  9.     public static $error = '';
  10.  
  11.     /**
  12.     * Основной метод для запроса данных
  13.     *
  14.     * @param $method string имя метода api
  15.     * @param $method array дополнительные параметры api
  16.     * @return array результат запроса или FALSE при ошибке
  17.     */
  18.     static function get($account = array(), $method, $params = array()) {
  19.         if (empty($method)) {
  20.             self::$error = 'Не задан метод';
  21.             return FALSE;
  22.         } else {
  23.             // обнулить статус ошибки
  24.             self::$error = '';
  25.         }
  26.  
  27.         $params['api_id'] = $account['id_api'];
  28.         $params['method'] = $method;
  29.         // версия API
  30.         if (empty($params['v'])) $params['v'] = '2.0';
  31.  
  32.         // упорядочить ключи по алфавиту
  33.         ksort($params);
  34.  
  35.         // сформировать список значений вида key=value
  36.         $datas      = array();
  37.         $strdatas   = $account['user_id'];
  38.         foreach ($params as $k => $v) {
  39.             $strdatas .= $k . '=' . $v;
  40.             $datas[]   = $k . '=' . urlencode($v);
  41.         }
  42.  
  43.         // формирование подписи
  44.         $sig = md5($strdatas . $account['key']);
  45.  
  46.         // полная строка запроса к API
  47.         $url = 'http://api.vk.com/api.php' . '?' . implode('&', $datas) . '&sig=' . $sig;
  48.  
  49.         // получить результат
  50.         $result = file_get_contents($url);
  51.  
  52.         if ($result) {
  53.             // удалить ненужные символы
  54.             $result = preg_replace('![\\x00-\\x1f]!', '', $result);
  55.  
  56.             // преобразовать json-строку в массив
  57.             $arr = new SimpleXMLElement($result);
  58.  
  59.             // при наличии ошибка
  60.             if (isset($arr['error'])) { // записать её текст
  61.                 self::$error = 'Ошибка: ' . $arr['error']['error_msg']
  62.                     . ' (' . $arr['error']['error_code'] . ')';
  63.                 $arr         = FALSE;
  64.             }
  65.         } else {
  66.             $arr         = FALSE;
  67.             self::$error = 'Нет доступа к адресу ' . 'http://api.vk.com/api.php';
  68.         }
  69.  
  70.         return $arr;
  71.     }
  72. }
  73.  
  74. /**
  75.  * Настройки приложения
  76.  */
  77. $key_app = 'xxxxxxxxx'; // Ключ приложения
  78. $user_id = xxx; // Ид создателя
  79. $api_id = xxx; // ID приложения
  80.  
  81. $method = 'audio.getById'; // метод
  82.  
  83. /**
  84.  * Получение информации
  85.  */
  86. $params = array();
  87.  
  88. $params['audios'] = 'xxxxxx_xxxxxxx';
  89. $params['test_mode'] = 0;
  90.  
  91. $mp3 = vk::get(array(
  92.     'key'       =>  $key_app,
  93.     'user_id'   =>  $user_id,
  94.     'id_api'    =>  $api_id),  $method, $params);
  95.  
  96. if (FALSE === $mp3) {
  97.     exit ('Error');
  98. } else {
  99.     /**
  100.      * Получаем заголовки файла
  101.      */
  102.     $get = get_headers($mp3->audio->url,1);
  103.  
  104.     print_r($get);
  105. }
  106. ?>
  107.  


Ответ на странице-
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 аудио и юзера ввожу правильно.

Честно - не понимаю как получить права на аудио, если в этом проблема.
segasega2

 
Автор темы
Сообщения: 2
Зарегистрирован: 29 мар 2013, 10:58
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Александр » 09 апр 2013, 22:33

segasega2
Искать причину в файле xxxx.php на 155 линии, при вызове функции get_headers.
Вероятно в $mp3->audio->url - пустое значение. Надо посмотреть что там. Использовать print_r и echo.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.


Вернуться в Создание IFrame-приложений ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron