sourceout / lastfm-php-sdk
LastFM SDK for PHP
Requires
- php: ^7.1
- php-http/client-implementation: ^1.0
- php-http/discovery: ^1.0
- php-http/httplug: ^1.0
- php-http/message-factory: ^1.0
- psr/http-message: ^1.0
- tightenco/collect: ^5.6
Requires (Dev)
- limedeck/phpunit-detailed-printer: ^3.2
- mockery/mockery: ^1.0.0
- php-http/message: ^1.0
- php-http/mock-client: ^1.0
- phpdocumentor/phpdocumentor: ^2.9
- phpunit/phpunit: ^6.4
Suggests
- guzzlehttp/psr7: Option 1: Message Factory required by HTTP Client to create messages
- php-http/guzzle6-adapter: Library depends on HTTPlug, it requires virtual package php-http/client-implementation
- php-http/message: Required by HTTP Client Libraries for PSR-7 Implementation
- slim/slim: Option 2: Message Factory required by HTTP Client to create messages
- zendframework/zend-diactoros: Option 2: Message Factory required by HTTP Client to create messages
This package is not auto-updated.
Last update: 2025-03-21 10:27:17 UTC
README
This repository contains library the allows you to access Last.fm platform from your PHP application.
For details into how authenticate and obtain API Keys read Getting Started
under API Introduction
Read the official API Documents at https://www.last.fm/api/intro for more information.
Features
Undermentioned is a list of feature this library provides:
- 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:
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.
For more information on this approach refer this documentation.
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.
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.
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:
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:
vendor/bin/phpunit
Contributing
Please see CONTRIBUTING for details.
Security
In case, you discover any security related issues, please email pulkit.swarup@gmail.com instead of using the issue tracker.
License
Please see License File for more information.