homura-js
Version:
LastFM API Wrapper
81 lines (69 loc) • 2.43 kB
JavaScript
/*
* Track methods.
*/
export default class Track {
constructor(Homura){
this.Homura = Homura;
this.attributes = Homura.getAttributes();
}
/**
* @param {string} Track
* @param {string=} Artist - *Optional
* @param {number=} Page - *Optional
* @param {number=} Limit - *Optional
*
* @returns {Promise} Search for a track by track name. Returns track matches sorted by relevance.
*/
search = (track, artist, limit, page) => {
let _URL = `${this.attributes.baseURL}/2.0/?method=track.search&`
const queryParams = new URLSearchParams ({
api_key: this.attributes.apiKey,
format: 'json',
track: track,
...(artist ? {artist: artist} : null),
...(limit ? {limit: limit} : null),
...(page ? {page: page} : null)
}).toString()
return this.Homura.fetchData(_URL + queryParams)
}
/**
* @param {string} Track
* @param {string} Artist
* @param {string} Username - *Optional
* @param {string=} Mbid - *Optional
*
* @returns {Promise} Get the metadata for a track on Last.fm using the artist/track name or a musicbrainz id.
*/
getInfo = (track, artist, username, mbid) => {
let _URL = `${this.attributes.baseURL}/2.0/?method=track.getInfo&`
const queryParams = new URLSearchParams ({
api_key: this.attributes.apiKey,
autocorrect: 1,
format: 'json',
track: track,
artist: artist,
...(username ? {username:username} : null),
...(mbid ? {mbid: mbid} : null)
}).toString()
return this.Homura.fetchData(_URL + queryParams)
}
/**
* @param {string} Track
* @param {string} Artist
* @param {number=} Limit - *Optional
*
* @returns {Promise} Get the similar tracks for this track on Last.fm, based on listening data.
*/
getSimilar = (track, artist, limit) => {
let _URL = `${this.attributes.baseURL}/2.0/?method=track.getSimilar&`
const queryParams = new URLSearchParams ({
api_key: this.attributes.apiKey,
autocorrect: 1,
format: 'json',
track: track,
artist: artist,
...(limit ? {limit:limit} : limit),
}).toString()
return this.Homura.fetchData(_URL + queryParams)
}
}