This repository has been archived on 2023-04-13. You can view files and clone it, but cannot push or open issues or pull requests.
go-discogs/README.md

102 lines
3.4 KiB
Markdown
Raw Normal View History

2016-02-03 15:31:59 +00:00
# REST API 2.0 Discogs.com client
2016-02-04 12:30:49 +00:00
2017-02-14 19:01:50 +00:00
go-discogs is a Go client library for the [Discogs API](https://www.discogs.com/developers/). Check the usage section to see how to access the Discogs API.
2016-03-11 14:41:48 +00:00
### Feauteres
* Database
2017-02-14 19:01:50 +00:00
* [Releases](#releases)
2016-03-11 14:41:48 +00:00
* Master Releases
* Release Versions
* Artists
* Artist Releases
* Label
* All Label Releases
2017-02-14 19:01:50 +00:00
* [Search](#search)
2016-03-11 14:41:48 +00:00
Install
--------
2018-01-05 19:52:20 +00:00
go get -u github.com/irlndts/go-discogs
2016-03-11 14:41:48 +00:00
Usage
---------
The discogs package provides a client for accessing the Discogs API.
First of all import library and init client variable. According to discogs api documentation you [must provide your user-agent](https://www.discogs.com/developers/#page:home,header:home-general-information).
```go
2016-03-11 14:54:33 +00:00
import "github.com/irlndts/go-discogs"
```
```go
2017-02-14 19:01:50 +00:00
client := discogs.NewClient("TestDiscogsClient/0.0.1 +example.com", "")
```
2018-01-05 19:52:20 +00:00
Some requests require authentification (as any user). According to [Discogs](https://www.discogs.com/developers/#page:authentication,header:authentication-discogs-auth-flow), to send requests with Discogs Auth, you have two options: sending your credentials in the query string with key and secret parameters or a token parameter.
This is token way example:
2017-02-14 19:01:50 +00:00
```go
client := discogs.NewClient("TestDiscogsClient/0.0.1 +example.com", "sometoken")
2016-03-11 14:41:48 +00:00
```
#### Releases
```go
2017-04-26 13:01:06 +00:00
release, err := client..Release(9893847)
2016-03-11 14:41:48 +00:00
2017-04-25 16:39:32 +00:00
fmt.Println(release.Artists[0].Name, " - ", release.Title) // St. Petersburg Ska-Jazz Review - Elephant Riddim
2016-03-11 14:41:48 +00:00
```
#### Artists
```go
params := &discogs.LabelParams{Label_id: "890477", Page: 2, Per_page: 3}
2016-03-14 11:19:41 +00:00
label, _, err := client.Label.Releases(params)
2016-03-11 14:41:48 +00:00
for _, release := range label.Releases {
fmt.Println(release.Title)
}
/*
Someday / I Hate Everything About You
Spy Potion
Surf Attack From Russia
*/
```
2017-02-14 19:01:50 +00:00
#### Search
Issue a search query to discogs database. This endpoint accepts pagination parameters
Authentication (as any user) is required.
Use `SearchRequest` struc to create a request
```go
type SearchRequest struct {
Q string // search query (optional)
Type string // one of release, master, artist, label (optional)
Title string // search by combined “Artist Name - Release Title” title field (optional)
Release_title string // search release titles (optional)
Credit string // search release credits (optional)
Artist string // search artist names (optional)
Anv string // search artist ANV (optional)
Label string // search label names (optional)
Genre string // search genres (optional)
Style string // search styles (optional)
Country string // search release country (optional)
Year string // search release year (optional)
Format string // search formats (optional)
Catno string // search catalog number (optional)
Barcode string // search barcodes (optional)
Track string // search track titles (optional)
Submitter string // search submitter username (optional)
Contributer string // search contributor usernames (optional)
Page int // optional
Per_page int // optional
}
```
Example
```go
request:= &discogs.SearchRequest{Artist: "reggaenauts", Release_title: "river rock", Page: 0, Per_page: 1}
search, _, err := client.Search(request)
for _, r := range search.Results {
fmt.Println(r.Title)
}
```
2016-03-11 14:41:48 +00:00
etc.
More examples - soon