Skip to content

thatobabusi/laravel-lastfm

Repository files navigation

Last.fm API client for PHP 8.*

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

API keys

You can create a last.fm API account at http://www.last.fm/api/account/create.

Installation

Via Composer

$ composer require thatobabusi/laravel-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="Thatobabusi\LaravelLastFm\LastfmServiceProvider"

Update config/app.php by adding the LastfmServiceProvider:

'providers' => [
    ...
    Thatobabusi\LaravelLastFm\LastfmServiceProvider::class,
];

If you are using Laravel 5.5 the service provider will be used 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 Thatobabusi\LaravelLastFm\Lastfm;
use GuzzleHttp\Client;
 
$lastfm = new Lastfm(new Client(), 'YourApiKey');
    
$albums = $lastfm->userTopAlbums('AnyUsername')->get();

Laravel example

use Thatobabusi\LaravelLastFm\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(Thatobabusi\LaravelLastFm\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()
Thatobabusi\LaravelLastFm\Constants::PERIOD_WEEK     = '7day';
Thatobabusi\LaravelLastFm\Constants::PERIOD_MONTH    = '1month';
Thatobabusi\LaravelLastFm\Constants::PERIOD_3_MONTHS = '3month';
Thatobabusi\LaravelLastFm\Constants::PERIOD_6_MONTHS = '6month';
Thatobabusi\LaravelLastFm\Constants::PERIOD_YEAR     = '12month';
Thatobabusi\LaravelLastFm\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 and fill in your own LASTFM_API_KEY. 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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages