IF.Lastfm/README.md

101 lines
3.4 KiB
Markdown
Raw Normal View History

2015-05-19 13:32:05 +01:00
# Inflatable Last.fm .NET SDK
[![Code licence](https://img.shields.io/badge/licence-MIT-blue.svg?style=flat)](LICENCE.md) [![Build status](https://ci.appveyor.com/api/projects/status/c8gg2cw4jibbsg3u)](https://ci.appveyor.com/project/rikkit/lastfm) [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/inflatablefriends/lastfm?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
2014-09-16 17:20:29 +01:00
2015-05-19 13:32:05 +01:00
## Project Goals
2013-07-01 15:36:58 +01:00
2015-05-19 13:32:05 +01:00
- To provide complete .NET bindings for the Last.fm REST API
- To build useful components for Last.fm applications
- To be the very best, like no-one ever was
2013-07-01 15:36:58 +01:00
2015-05-19 13:32:05 +01:00
## Contributing
2014-11-04 14:38:06 +00:00
2015-05-19 13:32:05 +01:00
Input is always welcome! [Raise an issue on GitHub](https://github.com/inflatablefriends/lastfm/issues), or send a message to [the Gitter chatroom](https://gitter.im/inflatablefriends/lastfm) if you need help with the library.
2014-11-04 14:38:06 +00:00
2015-05-19 13:32:05 +01:00
If you're interested in contributing code or documentation, [this short introduction to the library](doc/contributing.md) will help you get started.
2013-07-01 15:36:58 +01:00
## Quickstart
2015-04-26 19:16:06 +01:00
2014-12-02 15:44:38 +00:00
### Installing the SDK
2014-11-04 14:38:06 +00:00
2015-04-26 19:16:06 +01:00
#### NuGet - production code
2014-11-04 14:38:06 +00:00
2015-04-26 19:16:06 +01:00
Install [the NuGet package](
2015-05-19 13:32:05 +01:00
https://www.nuget.org/packages/Inflatable.Lastfm/). Search for ```Inflatable.Lastfm``` in the NuGet package browser.
2015-04-26 19:16:06 +01:00
#### NuGet - prerelease code
2014-11-04 14:38:06 +00:00
2015-07-12 01:34:49 +01:00
There is a NuGet package built for every commit to master. Add ```https://ci.appveyor.com/nuget/lastfm``` to your NuGet package sources, and install the ```IF.Lastfm.Core``` prerelease package.
2015-04-26 19:16:06 +01:00
#### From source
Clone this repo and reference ```IF.Lastfm.Core``` in your application. Your IDE needs to support C# 6 and portable libraries - Visual Studio 2015 Community or better.
2014-11-04 14:38:06 +00:00
### Using the SDK
2015-04-26 19:16:06 +01:00
First, [sign up for Last.fm API](http://last.fm/api) access if you haven't already.
2014-11-04 14:38:06 +00:00
2015-04-26 19:16:06 +01:00
Create a LastfmClient:
2014-11-04 14:38:06 +00:00
```c#
2015-04-26 19:16:06 +01:00
var client = new LastfmClient("apikey", "apisecret");
2014-11-04 14:38:06 +00:00
```
2015-04-26 19:16:06 +01:00
Get information about an album:
2013-07-01 15:36:58 +01:00
2014-10-15 21:06:37 +01:00
```c#
2015-04-26 19:16:06 +01:00
var response = client.Album.GetInfoAsync("Grimes", "Visions");
2014-11-04 14:38:06 +00:00
2015-04-26 19:16:06 +01:00
LastAlbum visions = response.Content;
2014-11-04 14:38:06 +00:00
```
2015-05-19 13:32:05 +01:00
For methods that return several items, you can iterate over the response:
2014-11-04 14:38:06 +00:00
```c#
2015-04-26 19:16:06 +01:00
var pageResponse = await client.Artist.GetTopTracksAsync("Ben Frost", page: 5, itemsPerPage: 100);
2014-11-04 14:38:06 +00:00
2015-04-26 19:16:06 +01:00
var trackNames = pageResponse.Select(track => track.Name);
```
2015-04-26 19:16:06 +01:00
Several API methods require user authentication. Once you have your user's Last.fm username and password, you can authenticate your instance of LastfmClient:
```c#
var response = await client.Auth.GetSessionTokenAsync("username", "pass");
// or load an existing session
UserSession cachedSession;
var succesful = client.Auth.LoadSession(cachedSession);
```
2013-07-01 15:36:58 +01:00
2015-04-26 19:16:06 +01:00
Authenticated methods then work like any other
2014-10-15 21:06:37 +01:00
2015-04-26 19:16:06 +01:00
```c#
if (client.Auth.HasAuthenticated) {
var response = await client.Track.LoveAsync("Ibi Dreams of Pavement (A Better Day)", "Broken Social Scene");
}
```
2014-10-15 21:06:37 +01:00
2015-04-05 00:46:02 +01:00
## Documentation
2014-11-04 14:38:06 +00:00
2015-04-05 00:46:02 +01:00
- [Api method progress report](PROGRESS.md)
2015-05-19 13:32:05 +01:00
- [Contributing](doc/contributing.md)
2015-04-05 00:46:02 +01:00
- [Scrobbling](doc/scrobbling.md)
- [Dependency Injection](doc/dependency-injection.md)
2015-05-19 13:32:05 +01:00
- [Example Windows Phone app](https://github.com/inflatablefriends/lastfm-samples)
2014-10-15 21:06:37 +01:00
## Platform Compatibility
2015-05-19 13:32:05 +01:00
The library is compatible with:
2014-10-15 21:06:37 +01:00
2015-05-19 13:32:05 +01:00
- .NET 4.5 (including Mono)
2014-10-15 21:06:37 +01:00
- Windows 8.0
- Windows Phone 8.1
- Windows Phone Silverlight 8
2015-05-19 13:32:05 +01:00
- Xamarin.Android and Xamarin.iOS
2014-10-15 21:06:37 +01:00
2015-05-19 13:32:05 +01:00
If you need support for Windows Phone 7, or another .NET platform, it's probably easy enough. Raise an issue or send a PR.
2015-04-26 19:16:06 +01:00
## Credits
Maintained by [@rikkilt](http://twitter.com/rikkilt).
2015-05-19 13:32:05 +01:00
Thanks to [all contributors](https://github.com/inflatablefriends/lastfm/graphs/contributors)!