Last.fm SDK for PHP
, (*1)
This repository contains library the allows you to access Last.fm platform from your PHP application., (*2)
For details into how authenticate and obtain API Keys read Getting Started
under API Introduction, (*3)
Read the official API Documents at https://www.last.fm/api/intro for more information., (*4)
Features
Undermentioned is a list of feature this library provides:, (*5)
- Support for custom implementations (providers)
- Choice of library used to for sending HTTP Requests
- Framework Agnostic
- Flexible & easy to extend
Installation
You can install this package via composer using this command:, (*6)
composer require php-http/guzzle6-adapter guzzlehttp/psr7 php-http/message sourceout/lastfm-php-sdk
Although, the default installation instruction recommends Guzzle Http client it is not the only client that can be used. Refer the following list php-http/client-implementation for choices of clients., (*7)
For more information on this approach refer this documentation., (*8)
Usage
use Sourceout\LastFm\ProviderInterface;
use Sourceout\LastFm\Client as LastFmClient;
use Sourceout\LastFm\Provider\LastFm\LastFm;
/** @var ProviderInterface $provider */
$provider = new LastFm(['api_key' => 'your_api_key_here']);
/** @var LastFmClient $lastFmClient */
$lastFmClient = new LastFmClient();
/** @var Collection $topArtists */
$topArtists = $lastFmClient
->getServiceFactory($provider)
->getGeoService()
->getTopArtists(
'united states', // location
1, // page number
50 // results per page
);
You can also register your own custom provider instead of using the default, for e.g., (*9)
use Sourceout\LastFm\Client as LastFmClient;
$lastFmClient = new LastFmClient();
$lastFmClient->registerCustomProviders(
[
\path\to\custom\provider::class
...
...
]
);
Additionally, although the package features auto-discovery of http package/client, you can also set your own Http Client as well, below are examples where you provide Guzzle6 instance., (*10)
Method 1
use Sourceout\LastFm\Http\Http;
use Sourceout\LastFm\Http\HttpInterface;
use Sourceout\LastFm\Client as LastFmClient;
use Http\Adapter\Guzzle6\Client as GuzzleClient;
use Http\Message\MessageFactory\GuzzleMessageFactory;
/** @var HttpInterface $http */
$http = new Http();
$http->setHttpClient(new GuzzleClient());
$http->setMessageFactory(new GuzzleMessageFactory());
/** @var LastFmClient $lastFmClient */
$lastFmClient = new LastFmClient($http);
Method 2
use Sourceout\LastFm\Http\Http;
use Sourceout\LastFm\Http\HttpInterface;
use Sourceout\LastFm\Client as LastFmClient;
use Http\Adapter\Guzzle6\Client as GuzzleClient;
use Http\Message\MessageFactory\GuzzleMessageFactory;
/** @var HttpInterface $http */
$http = new Http();
$http->setHttpClient(new GuzzleClient());
$http->setMessageFactory(new GuzzleMessageFactory());
/** @var LastFmClient $lastFmClient */
$lastFmClient = new LastFmClient();
$lastFmClient->setHttpClient($http);
Supported Methods
There is a long list of API(s) provided by LastFm (ref.: https://www.last.fm/api), undermentioned is the list of methods currently supported by this library:, (*11)
Geo |
|
Geo.getTopArtists |
Get the most popular artists on Last.fm by country |
Geo.getTopTracks |
Get the most popular tracks on Last.fm last week by country |
Tests
You can run the tests with:, (*12)
vendor/bin/phpunit
Contributing
Please see CONTRIBUTING for details., (*13)
Security
In case, you discover any security related issues, please email pulkit.swarup@gmail.com instead of using the issue tracker., (*14)
License
Please see License File for more information., (*15)