Common Lisp Package: CL-LASTFM

Common Lisp wrapper to Last.fm web service. See more explanation from the @a[http://www.lastfm.fr/api]{website}. It has been tested under @a[http://www.sbcl.org]{SBCL} @begin[Albums]{section} @aboutfun{album-get-info} @aboutfun{album-search} @end{section} @begin[Artists]{section} @aboutfun{artist-get-events} @aboutfun{artist-get-info} @aboutfun{artist-get-similar} @aboutfun{artist-get-top-albums} @aboutfun{artist-get-top-fans} @aboutfun{artist-get-top-tags} @aboutfun{artist-get-top-tracks} @aboutfun{artist-search} @end{section} @begin[Geo]{section} @aboutfun{geo-get-events} @aboutfun{geo-top-artists} @aboutfun{geo-top-tracks} @end{section} @begin[User]{section} @aboutfun{user-get-events} @aboutfun{user-get-friends} @aboutfun{user-get-loved-tracks} @aboutfun{user-get-neighbours} @aboutfun{user-get-top-albums} @aboutfun{user-get-top-artists} @aboutfun{user-get-top-tags} @aboutfun{user-get-top-tracks} @aboutfun{user-get-recent-tracks} @aboutfun{user-get-shouts} @aboutfun{user-get-weekly-album-chart} @aboutfun{user-get-weekly-artist-chart} @aboutfun{user-get-weekly-chart-list} @aboutfun{user-get-weekly-track-chart} @end{section} @begin[Group]{section} @aboutfun{group-get-members} @aboutfun{group-get-weekly-album-chart} @aboutfun{group-get-weekly-artist-chart} @aboutfun{group-get-weekly-chart-list} @aboutfun{group-get-weekly-track-chart} @end{section} @begin[Library]{section} @aboutfun{library-get-albums} @aboutfun{library-get-artists} @aboutfun{library-get-tracks} @end{section} @begin[Tag]{section} @aboutfun{tag-get-similar} @aboutfun{tag-get-similar} @aboutfun{tag-get-top-albums} @aboutfun{tag-get-top-artists} @aboutfun{tag-get-top-tracks} @aboutfun{tag-get-top-tags} @aboutfun{tag-get-weekly-artist-chart} @aboutfun{tag-get-weekly-chart-list} @aboutfun{tag-search} @end{section} @begin[Track]{section} @aboutfun{track-get-info} @aboutfun{track-get-similar} @aboutfun{track-get-top-fans} @aboutfun{track-get-top-tags} @aboutfun{track-search} @end{section} @begin[Events]{section} @aboutfun{event-get-info} @aboutfun{event-get-shouts} @end{section} @begin[TasteOMeter]{section} @aboutfun{tasteometer-compare} @end{section}

README:

FUNCTION

Public

ALBUM-GET-INFO (API-KEY &KEY ARTIST-NAME ALBUM-NAME MBID LANG)

@short{Get the metadata for an album on Last.fm using the album name or a musicbrainz id. See @fun{playlist-fetch} on how to get the album playlist. This service does not require authentication.} @arg[api-key]{A Last.fm API key} @arg[artist-name]{The artist name in question} @arg[album-name]{The album name in question} @arg[mbid]{The musicbrainz id for the album} @arg[lang]{The language to return the biography in, expressed as an ISO 639 alpha-2 code} @see-condition{lastfm-request-error} @return{An XML stream}

ARTIST-GET-EVENTS (API-KEY ARTIST-NAME)

@short{Get a list of upcoming events for this artist. Easily integratable into calendars, using the ical standard. This service does not require authentication.} @arg[api-key]{A Last.fm API key} @arg[artist-name]{The artist name in question} @see-condition{lastfm-request-error} @return{An XML stream}

ARTIST-GET-INFO (API-KEY &KEY ARTIST-NAME MBID LANG)

@short{Get the metadata for an artist on Last.fm. Includes biography. . This service does not require authentication.} @arg[api-key]{A Last.fm API key} @arg[artist-name]{The artist name in question} @arg[mbid]{The musicbrainz id for the artist} @arg[lang]{The language to return the biography in, expressed as an ISO 639 alpha-2 code} @see-condition{lastfm-request-error} @return{An XML stream}

ARTIST-GET-SIMILAR (API-KEY ARTIST-NAME &OPTIONAL LIMIT)

@short{Get all the artists similar to this artist. This service does not require authentication.} @arg[api-key]{A Last.fm API key} @arg[artist-name]{The artist name in question} @arg[limit]{Limit the number of similar artists returned} @see-condition{lastfm-request-error} @return{An XML stream}

ARTIST-GET-TOP-ALBUMS (API-KEY ARTIST-NAME)

@short{Get the top albums for an artist on Last.fm, ordered by popularity. This service does not require authentication.} @arg[api-key]{A Last.fm API key} @arg[artist-name]{The artist name in question} @see-condition{lastfm-request-error} @return{An XML stream}

ARTIST-GET-TOP-FANS (API-KEY ARTIST-NAME)

@short{Get the top fans for an artist on Last.fm, based on listening data. This service does not require authentication.} @arg[api-key]{A Last.fm API key} @arg[artist-name]{The artist name in question} @see-condition{lastfm-request-error} @return{An XML stream}

ARTIST-GET-TOP-TAGS (API-KEY ARTIST-NAME)

@short{Get the top tags for an artist on Last.fm, ordered by popularity. This service does not require authentication.} @arg[api-key]{A Last.fm API key} @arg[artist-name]{The artist name in question} @see-condition{lastfm-request-error} @return{An XML stream}

ARTIST-GET-TOP-TRACKS (API-KEY ARTIST-NAME)

@short{Get the top tracks by an artist on Last.fm, ordered by popularity This service does not require authentication.} @arg[api-key]{A Last.fm API key} @arg[artist-name]{The artist name in question} @see-condition{lastfm-request-error} @return{An XML stream}

EVENT-GET-INFO (API-KEY EVENTID)

@short{Get the metadata for an event on Last.fm. Includes attendance and lineup information} @arg[api_key]{A Last.fm API key} @arg[eventid]{The numeric Last.fm event id} @see-condition{lastfm-request-error} @return{An XML stream}

EVENT-GET-SHOUTS (API-KEY EVENTID)

@short{Get shouts for this event} @arg[api_key]{A Last.fm API key} @arg[eventid]{The numeric Last.fm event id} @see-condition{lastfm-request-error} @return{An XML stream}

GEO-GET-EVENTS (API-KEY &KEY LOCATION LAT LONG PAGE DISTANCE)

@short{Get all events in a specific location by country or city name. This service does not require authentication} @arg[api_key]{A Last.fm API key} @arg[location]{Specifies a location to retrieve events for (service returns nearby events by default} @arg[lat]{Specifies a latitude value to retrieve events for (service returns nearby events by default} @arg[long]{Specifies a longitude value to retrieve events for (service returns nearby events by default)} @arg[page]{Display more results by pagination} @arg[distance]{Find events within a specified distance} @see-condition{lastfm-request-error} @return{An XML stream}

GEO-TOP-ARTISTS (API-KEY COUNTRY-NAME)

@short{Get the most popular artists on Last.fm by country. This service does not require authentication} @arg[api_key]{A Last.fm API key} @arg[country-name]{A country name, as defined by the ISO 3166-1 country names standard} @see-condition{lastfm-request-error} @return{An XML stream}

GEO-TOP-TRACKS (API-KEY COUNTRY-NAME &OPTIONAL LOCATION)

@short{Get the most popular tracks on Last.fm by country . This service does not require authentication} @arg[api_key]{A Last.fm API key} @arg[country-name]{A country name, as defined by the ISO 3166-1 country names standard} @arg[location]{A metro name, to fetch the charts for (must be within the country specified)} @see-condition{lastfm-request-error} @return{An XML stream}

GROUP-GET-MEMBERS (API-KEY GROUP)

@short{Get a list of members for this group. This service does not require authentication} @arg[api_key]{A Last.fm API key} @arg[group]{The group name to fetch the members of} @see-condition{lastfm-request-error} @return{An XML stream}

GROUP-GET-WEEKLY-ALBUM-CHART (API-KEY GROUP &KEY FROM TO)

@short{Get an album chart for a group, for a given date range. If no date range is supplied, it will return the most recent album chart for this group.} @arg[api_key]{A Last.fm API key} @arg[group]{The last.fm group name to fetch the charts of} @arg[from]{The date at which the chart should start from} @arg[to]{The date at which the chart should end on} @see-condition{lastfm-request-error} @return{An XML stream}

GROUP-GET-WEEKLY-ARTIST-CHART (API-KEY GROUP &KEY FROM TO)

@short{Get an artist chart for a group, for a given date range. If no date range is supplied, it will return the most recent album chart for this group} @arg[api_key]{A Last.fm API key} @arg[group]{The last.fm group name to fetch the charts of} @arg[from]{The date at which the chart should start from} @arg[to]{The date at which the chart should end on} @see-condition{lastfm-request-error} @return{An XML stream}

GROUP-GET-WEEKLY-CHART-LIST (API-KEY GROUP)

@short{Get a list of available charts for this group, expressed as date ranges which can be sent to the chart services} @arg[api_key]{A Last.fm API key} @arg[group]{The last.fm group name to fetch the charts list for} @see-condition{lastfm-request-error} @return{An XML stream}

GROUP-GET-WEEKLY-TRACK-CHART (API-KEY GROUP &KEY FROM TO)

@short{Get a track chart for a group, for a given date range. If no date range is supplied, it will return the most recent album chart for this group} @arg[api_key]{A Last.fm API key} @arg[group]{The last.fm group name to fetch the charts of} @arg[from]{The date at which the chart should start from} @arg[to]{The date at which the chart should end on} @see-condition{lastfm-request-error} @return{An XML stream}

LIBRARY-GET-ALBUMS (API-KEY USER &KEY PAGE (LIMIT 49))

@short{A paginated list of all the albums in a user's library, with play counts and tag counts} @arg[api_key]{A Last.fm API key} @arg[user]{The user whose library you want to fetch} @arg[limit]{Limit the amount of albums returned} @arg[page]{The page number you wish to scan to} @see-condition{lastfm-request-error} @return{An XML stream}

LIBRARY-GET-ARTISTS (API-KEY USER &KEY PAGE (LIMIT 49))

@short{A paginated list of all the artists in a user's library, with play counts and tag counts} @arg[api_key]{A Last.fm API key} @arg[user]{The user whose library you want to fetch} @arg[limit]{Limit the amount of artists returned} @arg[page]{The page number you wish to scan to} @see-condition{lastfm-request-error} @return{An XML stream}

LIBRARY-GET-TRACKS (API-KEY USER &KEY PAGE (LIMIT 49))

@short{A paginated list of all the tracks in a user's library, with play counts and tag counts. } @arg[api_key]{A Last.fm API key} @arg[user]{The user whose library you want to fetch} @arg[limit]{Limit the amount of tracks returned} @arg[page]{The page number you wish to scan to} @see-condition{lastfm-request-error} @return{An XML stream}

TAG-GET-SIMILAR (API-KEY TAG)

@short{Search for tags similar to this one. Returns tags ranked by similarity, based on listening data} @arg[api_key]{A Last.fm API key} @arg[tag]{The tag name in question} @see-condition{lastfm-request-error} @return{An XML stream}

TAG-GET-TOP-ALBUMS (API-KEY TAG)

@short{Get the top albums tagged by this tag, ordered by tag count} @arg[api_key]{A Last.fm API key} @arg[tag]{The tag name in question} @see-condition{lastfm-request-error} @return{An XML stream}

TAG-GET-TOP-ARTISTS (API-KEY TAG)

@short{Get the top artists tagged by this tag, ordered by tag count} @arg[api_key]{A Last.fm API key} @arg[tag]{The tag name in question} @see-condition{lastfm-request-error} @return{An XML stream}

TAG-GET-TOP-TAGS (API-KEY)

@short{Fetches the top global tags on Last.fm, sorted by popularity (number of times used).} @arg[api_key]{A Last.fm API key} @see-condition{lastfm-request-error} @return{An XML stream}

TAG-GET-TOP-TRACKS (API-KEY TAG)

@short{Get the top tracks tagged by this tag, ordered by tag count} @arg[api_key]{A Last.fm API key} @arg[tag]{The tag name in question} @see-condition{lastfm-request-error} @return{An XML stream}

TAG-GET-WEEKLY-ARTIST-CHART (API-KEY TAG &KEY FROM TO LIMIT)

@short{Get an artist chart for a tag, for a given date range. If no date range is supplied, it will return the most recent artist chart for this tag} @arg[api_key]{A Last.fm API key} @arg[tag]{The tag name in question} @arg[from]{The date at which the chart should start from} @arg[to]{The date at which the chart should end on} @arg[limit]{The number of chart items to return} @see-condition{lastfm-request-error} @return{An XML stream}

TAG-GET-WEEKLY-CHART-LIST (API-KEY TAG)

@short{Get a list of available charts for this tag, expressed as date ranges which can be sent to the chart services} @arg[api_key]{A Last.fm API key} @arg[tag]{The tag name in question} @see-condition{lastfm-request-error} @return{An XML stream}

TASTEOMETER-COMPARE (API-KEY FIRST-TYPE SECOND-TYPE FIRST-VALUE SECOND-VALUE &KEY (LIMIT 5))

@short{Get a Tasteometer score from two inputs, along with a list of shared artists. If the input is a User or a Myspace URL, some additional information is returned.} @arg[api_key]{A Last.fm API key} @arg[fisrt-type]{Must be user, artists or myspace} @arg[second-type]{Must be user, artists or myspace} @arg[first-value]{Must be : Last.fm username or comma-separated artist names or a MySpace profile URL} @arg[second-value]{Must be : Last.fm username or comma-separated artist names or a MySpace profile URL} @arg[limit]{How many shared artists to display} @see-condition{lastfm-request-error} @return{An XML stream}

TRACK-GET-INFO (API-KEY &KEY ARTIST TRACK MBID)

@short{Get the metadata for a track on Last.fm using the artist/track name or a musicbrainz id} @arg[api-key]{A Last.fm API key} @arg[artist]{The artist name in question} @arg[track]{The track name in question} @arg[mbid]{The musicbrainz id for the track} @see-condition{lastfm-request-error} @return{An XML stream}

TRACK-GET-SIMILAR (API-KEY &KEY ARTIST TRACK MBID)

@short{Get the similar tracks for this track on Last.fm, based on listening data} @arg[api-key]{A Last.fm API key} @arg[artist]{The artist name in question} @arg[track]{The track name in question} @arg[mbid]{The musicbrainz id for the track} @see-condition{lastfm-request-error} @return{An XML stream}

TRACK-GET-TOP-FANS (API-KEY &KEY ARTIST TRACK MBID)

@short{Get the top fans for this track on Last.fm, based on listening data. Supply either track & artist name or musicbrainz id} @arg[api-key]{A Last.fm API key} @arg[artist]{The artist name in question} @arg[track]{The track name in question} @arg[mbid]{The musicbrainz id for the track} @see-condition{lastfm-request-error} @return{An XML stream}

TRACK-GET-TOP-TAGS (API-KEY &KEY ARTIST TRACK MBID)

@short{Get the top tags for this track on Last.fm, ordered by tag count. Supply either track & artist name or mbid} @arg[api-key]{A Last.fm API key} @arg[artist]{The artist name in question} @arg[track]{The track name in question} @arg[mbid]{The musicbrainz id for the track} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-EVENTS (API-KEY USER)

@short{Get a list of upcoming events that this user is attending. Easily integratable into calendars, using the ical standard. This service does not require authentication} @arg[api_key]{A Last.fm API key} @arg[user]{The user to fetch the events for} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-FRIENDS (API-KEY USER &KEY LIMIT RECENTTRACKS)

@short{Get a list of the user's friends on Last.fm This service does not require authentication} @arg[api_key]{A Last.fm API key} @arg[user]{The last.fm username to fetch the friends of} @arg[limit]{An integer used to limit the number of friends returned} @arg[recenttracks]{Whether or not to include information about friends' recent listening in the response} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-LOVED-TRACKS (API-KEY USER)

@short{Get the last 50 tracks loved by a user. This service does not require authentication} @arg[api_key]{A Last.fm API key} @arg[user]{The user name to fetch the loved tracks for} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-NEIGHBOURS (API-KEY USER &KEY LIMIT)

@short{Get a list of a user's neighbours on Last.fm This service does not require authentication} @arg[api_key]{A Last.fm API key} @arg[user]{The last.fm username to fetch the neighbours of} @arg[limit]{An integer used to limit the number of neighbours returned} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-RECENT-TRACKS (API-KEY USER &KEY LIMIT)

@short{Get a list of the recent tracks listened to by this user. Indicates now playing track if the user is currently listening} @arg[api_key]{A Last.fm API key} @arg[user]{The user name to fetch the recent tracks of} @arg[limit]{An integer used to limit the number of tracks returned} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-SHOUTS (API-KEY USER)

@short{Get shouts for this user} @arg[api_key]{A Last.fm API key} @arg[user]{The user name to fetch shouts for} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-TOP-ALBUMS (API-KEY USER &KEY PERIOD)

@short{Get the top albums listened to by a user. You can stipulate a time period. Sends the overall chart by default} @arg[api_key]{A Last.fm API key} @arg[user]{The user name to fetch top albums for} @arg[period]{overall | 3month | 6month | 12month - The time period over which to retrieve top albums for.} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-TOP-ARTISTS (API-KEY USER &KEY PERIOD)

@short{Get the top artists listened to by a user. You can stipulate a time period. Sends the overall chart by default.} @arg[api_key]{A Last.fm API key} @arg[user]{The user name to fetch top artists for} @arg[period]{overall | 3month | 6month | 12month - The time period over which to retrieve top albums for.} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-TOP-TAGS (API-KEY USER &KEY LIMIT)

@short{Get the top tags used by this user} @arg[api_key]{A Last.fm API key} @arg[user]{The user name} @arg[limit]{The number of tags returned} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-TOP-TRACKS (API-KEY USER &KEY PERIOD)

@short{Get the top tracks listened to by a user. You can stipulate a time period. Sends the overall chart by default. } @arg[api_key]{A Last.fm API key} @arg[user]{The user name to fetch top tracks for} @arg[period]{overall | 3month | 6month | 12month - The time period over which to retrieve top tracks for.} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-WEEKLY-ALBUM-CHART (API-KEY USER &KEY FROM TO)

@short{Get an album chart for a user profile, for a given date range. If no date range is supplied, it will return the most recent album chart for this user.} @arg[api_key]{A Last.fm API key} @arg[user]{The last.fm username to fetch the charts of} @arg[from]{The date at which the chart should start from} @arg[to]{The date at which the chart should end on} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-WEEKLY-ARTIST-CHART (API-KEY USER &KEY FROM TO)

@short{Get an artist chart for a user profile, for a given date range. If no date range is supplied, it will return the most recent artist chart for this user.} @arg[api_key]{A Last.fm API key} @arg[user]{The last.fm username to fetch the charts of} @arg[from]{The date at which the chart should start from} @arg[to]{The date at which the chart should end on} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-WEEKLY-CHART-LIST (API-KEY USER)

@short{Get a list of available charts for this user, expressed as date ranges which can be sent to the chart services} @arg[api_key]{A Last.fm API key} @arg[user]{The last.fm username to fetch the charts list for} @see-condition{lastfm-request-error} @return{An XML stream}

USER-GET-WEEKLY-TRACK-CHART (API-KEY USER &KEY FROM TO)

@short{Get a track chart for a user profile, for a given date range. If no date range is supplied, it will return the most recent track chart for this user} @arg[api_key]{A Last.fm API key} @arg[user]{The last.fm username to fetch the charts of} @arg[from]{The date at which the chart should start from} @arg[to]{The date at which the chart should end on} @see-condition{lastfm-request-error} @return{An XML stream}

Private

EXTRACT-LASTFM-XML-ERROR (XML)

Extract a LastFM error from a `XML' message. Returns an error code and an error message.

GET-CURRENT-DATE

Get current date in YYYY-MM-DD hh:mm:ss format.

GET-DATE-FORMATED (CONTROL-STRING)

Get current date in CONTROL-STRING format.

GET-TIMESTAMP

Get current date in YYYYMMDDHHMMSS format.

PERFORM-LASTFM-QUERY (QUERY &KEY PARAMETERS (METHOD GET))

Retreive informations from LastFM Web Service. `QUERY' is the HTTP request. `PARAMETERS' is a list of assoc list which specify HTTP parameters. `METHOD' is the HTTP method used to perform the HTTP call.

UNIX-TIMESTAMP

Get the Unix timestamp : seconds since Jan 01 1970.

URL-ENCODE-UTF8 (SEQUENCE)

URL encode in UTF-8 the sequence.

MACRO

Private

WITH-LASTFM-STREAM (STREAM &BODY BODY)

Macro which creates an HTTP url, add parameters executing body, and performs the HTTP request defined by uri.

Undocumented

DEF-LASTFM-URI (NAME URI)

GENERIC-FUNCTION

Public

Undocumented

ERROR-MESSAGE-OF (CONDITION)

REQUEST-ERROR-CODE-OF (CONDITION)

VARIABLE

Public

*DEBUG*

If T activate some logs.

Private

Undocumented

*API-KEY*

*API-SECRET-KEY*

CONDITION

Public

LASTFM-ERROR

Main Lastfm error.

LASTFM-PROTOCOL-ERROR

Lastfm protocol error.

LASTFM-REQUEST-ERROR

Condition raised when an invalide request to the Lastfm web services is performed. Available codes are : @pre{ * 2 : Invalid service -This service does not exist * 3 : Invalid Method - No method with that name in this package * 4 : Authentication Failed - You do not have permissions to access the service * 5 : Invalid format - This service doesn't exist in that format * 6 : Invalid parameters - Your request is missing a required parameter * 7 : Invalid resource specified * 9 : Invalid session key - Please re-authenticate * 10 : Invalid API key - You must be granted a valid key by last.fm * 11 : Service Offline - This service is temporarily offline. Try again later. * 12 : Subscribers Only - This service is only available to paid last.fm subscribers }

CONSTANT

Private

+LAST-FM-WS+

The LastFM web service.

Undocumented

+ALBUM-GET-INFO+

+ALBUM-SEARCH+

+ARTIST-GET-EVENTS+

+ARTIST-GET-INFO+

+ARTIST-GET-SIMILAR+

+ARTIST-GET-TOP-ALBUMS+

+ARTIST-GET-TOP-FANS+

+ARTIST-GET-TOP-TAGS+

+ARTIST-GET-TOP-TRACKS+

+ARTIST-SEARCH+

+EVENT-GET-INFO+

+EVENT-GET-SHOUTS+

+GEO-GET-EVENTS+

+GEO-TOP-ARTISTS+

+GEO-TOP-TRACKS+

+GROUP-GET-MEMBERS+

+GROUP-GET-WEEKLY-ALBUM-CHART+

+GROUP-GET-WEEKLY-ARTIST-CHART+

+GROUP-GET-WEEKLY-CHART-LIST+

+GROUP-GET-WEEKLY-TRACK-CHART+

+LIBRARY-GET-ALBUMS+

+LIBRARY-GET-ARTISTS+

+LIBRARY-GET-TRACKS+

+TAG-GET-SIMILAR+

+TAG-GET-TOP-ALBUMS+

+TAG-GET-TOP-ARTISTS+

+TAG-GET-TOP-TAGS+

+TAG-GET-TOP-TRACKS+

+TAG-GET-WEEKLY-ARTIST-CHART+

+TAG-GET-WEEKLY-CHART-LIST+

+TAG-SEARCH+

+TASTEOMETER-COMPARE+

+TRACK-GET-INFO+

+TRACK-GET-SIMILAR+

+TRACK-GET-TOP-FANS+

+TRACK-GET-TOP-TAGS+

+TRACK-SEARCH+

+USER-GET-EVENTS

+USER-GET-FRIENDS+

+USER-GET-LOVED-TRACKS+

+USER-GET-NEIGHBOURS+

+USER-GET-RECENT-TRACKS+

+USER-GET-SHOUTS+

+USER-GET-TOP-ALBUMS+

+USER-GET-TOP-ARTISTS+

+USER-GET-TOP-TAGS+

+USER-GET-TOP-TRACKS+

+USER-GET-WEEKLY-ALBUM-CHART+

+USER-GET-WEEKLY-ARTIST-CHART+

+USER-GET-WEEKLY-CHART-LIST+

+USER-GET-WEEKLY-TRACK-CHART+