Skip to content

Wrapper for Last.FM API v2 with ES6 style classes and promises.

Notifications You must be signed in to change notification settings

leemm/last.fm.api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

last.fm.api

Build Status

Wrapper for Last.FM API v2 with ES6 style classes and promises. Supports Desktop, Web and Mobile auth. http://www.last.fm/api

Prerequisites

You need an API key and secret:

Install

npm install last.fm.api --save

Usage

All API methods listed in the developer documentation http://www.last.fm/api are mapped to the API class. e.g. api.album.getTags() for the API method album.getTags. You do not need to supply api_sig and api_key to the methods, these will be generated automatically. You must supply sk (session key) for methods that require it.

'use strict';

const API = require('last.fm.api'),
    api = new API({ 
        apiKey: '<YOUR API KEY>', 
        apiSecret: '<YOUR API SECRET>'
    });

API

new API(options);

  • apiKey String - Your API key
  • apiSecret String - Your API secret
  • debug Boolean - If true the URL and Querystring/Form Body are written to the console. (default false)
  • username String - Your Last.FM username, required when using authentication for Mobile apps (optional)
  • password String - Your Last.FM password, required when using authentication for Mobile apps (optional)

Examples

There are a lot of examples in the /examples folder which I've tried to comment thoroughly. Likewise there are examples of Desktop, Mobile and Web Authorisation.

'use strict';

const API = require('last.fm.api'),
    api = new API({ 
        apiKey: '<YOUR API KEY>', 
        apiSecret: '<YOUR API SECRET>'
    });

api.album.getTags({
    artist: 'nirvana',
    album: 'nevermind'
})
    .then(tags => { console.log(tags); })
    .catch(err => { console.error(err); });

/*
// tags = ...
{
    "tags": {
        "tag": [{
            "name": "metal",
            "url": "http://www.last.fm/tag/metal"
        }, {
            "name": "punk",
            "url": "http://www.last.fm/tag/punk"
        }, {
            "name": "Grunge",
            "url": "http://www.last.fm/tag/Grunge"
        }, {
            "name": "noise",
            "url": "http://www.last.fm/tag/noise"
        }],
        "@attr": {
            "artist": "Nirvana",
            "album": "Nevermind"
        }
    }
} */

To get a session key for mobile apps

'use strict';

const API = require('last.fm.api'),
    api = new API({ 
        apiKey: '<YOUR API KEY>', 
        apiSecret: '<YOUR API SECRET>',
        debug: true,
        username: '<YOUR USERNAME>',
        password: '<YOUR PASSWORD>'
    });

// Get Mobile Session by supplying username and password into API constructor
api.auth.getMobileSession({})
    .then(json => json.session)
    .then(session => {
        console.log('session', session);
        process.exit();
    })
    .catch(err => {
        console.error('ERRORED!', JSON.stringify(err));
        process.exit();
    });

/*
// result = ...
{
    "subscriber": 0,
    "name": "<YOUR USERNAME>",
    "key": "<SESSION KEY>"
} */

About

Wrapper for Last.FM API v2 with ES6 style classes and promises.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published