[PHP] Проблемы с VK-api

Discussion in 'PHP' started by Redfern89, 15 Sep 2012.

  1. Redfern89

    Redfern89 New Member

    Joined:
    12 Jul 2012
    Messages:
    42
    Likes Received:
    1
    Reputations:
    -3
    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Лучше таккак вытащить от сюда всех артистов?
     
    #1 Redfern89, 15 Sep 2012
    Last edited: 15 Sep 2012
  2. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    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 />';
    }
    Вот так, например.
     
  3. Redfern89

    Redfern89 New Member

    Joined:
    12 Jul 2012
    Messages:
    42
    Likes Received:
    1
    Reputations:
    -3
    FindeR, ты не поверишь :DDD разобрался сам, перед тем, как сюда заглянуть, но спасибо за помощь))
    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: ох уж эти массивы)))
     
    #3 Redfern89, 15 Sep 2012
    Last edited: 15 Sep 2012
  4. Redfern89

    Redfern89 New Member

    Joined:
    12 Jul 2012
    Messages:
    42
    Likes Received:
    1
    Reputations:
    -3
    вот только русские названия он выдает краказябрами. При попытке сменить кодировку в браузере выдает следующее:
    Warning: Invalid argument supplied for foreach() in /home/u620166128/public_html/vk.php on line 15. Как быть то? о_О

    upd. Все) тут тоже разобрался) ох уж эти кодировки и недозапросы
     
    #4 Redfern89, 15 Sep 2012
    Last edited: 15 Sep 2012
  5. Redfern89

    Redfern89 New Member

    Joined:
    12 Jul 2012
    Messages:
    42
    Likes Received:
    1
    Reputations:
    -3
    PHP:
     Новые сложности[/b]

    Прекрасный [b]vk.com[/bочень интерессно поступаетВот допустим с помощью метода [b]audio.get[/bя получил список url'ов на сами файлы. Конечно запрос был выполнен другим сервером и соответственно он передавал вконтакту свой ip-адресс. И зачем-то вконтакт сгенерировал имена файлов(скорее всего) исходя из ip сервера(или клиента? оО), с которого ведеться запрос. Вот теперь хотелось бы узнать, а как можно скачивая файл одновременно его передавать (стримить) клиенту?
     
  6. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    ты именно потоком отдавать хочешь? это типа онлайн радио? Если несущественно время задержки и будет самописный плеер на сайте я бы поступил ещё проще

    Сформировал бы xml или тот же json с плейлистом который будет отдаваться плееру. В нем должно быть только дополнительно указано когда какие композиции играют.

    Если же нужен именно поток посмотри в сторону каких нибудь готовых медиа серверов типа icecast где можно менять поток на лету