web-dev-qa-db-fra.com

Comment obtenir l'ID de piste à partir d'une URL à l'aide de l'API SoundCloud

Comment obtenir un identifiant de piste à partir d'une URL de piste à l'aide de l'API SoundCloud?

14
floCoder

Vous n'avez pas spécifié de langue dans votre question, je vais donc simplement donner une réponse de haut niveau.

Utilisez le point final resolve. J'utilise cette URL à titre d'exemple:

https://soundcloud.com/msmrsounds/ms-mr-hurricane-chvrches-remix

HTTP GET: https://api.soundcloud.com/resolve.json?url=https%3A%2F%2Fsoundcloud.com%2Fmsmrsounds%2Fms-mr-hurricane-chvrches-remix&client_id=[your_client_id]

Le JSON résultant:

{
  "status": "302 - Found",
  "location": "https://api.soundcloud.com/tracks/147986343.json?client_id=[YOUR client_id]"
}

Cette valeur numérique est le track_id. Vous pouvez simplement vous arrêter ici ou atteindre le terminal que vous venez de récupérer pour plus d'informations:

{
  "kind": "track",
  "id": 90787841,
  "created_at": "2013/05/05 00:15:40 +0000",
  "user_id": 7853935,
  "duration": 188333,
  "commentable": true,
  "state": "finished",
  "original_content_size": 35031144,
  "last_modified": "2014/09/30 05:53:10 +0000",
  "sharing": "public",
  "tag_list": "MSMR CHVRCHES \"Secondhand Rapture\" Remix Hurricane",
  "permalink": "ms-mr-hurricane-chvrches-remix",
  "streamable": true,
  "embeddable_by": "all",
  "downloadable": true,
  "purchase_url": null,
  "label_id": null,
  "purchase_title": null,
  "genre": "",
  "title": "MS MR - Hurricane (CHVRCHES remix)",
  "description": "MS MR - Hurricane (CHVRCHES remix)\r\n\r\n\r\n",
  "label_name": "",
  "release": "",
  "track_type": "",
  "key_signature": "",
  "isrc": "",
  "video_url": null,
  "bpm": null,
  "release_year": null,
  "release_month": null,
  "release_day": null,
  "original_format": "wav",
  "license": "all-rights-reserved",
  "uri": "https://api.soundcloud.com/tracks/90787841",
  "user": {
    "id": 7853935,
    "kind": "user",
    "permalink": "msmrsounds",
    "username": "MSMR",
    "last_modified": "2014/08/04 09:03:56 +0000",
    "uri": "https://api.soundcloud.com/users/7853935",
    "permalink_url": "http://soundcloud.com/msmrsounds",
    "avatar_url": "https://i1.sndcdn.com/avatars-000037198343-2lptmy-large.jpg?86347b7"
  },
  "permalink_url": "http://soundcloud.com/msmrsounds/ms-mr-hurricane-chvrches-remix",
  "artwork_url": null,
  "waveform_url": "https://w1.sndcdn.com/56LCadzDEBZn_m.png",
  "stream_url": "https://api.soundcloud.com/tracks/90787841/stream",
  "download_url": "https://api.soundcloud.com/tracks/90787841/download",
  "playback_count": 1672227,
  "download_count": 18494,
  "favoritings_count": 20426,
  "comment_count": 464,
  "attachments_uri": "https://api.soundcloud.com/tracks/90787841/attachments",
  "policy": "ALLOW"
}
40
JAL

Donc, mon code final ressemble à ceci. Merci les gars pour l'aide pour que cela fonctionne.

include_once('../Services/Soundcloud.php'); 
$client = new Services_Soundcloud('CLIENT_ID', 'CLIENT_SECRET');
$track_url=$_POST['trackurl'];
$track_url=str_replace("https://soundcloud.com/USERNAME/","",$track_url);
$track = json_decode($client->get("tracks/".$track_url));    
$track_id=$track->id;
echo $track_id;
4
floCoder

En attendant, en écrivant cette réponse, le CLIENT_ID est proche 

En raison du nombre élevé de demandes reçues récemment, nous ne traiterons plus les demandes d'application d'API pour le moment. Nous travaillons à réévaluer notre processus pour le rendre plus efficace.

Voir Ici

J'ai résolu ce problème avec mon Laravel Project Like This 

j'ai d'abord créé cette fonction pour obtenir le vrai contenu

    public function getLessonUrl($lessonId = null)
{
    //Get the SoundCloud URL
    $validUrl = 'https://soundcloud.com/al-hazme';
    $result = stripos($lessonId, $validUrl);

    if (strpos($lessonId, $validUrl) !== false) {
        //Get the JSON data details with embed code from SoundCloud oEmbed
        $getValues = @file_get_contents('http://soundcloud.com/oembed?format=js&url=' . $lessonId . '&color=%234274e3&auto_play=false&hide_related=true&show_comments=false&show_user=false&show_reposts=false&show_teaser=true&show_artwork');

        if ($getValues === false) {
            return 'حدث خطأ اثناء تحميل الدرس نرجو منك التأكد من اتصال الانترنيت لديك او حدث الصفحة';
        }
        //Clean the Json to decode

        $decodeiFrame = substr($getValues, 1, -2);

        //json decode to convert it as an array

        $jsonObj = json_decode($decodeiFrame);

        //echo $jsonObj->html;

        $lessons = str_replace('height="400"', 'height="90"', $jsonObj->html);

        return $lessons;
    } else {
        return 'لايوجد استماع لهذا الدرس';
    }

}

Ensuite, j'ai créé une autre fonction pour démolir l'Id à l'aide de méthodes de façade Str. 

    use Illuminate\Support\Str;
    public function soundCloudId($url) {


    $do         = $lesson->getLessonUrl($lesson->url_link);
    $getTrickId = Str::after($do,'tracks%2F');
    $substr     = Str::substr($getTrickId,0,9);

     echo $substr = // 367893857
     }

Cela peut vous aider ou vous donner un indice 

0
ZyMaWy B bOy