barryvanveen / lastfm
Last.fm API client for PHP 7+
Installs: 4 246
Dependents: 0
Suggesters: 0
Security: 0
Stars: 23
Watchers: 3
Forks: 6
Open Issues: 0
Requires
- php: ^8.0
- fig/http-message-util: ^1.1
- guzzlehttp/guzzle: ^6.5.6 || ^7.4.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8.0
- phpunit/phpunit: ^9.0
- rregeer/phpunit-coverage-check: ^0.3.1
README
API keys
You can create a last.fm API account at http://www.last.fm/api/account/create.
Installation
Via Composer
$ composer require barryvanveen/lastfm
Laravel installation
Add a LASTFM_API_KEY variable to your .env configuration. You could also publish the default configuration and alter it yourself:
php artisan vendor:publish --provider="Barryvanveen\Lastfm\LastfmServiceProvider"
Update config/app.php
by adding the LastfmServiceProvider:
'providers' => [ ... Barryvanveen\Lastfm\LastfmServiceProvider::class, ];
If you are using Laravel 5.5 or higher, the service provider will be detected automagically by Laravel's package discovery.
Tested against Laravel 5.* but probably works in most versions because it is so simple. Please create an issue if it doesn't work for you.
Usage
Basic example
use Barryvanveen\Lastfm\Lastfm; use GuzzleHttp\Client; $lastfm = new Lastfm(new Client(), 'YourApiKey'); $albums = $lastfm->userTopAlbums('AnyUsername')->get();
Laravel example
use Barryvanveen\Lastfm\Lastfm; public function index(Lastfm $lastfm) { $albums = $lastfm->userTopAlbums('AnyUsername')->get(); return view('home', compact('albums')); }
All available methods
// Get top albums for user $albums = $lastfm->userTopAlbums('AnyUsername')->get(); // Get top artists for user $artists = $lastfm->userTopArtists('AnyUsername')->get(); // Get recent tracks for user $tracks = $lastfm->userRecentTracks('AnyUsername')->get(); // Get user info $info = $lastfm->userInfo('AnyUsername')->get(); // Get track that user is now listening to, or FALSE $trackOrFalse = $lastfm->nowListening('AnyUsername'); // Get the weekly top albums given a starting day $albums = $lastfm->userWeeklyTopAlbums('AnyUsername', new \DateTime('2017-01-01')); // Get the weekly top artists given a starting day $artists = $lastfm->userWeeklyTopArtists('AnyUsername', new \DateTime('2017-01-01')); // Get the weekly top tracks given a starting day $tracks = $lastfm->userWeeklyTopTracks('AnyUsername', new \DateTime('2017-01-01'));
Filtering results
// Define time period for results $lastfm->userTopAlbums('AnyUsername') ->period(Barryvanveen\Lastfm\Constants::PERIOD_WEEK) ->get(); // Limit number of results $lastfm->userTopAlbums('AnyUsername') ->limit(5) ->get(); // Retrieve paginated results $lastfm->userTopAlbums('AnyUsername') ->limit(5) ->page(2) ->get();
Valid time periods
// use these constants as an argument to ->period() Barryvanveen\Lastfm\Constants::PERIOD_WEEK = '7day'; Barryvanveen\Lastfm\Constants::PERIOD_MONTH = '1month'; Barryvanveen\Lastfm\Constants::PERIOD_3_MONTHS = '3month'; Barryvanveen\Lastfm\Constants::PERIOD_6_MONTHS = '6month'; Barryvanveen\Lastfm\Constants::PERIOD_YEAR = '12month'; Barryvanveen\Lastfm\Constants::PERIOD_OVERALL = 'overall';
Official API docs
Read the official API documentation at http://www.last.fm/api.
Change log
Please see CHANGELOG for more information what has changed recently.
Testing
Copy phpunit.xml.dist
to phpunit.xml
. Then run the tests using:
$ composer test
Contributing
Please see CONTRIBUTING and CONDUCT for details.
Security
If you discover any security related issues, please email barryvanveen@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.