go-discogs is a Go client library for the Discogs API. Check the usage section to see how to access the Discogs API.
The lib is under MIT but be sure you are familiar with Discogs API Terms of Use.
- Database
- Releases
- Release Rating
- Master Releases
- Master Versions
- Artists
- Artist Releases
- Label
- All Label Releases
- Search
- User Collection
- Collection Folders
- Folder
- Collection Items by Folder
- Collection Items by Release
- Marketplace
- Price Suggestions
- Release Statistics
go get github.com/irlndts/go-discogs
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.
import "github.com/irlndts/go-discogs"
Some requests require authentication (as any user). According to Discogs, 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.
client, err := discogs.New(&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", // optional
})
release, _ := client.Release(9893847)
fmt.Println(release.Artists[0].Name, " - ", release.Title)
// St. Petersburg Ska-Jazz Review - Elephant Riddim
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.
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)
ReleaseTitle 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
PerPage int // optional
}
request := discogs.SearchRequest{Artist: "reggaenauts", ReleaseTitle: "river rock", Page: 0, PerPage: 1}
search, _ := client.Search(request)
for _, r := range search.Results {
fmt.Println(r.Title)
}
Query a users collection.
collection, err := client.CollectionFolders("my_user")
folder, err := client.Folder("my_user", 0)
items, err := client.CollectionItemsByFolder("my_user", 0, &Pagination{Sort: "artist", SortOrder: "desc", PerPage: 2})
items, err := client.CollectionItemsByRelease("my_user", 12934893)
Query a user's marketplace
Retrieve price suggestions for the provided Release ID
suggestions, err := client.PriceSuggestions(12345)
Retrieve marketplace statistics for the provided Release ID
stats, err := client.ReleaseStatistics(12345)
...
by the way, this is my discogs page