Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Last Fm Now Playing

Last Fm Now Playing Laravel Package

spatie/last-fm-now-playing

Fetch the currently playing track for any Last.fm user. Provide your API key and username to retrieve artist, album, track name, artwork, and track URL, or false if nothing is playing. Throws BadResponse on errors.

View on GitHub
Deep Wiki
Context7

Get info on a track that user is currently playing

Frequently asked questions about Last Fm Now Playing
How do I install spatie/last-fm-now-playing in a Laravel project?
Run `composer require spatie/last-fm-now-playing` to install the package. Add your Last.fm API key to `.env` (e.g., `LASTFM_API_KEY=your_key`) or pass it directly to the `LastFmNowPlaying` class constructor. No additional configuration is required unless you want to bind it to Laravel’s service container.
Does this package work with Laravel 10 or newer?
The package hasn’t been updated since 2020, so it may not fully support Laravel 10+ out of the box. Test compatibility with your Laravel version, especially if using newer PHP features or dependency injection changes. If issues arise, check the GitHub issues or consider forking the package for updates.
Can I cache the 'now playing' responses to reduce API calls?
Yes, caching is highly recommended. Use Laravel’s cache drivers (e.g., Redis or file cache) to store responses. For example, wrap the API call in a `Cache::remember` block or implement a custom caching layer in your service. This avoids hitting Last.fm’s rate limits and improves performance.
What happens if Last.fm’s API is down or returns errors?
The package throws a `BadResponse` exception if the API fails. Handle this gracefully in your application—either by returning a fallback (e.g., cached data or a placeholder), notifying users, or implementing retry logic. Consider adding a queue job to retry failed requests asynchronously.
How do I display the 'now playing' data on a user profile in real time?
Fetch the data via the package’s `getTrackInfo` method and pass it to your Blade view or frontend framework (e.g., Vue/React). For live updates, use Laravel Echo with Pusher or a WebSocket service to broadcast changes whenever the track updates. Polling the API frequently isn’t recommended due to rate limits.
Is there a way to use this package without Laravel’s service container?
Yes, the package is stateless and can be used as a standalone class. Instantiate `LastFmNowPlaying` directly with your API key and call `getTrackInfo($username)`. This works in any PHP environment, not just Laravel, though you’ll miss Laravel-specific features like facades or dependency injection.
What data does the package return, and how should I structure it in my database?
The package returns an array with keys: `artist`, `album`, `trackName`, `artwork` (URL), and `trackUrl`. Normalize this data to fit your schema—e.g., store it in a `now_playing` table with columns for `user_id`, `track_name`, `artist`, and `album_art_url`. Use Laravel migrations to create the table if needed.
Are there alternatives to this package for fetching 'now playing' data?
Yes, consider direct API calls to Last.fm’s API using Guzzle or Laravel’s HTTP client, or explore packages like `spatie/laravel-activitylog` for activity tracking. For Spotify integration, use `spotify-web-api-php`. Evaluate alternatives based on your needs—some may offer better error handling or real-time features.
How do I handle Last.fm’s API rate limits in production?
Last.fm’s API has strict rate limits (e.g., 600 calls/hour for non-pro accounts). Cache responses aggressively and avoid polling too frequently. For high-traffic apps, use a queue to space out API calls or implement a webhook-based solution if Last.fm supports it. Monitor your API usage via Last.fm’s developer dashboard.
Can I use this package to track multiple users' 'now playing' status simultaneously?
Yes, but be mindful of rate limits. Fetch data for multiple users in parallel using Laravel’s `parallel` helper or a queue worker. For example, dispatch a job for each user with `dispatch(new FetchNowPlayingJob($username))`. This distributes the load and avoids hitting rate limits too quickly.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport