was a fork of github.com/irlndts/go-discogs because it didn't properly handle the API, but does as of the v0.3.6 release!
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 to file
2018-03-13 00:12:06 +03:00
examples DSCGS-11 Improve SearchService 2018-03-13 00:12:06 +03:00
.discogs.go.swp DSCGS-11 Improve SearchService 2018-03-13 00:12:06 +03:00
.search.go.swp DSCGS-11 Improve SearchService 2018-03-13 00:12:06 +03:00
artists.go DSCGS-9 Rewrite MasterService 2018-03-12 21:13:09 +03:00
discogs_test.go Release 2018-03-12 19:31:50 +03:00
discogs.go DSCGS-11 Improve SearchService 2018-03-13 00:12:06 +03:00
errors.go DSCGS-4 Logic improved 2017-04-26 15:57:03 +03:00
labels.go DSCGS-10 Rewrite LabelService 2018-03-12 23:31:47 +03:00
masters.go DSCGS-9 Rewrite MasterService 2018-03-12 21:13:09 +03:00
models.go DSCGS-10 Rewrite LabelService 2018-03-12 23:31:47 +03:00
README.md Release improvement 2018-03-12 19:30:58 +03:00
releases_test.go Release improvement 2018-03-12 19:30:58 +03:00
releases.go Rating 2018-03-12 19:51:37 +03:00
search.go DSCGS-11 Improve SearchService 2018-03-13 00:12:06 +03:00

REST API 2.0 Discogs.com client

go-discogs is a Go client library for the Discogs API. Check the usage section to see how to access the Discogs API.

Feauteres

  • Database
  • Releases
  • Master Releases
  • Release Versions
  • Artists
  • Artist Releases
  • Label
  • All Label Releases
  • 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.

import "github.com/irlndts/go-discogs"

Some requests require authentification (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. This is token way example:

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

  release, err := client.Release.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)
    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

  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.