88 lines
3.3 KiB
Markdown
88 lines
3.3 KiB
Markdown
# REST API 2.0 Discogs.com client
|
|
|
|
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.
|
|
|
|
### Feauteres
|
|
* Database
|
|
* [Releases](#releases)
|
|
* Master Releases
|
|
* Release Versions
|
|
* Artists
|
|
* Artist Releases
|
|
* Label
|
|
* All Label Releases
|
|
* [Search](#search)
|
|
|
|
Install
|
|
--------
|
|
go get -u github.com/irlndts/go-discogs
|
|
|
|
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
|
|
import "github.com/irlndts/go-discogs"
|
|
```
|
|
|
|
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](https://www.discogs.com/settings/developers).
|
|
This is token way example:
|
|
```go
|
|
client, err := discogs.NewClient(&discogs.Options{
|
|
UserAgent: "Some Name",
|
|
Currency: "EUR", // optional, "USD" (default), "GBP", "EUR", "CAD", "AUD", "JPY", "CHF", "MXN", "BRL", "NZD", "SEK", "ZAR" are allowed
|
|
Token: "Some Token", // optional
|
|
URL: "https://api.discogs.com",
|
|
})
|
|
```
|
|
|
|
#### Releases
|
|
```go
|
|
release, err := client.Release.Release(9893847)
|
|
fmt.Println(release.Artists[0].Name, " - ", release.Title)
|
|
// St. Petersburg Ska-Jazz Review - Elephant Riddim
|
|
```
|
|
|
|
#### Search
|
|
Issue a search query to discogs database. This endpoint accepts pagination parameters
|
|
Authentication (as any user) is required.
|
|
|
|
Use `SearchRequest` struct 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)
|
|
}
|
|
```
|
|
|
|
etc.
|