Как получить json для SoundCloud без типа - PullRequest
1 голос
/ 21 февраля 2020

Я получаю JSON из Soundcloud API, используя код в разделе 【A】.

Но я хочу получить его без использования $type, как в коде 【B】.

Другими словами, я хочу получить эту информацию, только указав $target.

Что мне делать?


$r = soundcloud_responce();
var_dump( $r );

function soundcloud_responce(){

    $client_id = 'xxx'; 
    $type = 'tracks';
    $q = 'words';

    // code【A】
    // If I have $type, So this process ok.
    $url = "https://api.soundcloud.com/";
    $url .= $type;
    $url .= "?client_id=$client_id";    
    $url .= "&q=$q";

    // code【B】
    // I want to do same process with $target but without $type
    $target = "https://soundcloud.com/accountname/trackname";
    $target = str_replace('https://soundcloud.com/', '', $target);
    $url = "https://api.soundcloud.com/";
    $url .= $target;
    $url .= "?client_id=$client_id";        

    // curl
    $ch = curl_init();
    $headers = [
        'Accept: application/json',
        'Content-Type: application/json',
    ];
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $res = curl_exec($ch);
    $json = json_decode($res);
    curl_close($ch);
    return $json;
}

(Добавить 2020-02-21 -09: 38 @Tokyo)

Я пробовал этот код 【C】, но это также не удалось.

    // code【C】
    // I tried with oembed but this also failed.
    $target = "https://soundcloud.com/accountname/trackname";
    $url = 'http://soundcloud.com/oembed?format=json&url='.$target;

(Добавить 2020-02-21-10: 12 @Tokyo)

Я попробовал этот код 【D】, но это также не удалось.

    // code【D】
    // I tried with resolve but this also failed.
    $target = "https://soundcloud.com/accountname/trackname";
    $url = "https://api.soundcloud.com/resolve?url=$target&client_id=$client_id";

1 Ответ

1 голос
/ 21 февраля 2020

Я попробовал этот код 【E】 это успешно!

Спасибо, что дали мне хороший совет, @ showdev.

    // code【E】
    // this is successful!
    $target = "https://soundcloud.com/accountname/trackname";
    $target = urlencode($target);
    $url = "https://api.soundcloud.com/resolve.json?url=$target&client_id=$client_id";
...