README
NAME
WebService::Lastfm - interact with Last.fm's API
SYNOPSIS
my $lastfm = WebService::Lastfm.new(:api-key<1234>, :api-secret<music>);
# Read request
say $lastfm.request('user.getInfo', :user<avuserow>);
# Update now playing
say $lastfm.write('track.updateNowPlaying',
:sk<SECRET KEY>,
:artist("Alan Parsons Project"),
:track<Time>,
:duration<360>,
);
DESCRIPTION
Bindings for Last.fm's API using the JSON format (instead of their default XML). You must register for their API to get an API key and API secret.
METHODS
new(api-secret)
Standard new method. All parameters are optional, but the API key is needed for all known requests, and the secret is needed for write methods.
request($method, *%params)
Make an unsigned GET request, used for read-only operations.
write($method, *%params)
Make a signed POST request, used for writing operations, the most famous of which is "scrobbling" (track.scrobble).
EXCEPTIONS
X::WebService::Lastfm is thrown on any error responses, with the decoded error message from Last.fm. Check the method's documentation (or the API documentation overall) for the meaning of the code.
CAVEATS
No packaged tests -- testing things that require API keys is nontrivial
The assumption about requests being either GET/unsigned or POST/signed may not be true, in which case more methods may be needed.
Undertested in general
TODO
Switch to HTTP::UserAgent, which needs work to implement this
Add tests somehow
Example scripts. Ideas include a history exporter and a CLI scrobbler
Optional caching mode
Some sort of pagination helper for some API calls
REQUIREMENTS
Rakudo Perl 6
LWP::Simple
JSON::Tiny
URI::Encode
Digest::MD5