PHP: json_decode[/b]Привет Всем! есть такой замечательный ресурс [b]vk.com[/b]. Все уже наверное знают про [b]OAuth 2.0[/b] и тд. но речь не о нем. Значит при запросе [u][b]https://api.vk.com/method/audio.get?access_tokes=533bacf01e11f55b536a565b57531ac114461ae8736d6506a3[/b][/u], сервер вываливает данные в предстовлении [b]JSON[/b]. Вот в принципе я этим в полне доволен, но вот как спарсить с помощью функции [b]json_decode[/b] праметр например [b]"artist"[/b]? Вот пример, как сервер отвечает на запрос к апи: [code] {"response":[{"aid":"60830458","owner_id":"6492","artist":"Noname","title":"Bosco", "duration":"195","url":"http:\/\/cs40.vkontakte.ru\/u06492\/audio\/2ce49d2b88.mp3"}, {"aid":"59317035","owner_id":"6492","artist":"Mestre Barrao","title":"Sinhazinha", "duration":"234","url":"http:\/\/cs510.vkontakte.ru\/u2082836\/audio\/ d100f76cb84e.mp3"}]} [/code] upd. Лучше так: как вытащить от сюда всех артистов?
PHP: $json = '{"response":[{"aid":"60830458","owner_id":"6492","artist":"Noname","title":"Bosco", "duration":"195","url":"http:\/\/cs40.vkontakte.ru\/u06492\/audio\/2ce49d2b88.mp3"}, {"aid":"59317035","owner_id":"6492","artist":"Mestre Barrao","title":"Sinhazinha", "duration":"234","url":"http:\/\/cs510.vkontakte.ru\/u2082836\/audio\/d100f76cb84e.mp3"}]}'; $res = json_decode($json); foreach ($res->response as $art_info) { echo $art_info->artist . '<br />'; } Вот так, например.
FindeR, ты не поверишь DD разобрался сам, перед тем, как сюда заглянуть, но спасибо за помощь)) PHP: <?php $def_charset = 'utf-8'; // Тут проделываем авторизацию $access_code = $_GET['code']; $access_token_str = file_get_contents('https://oauth.vk.com/access_token?client_id=3127340&client_secret=FznFhzJkACsk4aUuWFhO&code='.$access_code.'&redirect_uri=http://js-server.16mb.com/vk.php'); $access_token_json = json_decode($access_token_str); $access_token = $access_token_json->{'access_token'}; // Делаем запрос на список аудиозаписей $content_str = file_get_contents('https://api.vk.com/method/audio.get?access_token='.$access_token); // Парсим запрос $audio_str = json_decode($content_str); $aud_obj = $audio_str->{'response'}; foreach ($aud_obj as $line) { echo $line->{'artist'}.' - '.$line->{'title'}.'<br/>'; } ?> upd: ох уж эти массивы)))
вот только русские названия он выдает краказябрами. При попытке сменить кодировку в браузере выдает следующее: Warning: Invalid argument supplied for foreach() in /home/u620166128/public_html/vk.php on line 15. Как быть то? о_О upd. Все) тут тоже разобрался) ох уж эти кодировки и недозапросы
PHP: Новые сложности[/b]Прекрасный [b]vk.com[/b] очень интерессно поступает. Вот допустим с помощью метода [b]audio.get[/b] я получил список url'ов на сами файлы. Конечно запрос был выполнен другим сервером и соответственно он передавал вконтакту свой ip-адресс. И зачем-то вконтакт сгенерировал имена файлов(скорее всего) исходя из ip сервера(или клиента? оО), с которого ведеться запрос. Вот теперь хотелось бы узнать, а как можно скачивая файл одновременно его передавать (стримить) клиенту?
ты именно потоком отдавать хочешь? это типа онлайн радио? Если несущественно время задержки и будет самописный плеер на сайте я бы поступил ещё проще Сформировал бы xml или тот же json с плейлистом который будет отдаваться плееру. В нем должно быть только дополнительно указано когда какие композиции играют. Если же нужен именно поток посмотри в сторону каких нибудь готовых медиа серверов типа icecast где можно менять поток на лету