graphbrainz-extension-discogs
v1.0.0
Published
Discogs GraphQL extension for GraphBrainz.
Downloads
4
Maintainers
Readme
GraphBrainz Extension: Discogs
Retrieve information about MusicBrainz entities from Discogs using the Discogs API. This project has no affiliation with Discogs.
The extension works by finding Discogs URLs in an entity’s URL relationships.
The URL relationship must have the discogs
type and point to a Discogs entity
of the appropriate type: artist
for artists, label
for labels, master
for
release groups, and release
for releases.
Try out the live demo! :bulb: Use the “Docs” sidebar or the documentation below to help construct your query.
Installation
To use this extension, install GraphBrainz, then:
$ npm install graphbrainz-extension-discogs
$ GRAPHBRAINZ_EXTENSIONS='["graphbrainz-extension-discogs"]' graphbrainz
Or, if you are using the middleware directly:
import graphbrainz from 'graphbrainz'
const middleware = graphbrainz({
// Don't forget to add the other extensions you use, too.
extensions: ['graphbrainz-extension-discogs']
})
Configuration
This extension can be configured using environment variables:
DISCOGS_CONSUMER_KEY
: The Discogs consumer key to use. This is not strictly required, but will get you more favorable rate limiting.DISCOGS_CONSUMER_SECRET
: The Discogs consumer secret to use. This is not strictly required, but will get you more favorable rate limiting.DISCOGS_BASE_URL
: The base URL at which to access the Discogs API. Defaults tohttps://api.discogs.com/
.DISCOGS_CACHE_SIZE
: The number of items to keep in the cache. Defaults toGRAPHBRAINZ_CACHE_SIZE
if defined, or8192
.DISCOGS_CACHE_TTL
: The number of seconds to keep items in the cache. Defaults toGRAPHBRAINZ_CACHE_TTL
if defined, or86400000
(one day).
This extension uses its own cache, separate from the MusicBrainz loader cache.
Example Queries
Get community ratings, collection counts, and marketplace info for various releases of OK Computer (try it):
{
search {
releases(query: "OK Computer", first: 5) {
nodes {
mbid
title
discogs {
year
country
forSaleCount
lowestPrice
community {
haveCount
wantCount
rating {
voteCount
value
}
}
}
}
}
}
}
Schema Types
Objects
Artist
:small_blue_diamond: This type has been extended. See the base schema for a description and additional fields.
Information about the artist on Discogs.
DiscogsArtist
An artist on Discogs.
The ID of the artist on Discogs.
The name of the artist on Discogs.
Commonly found variations of the artist’s name.
The artist’s real name, if the artist is a person who uses a stage name.
A list of Discogs artists that represent the same artist under a different alias.
The URL of the artist’s page on Discogs.
Links to the artist’s official pages on different web properties.
A biography or description of the artist.
A list of images picturing the artist.
A list of members, if the artist is a group.
A description of the quality and completeness of this artist’s data in the Discogs database.
DiscogsArtistCredit
A credited artist on a release, track, etc.
The official or common name of the credited artist.
The artist name as credited on this particular work (the Artist Name Variation, or ANV, in Discogs terms).
Join phrases might include words and/or punctuation to separate artist names as they appear on the release, track, etc.
A list of roles the artist had on the work in question.
A list of tracks or track ranges (e.g. “A1 to A4”) on which the artist is credited.
The artist’s entry on Discogs.
DiscogsArtistMember
A single artist who is a member of a group on Discogs.
Whether or not the member is still active in the group.
The name of the member.
The member’s artist information on Discogs.
DiscogsCommunity
Community statistics regarding an item on Discogs.
The acceptance status.
Information about how Discogs users have rated the item.
The number of Discogs users who have the item in their collection.
The number of Discogs users who want the item.
The Discogs users who have contributed to the item’s data.
The Discogs user who submitted the item.
DiscogsImage
A single image from Discogs.
The URL of the image file.
The image type, primary or secondary.
The image width in pixels.
The image height in pixels.
The URL for a 150x150 thumbnail of the image.
DiscogsLabel
A label on Discogs.
The ID of the label on Discogs.
The name of the label.
The URL of the label on Discogs.
A description of the history of the label.
Information on how to contact a representative of the label.
The parent label, if this label is a subsidiary.
A list of labels that are subsidiaries of this label.
A list of images associated with the label.
A description of the quality and completeness of this label’s data in the Discogs database.
DiscogsMaster
Master releases group different versions of the same release (for example, releases in different formats, issued in different countries, re-releases, etc.). The equivalent of a MusicBrainz release group.
The ID of the master on Discogs.
The title of the master.
The URL of the master on Discogs.
The artists credited on the master.
The primary musical genres of the master (e.g. “Electronic”).
The primary musical styles of the master (e.g. “Techno”, “Minimal”).
The number of listings the master currently has on the marketplace.
The lowest price for the master currently found on the marketplace.
The three-letter currency code for which to retrieve the price. Discogs supports USD, GBP, EUR, CAD, AUD, JPY, CHF, MXN, BRL, NZD, SEK, and ZAR.
[NOT YET WORKING]
The year the master was released (most likely its “main” release).
The main release from the master.
Images of the master.
Music videos from the master.
A description of the quality and completeness of this master’s data in the Discogs database.
DiscogsRating
An aggregated rating on Discogs.
The number of users who have contributed to the rating.
The average rating as determined by users.
DiscogsRelease
A release on Discogs.
The ID of the release on Discogs.
The title of the release.
The URL of the release on Discogs.
The artists credited on the release.
An additional list of artists who contributed to the release, but are not named in the release’s artists.
The primary musical genres of the release (e.g. “Electronic”).
The primary musical styles of the release (e.g. “Techno”, “Minimal”).
The number of listings the release currently has on the marketplace.
The lowest price for the release currently found on the marketplace.
The three-letter currency code for which to retrieve the price. Discogs supports USD, GBP, EUR, CAD, AUD, JPY, CHF, MXN, BRL, NZD, SEK, and ZAR.
[NOT YET WORKING]
The year the release was issued.
Notes about the release.
The country in which the release was issued.
The master release on Discogs.
The primary thumbnail image for the release.
Images of the release.
Music videos from the release.
Information about the Discogs community’s contributions to the release’s data.
A description of the quality and completeness of this release’s data in the Discogs database.
DiscogsReleaseConnection
A connection to a list of Discogs releases.
Information to aid in pagination.
A list of edges.
A list of nodes in the connection (without going through the edges
field).
A count of the total number of items in this connection, ignoring pagination.
DiscogsReleaseEdge
An edge in a Discogs release connection.
The release at the end of the edge.
DiscogsUser
A user on Discogs.
The user’s username on Discogs.
DiscogsVideo
A single video linked from Discogs.
The URL of the video.
The title of the video.
The video description.
The duration of the video in milliseconds.
Whether the video is embeddable.
Label
:small_blue_diamond: This type has been extended. See the base schema for a description and additional fields.
Information about the label on Discogs.
Release
:small_blue_diamond: This type has been extended. See the base schema for a description and additional fields.
Information about the release on Discogs.
ReleaseGroup
:small_blue_diamond: This type has been extended. See the base schema for a description and additional fields.
Information about the release group on Discogs.
Enums
DiscogsImageType
The type of image.
The primary image representing the item.
A secondary image representing the item.