Skip to content

A Laravel Wrapper for the Soundcloud REST API endpoints

License

Notifications You must be signed in to change notification settings

noweh/laravel-soundcloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SoundCloud API for Laravel

SoundCloud Laravel PHP MIT Licensed last version Downloads

A Laravel Wrapper for the SoundCloud REST API endpoints.

Installation

First, you need to add the component to your composer.json.

composer require noweh/laravel-soundcloud

Update your packages with composer update or install with composer install.

Laravel uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.

Laravel without auto-discovery

Noweh\SoundcloudApi\SoundcloudServiceProvider::class,

To use the facade, add this in app.php:

'Soundcloud' => Noweh\SoundcloudApi\SoundcloudFacade::class,

Service Provider

After updating composer, add the ServiceProvider to the providers array in config/app.php

Configuration file

Next, you must migrate config :

php artisan vendor:publish --provider="Noweh\SoundcloudApi\SoundcloudServiceProvider"

⚠️ {CALLBACK_URL} must be identical to the one indicated in your SoundCloud account.

Usage

⚠️ Since July 2021, most calls to SoundCloud REST API requires an access_token.

You have to redirect the user to the SoundCloud login page:

return redirect(\Soundcloud::getAuthorizeUrl('a_custom_param_to_retrieve_in_callback'));

On your callback URL, you can call GET/POST/PUT/DELETE methods. The access_token will be automatically generated with the code parameter present in this URL.

If you want to use API calls in another page, you have to set manually this data:

\Soundcloud::setCode('3-134981-158678512-IwAXqypKWlDJCF');

// API Call
...

Get Player Embed

This call doest not requires an access_token.

To retrieve the widget embed code for any SoundCloud URL pointing to a user, set, or a playlist, do the following:

// Required parameter
$url = 'https://soundcloud.com/......';

// Optional parameters
$maxheight = 180;
$sharing = true;
$liking = true;
$download = false;
$show_comments = true;
$show_playcount = false;
$show_user = false;

try {
    $response = \Soundcloud::getPlayerEmbed($url, $maxheight, $sharing, $liking, $download, $show_comments, $show_playcount, $show_user)
} catch (Exception $e) {
    exit($e->getMessage());
}

GET

try {
    $response = \Soundcloud::get('users/{CLIENT_ID}/tracks');
} catch (Exit $e) {
    exit($e->getMessage());
}

GET with pagination

Most results from our API are returned as a collection. The number of items in the collection returned is limited to 50 by default with a maximum value of 200. Most endpoints support a linked_partitioning parameter that allows you to page through collections. When this parameter is passed, the response will contain a next_href property if there are additional results. To fetch the next page of results, simply follow that URI. If the response does not contain a next_href property, you have reached the end of the results.

try {
    $tracks = [];
    $params = ['linked_partitioning' => true, 'limit' => 100 ];
    $response = \Soundcloud::get('users/{CLIENT_ID}/tracks', $params);
    while (property_exists($response, 'next_href') && !empty($response->next_href)) {
        $tracks = array_merge($tracks,$response->collection);
        $response = \Soundcloud::get($response->next_href);
    }
} catch (Exit $e) {
    exit($e->getMessage());
}

POST

try {
    $response = \Soundcloud::post(
        'tracks/1/comments',
        [
            'body' => 'a new comment'
        ]
    );
} catch (Exception $e) {
    exit($e->getMessage());
}

PUT

try {
    $response = \Soundcloud::put(
        'tracks/1',
        [
            'title' => 'my new title'
        ]
    );
} catch (Exception $e) {
    exit($e->getMessage());
}

DELETE

try {
    $response = \Soundcloud::delete('tracks/1');
} catch (Exception $e) {
    exit($e->getMessage());
}