Bump dependencies, update schemas (#72)

This commit is contained in:
Brian Beck 2018-08-04 12:04:19 -07:00 committed by GitHub
parent 4768d2f359
commit 9f0172ba9d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
771 changed files with 7549 additions and 6262 deletions

View file

@ -1,6 +1,15 @@
{
"presets": ["es2015", "stage-2"],
"plugins": ["transform-runtime"],
"presets": [
[
"env",
{
"targets": {
"node": "8.10"
}
}
]
],
"plugins": ["transform-runtime", "syntax-object-rest-spread"],
"only": ["scripts/**", "src/**", "test/helpers/**"],
"env": {
"test": {

View file

@ -4,6 +4,9 @@ module.exports = {
es6: true,
node: true
},
parserOptions: {
ecmaVersion: 6
},
plugins: ['prettier'],
rules: {
'prettier/prettier': [

View file

@ -1,9 +1,9 @@
language: node_js
node_js:
- '6'
- '7'
- '8'
- '9'
- '10'
# Use container-based Travis infrastructure.
sudo: false

View file

@ -136,8 +136,7 @@ A free-text comment left for the image.
#### CoverArtArchiveImageThumbnails
URLs for thumbnails of different sizes for a particular piece of
cover art.
URLs for thumbnails of different sizes for a particular piece of cover art.
<table>
<thead>
@ -193,14 +192,14 @@ as well as a summary of what artwork is available.
<td valign="top"><a href="../types.md#urlstring">URLString</a></td>
<td>
The URL of an image depicting the album cover or “main front” of the release,
i.e. the front of the packaging of the audio recording (or in the case of a
digital release, the image associated with it in a digital media store).
The URL of an image depicting the album cover or “main front” of the release,
i.e. the front of the packaging of the audio recording (or in the case of a
digital release, the image associated with it in a digital media store).
In the MusicBrainz schema, this field is a Boolean value indicating the
presence of a front image, whereas here the value is the URL for the image
itself if one exists. You can check for null if you just want to determine
the presence of an image.
In the MusicBrainz schema, this field is a Boolean value indicating the
presence of a front image, whereas here the value is the URL for the image
itself if one exists. You can check for null if you just want to determine
the presence of an image.
</td>
</tr>
@ -220,13 +219,13 @@ retrieved as well.
<td valign="top"><a href="../types.md#urlstring">URLString</a></td>
<td>
The URL of an image depicting the “main back” of the release, i.e. the back
of the packaging of the audio recording.
The URL of an image depicting the “main back” of the release, i.e. the back
of the packaging of the audio recording.
In the MusicBrainz schema, this field is a Boolean value indicating the
presence of a back image, whereas here the value is the URL for the image
itself. You can check for null if you just want to determine the presence of
an image.
In the MusicBrainz schema, this field is a Boolean value indicating the
presence of a back image, whereas here the value is the URL for the image
itself. You can check for null if you just want to determine the presence of
an image.
</td>
</tr>

View file

@ -188,7 +188,7 @@ A review of the album.
</tr>
<tr>
<td colspan="2" valign="top"><strong>salesCount</strong></td>
<td valign="top"><a href="../types.md#int">Int</a></td>
<td valign="top"><a href="../types.md#float">Float</a></td>
<td>
The worldwide sales figure.
@ -206,7 +206,7 @@ The albums rating as determined by user votes, out of 10.
</tr>
<tr>
<td colspan="2" valign="top"><strong>scoreVotes</strong></td>
<td valign="top"><a href="../types.md#int">Int</a></td>
<td valign="top"><a href="../types.md#float">Float</a></td>
<td>
The number of users who voted to determine the albums score.
@ -548,7 +548,7 @@ The size of the images to retrieve.
</tr>
<tr>
<td colspan="2" valign="top"><strong>viewCount</strong></td>
<td valign="top"><a href="../types.md#int">Int</a></td>
<td valign="top"><a href="../types.md#float">Float</a></td>
<td>
The number of views the video has received at the given URL. This will rarely
@ -558,7 +558,7 @@ be up to date, so use cautiously.
</tr>
<tr>
<td colspan="2" valign="top"><strong>likeCount</strong></td>
<td valign="top"><a href="../types.md#int">Int</a></td>
<td valign="top"><a href="../types.md#float">Float</a></td>
<td>
The number of likes the video has received at the given URL. This will rarely
@ -568,7 +568,7 @@ be up to date, so use cautiously.
</tr>
<tr>
<td colspan="2" valign="top"><strong>dislikeCount</strong></td>
<td valign="top"><a href="../types.md#int">Int</a></td>
<td valign="top"><a href="../types.md#float">Float</a></td>
<td>
The number of dislikes the video has received at the given URL. This will
@ -578,7 +578,7 @@ rarely be up to date, so use cautiously.
</tr>
<tr>
<td colspan="2" valign="top"><strong>commentCount</strong></td>
<td valign="top"><a href="../types.md#int">Int</a></td>
<td valign="top"><a href="../types.md#float">Float</a></td>
<td>
The number of comments the video has received at the given URL. This will
@ -678,7 +678,7 @@ The tracks rating as determined by user votes, out of 10.
</tr>
<tr>
<td colspan="2" valign="top"><strong>scoreVotes</strong></td>
<td valign="top"><a href="../types.md#int">Int</a></td>
<td valign="top"><a href="../types.md#float">Float</a></td>
<td>
The number of users who voted to determine the albums score.

File diff suppressed because it is too large Load diff

View file

@ -16,8 +16,8 @@
"yarn.lock"
],
"engines": {
"node": ">=6.0.0",
"npm": ">=3.8.0"
"node": ">=8.10.0",
"npm": ">=5.2.0"
},
"scripts": {
"build": "npm run build:lib && npm run update-schema && npm run build:docs",
@ -70,53 +70,53 @@
"license": "MIT",
"dependencies": {
"babel-runtime": "^6.25.0",
"compression": "^1.7.0",
"compression": "^1.7.3",
"cors": "^2.8.4",
"dashify": "^1.0.0",
"dataloader": "^1.3.0",
"dataloader": "^1.4.0",
"debug": "^3.0.0",
"dotenv": "^4.0.0",
"es6-error": "^4.0.2",
"express": "^4.16.2",
"express-graphql": "^0.6.7",
"graphql": "^0.11.7",
"graphql-relay": "^0.5.4",
"graphql-tools": "^2.12.0",
"lru-cache": "^4.1.1",
"dotenv": "^6.0.0",
"es6-error": "^4.1.1",
"express": "^4.16.3",
"express-graphql": "^0.6.12",
"graphql": "^0.13.2",
"graphql-relay": "^0.5.5",
"graphql-tools": "^3.1.1",
"lru-cache": "^4.1.3",
"pascalcase": "^0.1.1",
"postinstall-build": "^5.0.1",
"qs": "^6.5.0",
"request": "^2.81.0",
"retry": "^0.10.1"
"qs": "^6.5.2",
"request": "^2.87.0",
"retry": "^0.12.0"
},
"devDependencies": {
"ava": "^0.24.0",
"ava": "^0.25.0",
"babel-cli": "^6.24.1",
"babel-eslint": "^8.0.3",
"babel-plugin-istanbul": "^4.1.4",
"babel-eslint": "^8.2.6",
"babel-plugin-istanbul": "^4.1.6",
"babel-plugin-syntax-object-rest-spread": "^6.13.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"babel-preset-env": "^1.7.0",
"babel-register": "^6.24.1",
"coveralls": "^3.0.0",
"cross-env": "^5.1.1",
"doctoc": "^1.3.0",
"eslint": "^4.13.0",
"coveralls": "^3.0.2",
"cross-env": "^5.2.0",
"doctoc": "^1.3.1",
"eslint": "^5.3.0",
"eslint-config-prettier": "^2.9.0",
"eslint-config-standard": "^10.2.1",
"eslint-plugin-import": "^2.8.0",
"eslint-config-standard": "^11.0.0",
"eslint-plugin-import": "^2.13.0",
"eslint-plugin-markdown": "^1.0.0-beta.6",
"eslint-plugin-node": "^5.2.1",
"eslint-plugin-prettier": "^2.3.1",
"eslint-plugin-promise": "^3.6.0",
"eslint-plugin-standard": "^3.0.1",
"graphql-markdown": "^3.2.0",
"nodemon": "^1.12.5",
"nyc": "^11.3.0",
"prettier": "^1.9.1",
"eslint-plugin-node": "^7.0.1",
"eslint-plugin-prettier": "^2.6.2",
"eslint-plugin-promise": "^3.8.0",
"eslint-plugin-standard": "^3.1.0",
"graphql-markdown": "^4.0.0-0",
"nodemon": "^1.18.3",
"nyc": "^12.0.2",
"prettier": "^1.14.0",
"replayer": "^2.2.3",
"rimraf": "^2.6.1",
"sepia": "^2.0.2",
"sinon": "^4.1.3"
"sinon": "^6.1.4"
},
"standard": {
"parser": "babel-eslint"

View file

@ -28,28 +28,26 @@ export class ClientError extends ExtendableError {
}
export default class Client {
constructor(
{
baseURL,
userAgent = `${pkg.name}/${pkg.version} ` +
`( ${pkg.homepage || pkg.author.url || pkg.author.email} )`,
extraHeaders = {},
errorClass = ClientError,
timeout = 60000,
limit = 1,
period = 1000,
concurrency = 10,
retries = 10,
// It's OK for `retryDelayMin` to be less than one second, even 0, because
// `RateLimit` will already make sure we don't exceed the API rate limit.
// We're not doing exponential backoff because it will help with being
// rate limited, but rather to be chill in case MusicBrainz is returning
// some other error or our network is failing.
retryDelayMin = 100,
retryDelayMax = 60000,
randomizeRetry = true
} = {}
) {
constructor({
baseURL,
userAgent = `${pkg.name}/${pkg.version} ` +
`( ${pkg.homepage || pkg.author.url || pkg.author.email} )`,
extraHeaders = {},
errorClass = ClientError,
timeout = 60000,
limit = 1,
period = 1000,
concurrency = 10,
retries = 10,
// It's OK for `retryDelayMin` to be less than one second, even 0, because
// `RateLimit` will already make sure we don't exceed the API rate limit.
// We're not doing exponential backoff because it will help with being
// rate limited, but rather to be chill in case MusicBrainz is returning
// some other error or our network is failing.
retryDelayMin = 100,
retryDelayMax = 60000,
randomizeRetry = true
} = {}) {
this.baseURL = baseURL
this.userAgent = userAgent
this.extraHeaders = extraHeaders

View file

@ -4,22 +4,20 @@ import Client, { ClientError } from './client'
export class MusicBrainzError extends ClientError {}
export default class MusicBrainz extends Client {
constructor(
{
baseURL = process.env.MUSICBRAINZ_BASE_URL ||
'http://musicbrainz.org/ws/2/',
errorClass = MusicBrainzError,
// MusicBrainz API requests are limited to an *average* of 1 req/sec.
// That means if, for example, we only need to make a few API requests to
// fulfill a query, we might as well make them all at once - as long as
// we then wait a few seconds before making more. In practice this can
// seemingly be set to about 5 requests every 5 seconds before we're
// considered to exceed the rate limit.
limit = 5,
period = 5500,
...options
} = {}
) {
constructor({
baseURL = process.env.MUSICBRAINZ_BASE_URL ||
'http://musicbrainz.org/ws/2/',
errorClass = MusicBrainzError,
// MusicBrainz API requests are limited to an *average* of 1 req/sec.
// That means if, for example, we only need to make a few API requests to
// fulfill a query, we might as well make them all at once - as long as
// we then wait a few seconds before making more. In practice this can
// seemingly be set to about 5 requests every 5 seconds before we're
// considered to exceed the rate limit.
limit = 5,
period = 5500,
...options
} = {}) {
super({ baseURL, errorClass, limit, period, ...options })
}

View file

@ -1,15 +1,13 @@
import Client from '../../api/client'
export default class CoverArtArchiveClient extends Client {
constructor(
{
baseURL = process.env.COVER_ART_ARCHIVE_BASE_URL ||
'http://coverartarchive.org/',
limit = 10,
period = 1000,
...options
} = {}
) {
constructor({
baseURL = process.env.COVER_ART_ARCHIVE_BASE_URL ||
'http://coverartarchive.org/',
limit = 10,
period = 1000,
...options
} = {}) {
super({ baseURL, limit, period, ...options })
}

View file

@ -55,6 +55,7 @@ export default function createLoaders(options) {
)
},
{
batch: false,
cacheKeyFn: ([entityType, id, type, size]) => {
const key = `${entityType}/${id}/${type}`
return size ? `${key}-${size}` : key

View file

@ -1,121 +1,176 @@
import gql from '../../tag'
export default gql`
# An individual piece of album artwork from the [Cover Art Archive](https://musicbrainz.org/doc/Cover_Art_Archive).
"""
An individual piece of album artwork from the [Cover Art Archive](https://musicbrainz.org/doc/Cover_Art_Archive).
"""
type CoverArtArchiveImage {
# The Internet Archives internal file ID for the image.
"""
The Internet Archives internal file ID for the image.
"""
fileID: String!
# The URL at which the image can be found.
"""
The URL at which the image can be found.
"""
image: URLString!
# A set of thumbnails for the image.
"""
A set of thumbnails for the image.
"""
thumbnails: CoverArtArchiveImageThumbnails!
# Whether this image depicts the main front of the release.
"""
Whether this image depicts the main front of the release.
"""
front: Boolean!
# Whether this image depicts the main back of the release.
"""
Whether this image depicts the main back of the release.
"""
back: Boolean!
# A list of [image types](https://musicbrainz.org/doc/Cover_Art/Types)
# describing what part(s) of the release the image includes.
"""
A list of [image types](https://musicbrainz.org/doc/Cover_Art/Types)
describing what part(s) of the release the image includes.
"""
types: [String]!
# The MusicBrainz edit ID.
"""
The MusicBrainz edit ID.
"""
edit: Int
# Whether the image was approved by the MusicBrainz edit system.
"""
Whether the image was approved by the MusicBrainz edit system.
"""
approved: Boolean
# A free-text comment left for the image.
"""
A free-text comment left for the image.
"""
comment: String
}
# The image sizes that may be requested at the [Cover Art Archive](https://musicbrainz.org/doc/Cover_Art_Archive).
"""
The image sizes that may be requested at the [Cover Art Archive](https://musicbrainz.org/doc/Cover_Art_Archive).
"""
enum CoverArtArchiveImageSize {
# A maximum dimension of 250px.
"""
A maximum dimension of 250px.
"""
SMALL
# A maximum dimension of 500px.
"""
A maximum dimension of 500px.
"""
LARGE
# The images original dimensions, with no maximum.
"""
The images original dimensions, with no maximum.
"""
FULL
}
# URLs for thumbnails of different sizes for a particular piece of
# cover art.
"""
URLs for thumbnails of different sizes for a particular piece of cover art.
"""
type CoverArtArchiveImageThumbnails {
# The URL of a small version of the cover art, where the maximum dimension is
# 250px.
"""
The URL of a small version of the cover art, where the maximum dimension is
250px.
"""
small: URLString
# The URL of a large version of the cover art, where the maximum dimension is
# 500px.
"""
The URL of a large version of the cover art, where the maximum dimension is
500px.
"""
large: URLString
}
# An object containing a list of the cover art images for a release obtained
# from the [Cover Art Archive](https://musicbrainz.org/doc/Cover_Art_Archive),
# as well as a summary of what artwork is available.
"""
An object containing a list of the cover art images for a release obtained
from the [Cover Art Archive](https://musicbrainz.org/doc/Cover_Art_Archive),
as well as a summary of what artwork is available.
"""
type CoverArtArchiveRelease {
# The URL of an image depicting the album cover or main front of the release,
# i.e. the front of the packaging of the audio recording (or in the case of a
# digital release, the image associated with it in a digital media store).
#
# In the MusicBrainz schema, this field is a Boolean value indicating the
# presence of a front image, whereas here the value is the URL for the image
# itself if one exists. You can check for null if you just want to determine
# the presence of an image.
"""
The URL of an image depicting the album cover or main front of the release,
i.e. the front of the packaging of the audio recording (or in the case of a
digital release, the image associated with it in a digital media store).
In the MusicBrainz schema, this field is a Boolean value indicating the
presence of a front image, whereas here the value is the URL for the image
itself if one exists. You can check for null if you just want to determine
the presence of an image.
"""
front(
# The size of the image to retrieve. By default, the returned image will
# have its full original dimensions, but certain thumbnail sizes may be
# retrieved as well.
"""
The size of the image to retrieve. By default, the returned image will
have its full original dimensions, but certain thumbnail sizes may be
retrieved as well.
"""
size: CoverArtArchiveImageSize = FULL
): URLString
# The URL of an image depicting the main back of the release, i.e. the back
# of the packaging of the audio recording.
#
# In the MusicBrainz schema, this field is a Boolean value indicating the
# presence of a back image, whereas here the value is the URL for the image
# itself. You can check for null if you just want to determine the presence of
# an image.
"""
The URL of an image depicting the main back of the release, i.e. the back
of the packaging of the audio recording.
In the MusicBrainz schema, this field is a Boolean value indicating the
presence of a back image, whereas here the value is the URL for the image
itself. You can check for null if you just want to determine the presence of
an image.
"""
back(
# The size of the image to retrieve. By default, the returned image will
# have its full original dimensions, but certain thumbnail sizes may be
# retrieved as well.
"""
The size of the image to retrieve. By default, the returned image will
have its full original dimensions, but certain thumbnail sizes may be
retrieved as well.
"""
size: CoverArtArchiveImageSize = FULL
): URLString
# A list of images depicting the different sides and surfaces of a releases
# media and packaging.
"""
A list of images depicting the different sides and surfaces of a releases
media and packaging.
"""
images: [CoverArtArchiveImage]!
# Whether there is artwork present for this release.
"""
Whether there is artwork present for this release.
"""
artwork: Boolean!
# The number of artwork images present for this release.
"""
The number of artwork images present for this release.
"""
count: Int!
# The particular release shown in the returned cover art.
"""
The particular release shown in the returned cover art.
"""
release: Release
}
extend type Release {
# An object containing a list and summary of the cover art images that are
# present for this release from the [Cover Art Archive](https://musicbrainz.org/doc/Cover_Art_Archive).
# This field is provided by the Cover Art Archive extension.
"""
An object containing a list and summary of the cover art images that are
present for this release from the [Cover Art Archive](https://musicbrainz.org/doc/Cover_Art_Archive).
This field is provided by the Cover Art Archive extension.
"""
coverArtArchive: CoverArtArchiveRelease
}
extend type ReleaseGroup {
# The cover art for a release in the release group, obtained from the
# [Cover Art Archive](https://musicbrainz.org/doc/Cover_Art_Archive). A
# release in the release group will be chosen as representative of the release
# group.
# This field is provided by the Cover Art Archive extension.
"""
The cover art for a release in the release group, obtained from the
[Cover Art Archive](https://musicbrainz.org/doc/Cover_Art_Archive). A
release in the release group will be chosen as representative of the release
group.
This field is provided by the Cover Art Archive extension.
"""
coverArtArchive: CoverArtArchiveRelease
}
`

View file

@ -1,16 +1,13 @@
import Client from '../../api/client'
export default class FanArtClient extends Client {
constructor(
{
apiKey = process.env.FANART_API_KEY,
baseURL = process.env.FANART_BASE_URL ||
'http://webservice.fanart.tv/v3/',
limit = 10,
period = 1000,
...options
} = {}
) {
constructor({
apiKey = process.env.FANART_API_KEY,
baseURL = process.env.FANART_BASE_URL || 'http://webservice.fanart.tv/v3/',
limit = 10,
period = 1000,
...options
} = {}) {
super({ baseURL, limit, period, ...options })
this.apiKey = apiKey
}

View file

@ -54,6 +54,7 @@ export default function createLoader(options) {
)
},
{
batch: false,
cacheKeyFn: ([entityType, id]) => `${entityType}/${id}`,
cacheMap: cache
}

View file

@ -1,127 +1,197 @@
import gql from '../../tag'
export default gql`
# The image sizes that may be requested at [fanart.tv](https://fanart.tv/).
"""
The image sizes that may be requested at [fanart.tv](https://fanart.tv/).
"""
enum FanArtImageSize {
# The images full original dimensions.
"""
The images full original dimensions.
"""
FULL
# A maximum dimension of 200px.
"""
A maximum dimension of 200px.
"""
PREVIEW
}
# A single image from [fanart.tv](https://fanart.tv/).
"""
A single image from [fanart.tv](https://fanart.tv/).
"""
type FanArtImage {
# The ID of the image on fanart.tv.
"""
The ID of the image on fanart.tv.
"""
imageID: ID
# The URL of the image.
"""
The URL of the image.
"""
url(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: FanArtImageSize = FULL
): URLString
# The number of likes the image has received by fanart.tv users.
"""
The number of likes the image has received by fanart.tv users.
"""
likeCount: Int
}
# A disc image from [fanart.tv](https://fanart.tv/).
"""
A disc image from [fanart.tv](https://fanart.tv/).
"""
type FanArtDiscImage {
# The ID of the image on fanart.tv.
"""
The ID of the image on fanart.tv.
"""
imageID: ID
# The URL of the image.
"""
The URL of the image.
"""
url(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: FanArtImageSize = FULL
): URLString
# The number of likes the image has received by fanart.tv users.
"""
The number of likes the image has received by fanart.tv users.
"""
likeCount: Int
# The disc number.
"""
The disc number.
"""
discNumber: Int
# The width and height of the (square) disc image.
"""
The width and height of the (square) disc image.
"""
size: Int
}
# A music label image from [fanart.tv](https://fanart.tv/).
"""
A music label image from [fanart.tv](https://fanart.tv/).
"""
type FanArtLabelImage {
# The ID of the image on fanart.tv.
"""
The ID of the image on fanart.tv.
"""
imageID: ID
# The URL of the image.
"""
The URL of the image.
"""
url(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: FanArtImageSize = FULL
): URLString
# The number of likes the image has received by fanart.tv users.
"""
The number of likes the image has received by fanart.tv users.
"""
likeCount: Int
# The type of color content in the image (usually white or colour).
"""
The type of color content in the image (usually white or colour).
"""
color: String
}
# An object containing lists of the different types of artist images from
# [fanart.tv](https://fanart.tv/).
"""
An object containing lists of the different types of artist images from
[fanart.tv](https://fanart.tv/).
"""
type FanArtArtist {
# A list of 1920x1080 JPG images picturing the artist, suitable for use as
# backgrounds.
"""
A list of 1920x1080 JPG images picturing the artist, suitable for use as
backgrounds.
"""
backgrounds: [FanArtImage]
# A list of 1000x185 JPG images containing the artist and their logo or name.
"""
A list of 1000x185 JPG images containing the artist and their logo or name.
"""
banners: [FanArtImage]
# A list of 400x155 PNG images containing the artists logo or name, with
# transparent backgrounds.
"""
A list of 400x155 PNG images containing the artists logo or name, with
transparent backgrounds.
"""
logos: [FanArtImage]
# A list of 800x310 PNG images containing the artists logo or name, with
# transparent backgrounds.
"""
A list of 800x310 PNG images containing the artists logo or name, with
transparent backgrounds.
"""
logosHD: [FanArtImage]
# A list of 1000x1000 JPG thumbnail images picturing the artist (usually
# containing every member of a band).
"""
A list of 1000x1000 JPG thumbnail images picturing the artist (usually
containing every member of a band).
"""
thumbnails: [FanArtImage]
}
# An object containing lists of the different types of label images from
# [fanart.tv](https://fanart.tv/).
"""
An object containing lists of the different types of label images from
[fanart.tv](https://fanart.tv/).
"""
type FanArtLabel {
# A list of 400x270 PNG images containing the labels logo. There will
# usually be a black version, a color version, and a white version, all with
# transparent backgrounds.
"""
A list of 400x270 PNG images containing the labels logo. There will
usually be a black version, a color version, and a white version, all with
transparent backgrounds.
"""
logos: [FanArtLabelImage]
}
# An object containing lists of the different types of release group images from
# [fanart.tv](https://fanart.tv/).
"""
An object containing lists of the different types of release group images from
[fanart.tv](https://fanart.tv/).
"""
type FanArtAlbum {
# A list of 1000x1000 JPG images of the cover artwork of the release group.
"""
A list of 1000x1000 JPG images of the cover artwork of the release group.
"""
albumCovers: [FanArtImage]
# A list of 1000x1000 PNG images of the physical disc media for the release
# group, with transparent backgrounds.
"""
A list of 1000x1000 PNG images of the physical disc media for the release
group, with transparent backgrounds.
"""
discImages: [FanArtDiscImage]
}
extend type Artist {
# Images of the artist from [fanart.tv](https://fanart.tv/).
# This field is provided by the fanart.tv extension.
"""
Images of the artist from [fanart.tv](https://fanart.tv/).
This field is provided by the fanart.tv extension.
"""
fanArt: FanArtArtist
}
extend type Label {
# Images of the label from [fanart.tv](https://fanart.tv/).
# This field is provided by the fanart.tv extension.
"""
Images of the label from [fanart.tv](https://fanart.tv/).
This field is provided by the fanart.tv extension.
"""
fanArt: FanArtLabel
}
extend type ReleaseGroup {
# Images of the release group from [fanart.tv](https://fanart.tv/).
# This field is provided by the fanart.tv extension.
"""
Images of the release group from [fanart.tv](https://fanart.tv/).
This field is provided by the fanart.tv extension.
"""
fanArt: FanArtAlbum
}
`

View file

@ -25,7 +25,7 @@ export default class MediaWikiClient extends Client {
pathname: '/w/api.php',
query: {
action: 'query',
titles: pageURL.pathname.slice(6),
titles: decodeURI(pageURL.pathname.slice(6)),
prop: 'imageinfo',
iiprop: 'url|size|canonicaltitle|user|extmetadata',
format: 'json'
@ -39,6 +39,11 @@ export default class MediaWikiClient extends Client {
`Query returned multiple pages: [${pageIDs.join(', ')}]`
)
}
if (pageIDs[0] === '-1') {
throw new ClientError(
body.query.pages['-1'].invalidreason || 'Unknown error'
)
}
const imageInfo = body.query.pages[pageIDs[0]].imageinfo
if (imageInfo.length !== 1) {
throw new ClientError(

View file

@ -20,6 +20,6 @@ export default function createLoader(options) {
keys => {
return Promise.all(keys.map(key => client.imageInfo(key)))
},
{ cacheMap: cache }
{ batch: false, cacheMap: cache }
)
}

View file

@ -1,109 +1,167 @@
import gql from '../../tag'
export default gql`
# An object describing various properties of an image stored on a MediaWiki
# server. The information comes the [MediaWiki imageinfo API](https://www.mediawiki.org/wiki/API:Imageinfo).
"""
An object describing various properties of an image stored on a MediaWiki
server. The information comes the [MediaWiki imageinfo API](https://www.mediawiki.org/wiki/API:Imageinfo).
"""
type MediaWikiImage {
# The URL of the actual image file.
"""
The URL of the actual image file.
"""
url: URLString!
# The URL of the wiki page describing the image.
"""
The URL of the wiki page describing the image.
"""
descriptionURL: URLString
# The user who uploaded the file.
"""
The user who uploaded the file.
"""
user: String
# The size of the file in bytes.
"""
The size of the file in bytes.
"""
size: Int
# The pixel width of the image.
"""
The pixel width of the image.
"""
width: Int
# The pixel height of the image.
"""
The pixel height of the image.
"""
height: Int
# The canonical title of the file.
"""
The canonical title of the file.
"""
canonicalTitle: String
# The image title, brief description, or file name.
"""
The image title, brief description, or file name.
"""
objectName: String
# A description of the image, potentially containing HTML.
"""
A description of the image, potentially containing HTML.
"""
descriptionHTML: String
# The original date of creation of the image. May be a description rather than
# a parseable timestamp, and may contain HTML.
"""
The original date of creation of the image. May be a description rather than
a parseable timestamp, and may contain HTML.
"""
originalDateTimeHTML: String
# A list of the categories of the image.
"""
A list of the categories of the image.
"""
categories: [String]!
# The name of the image author, potentially containing HTML.
"""
The name of the image author, potentially containing HTML.
"""
artistHTML: String
# The source of the image, potentially containing HTML.
"""
The source of the image, potentially containing HTML.
"""
creditHTML: String
# A short human-readable license name.
"""
A short human-readable license name.
"""
licenseShortName: String
# A web address where the license is described.
"""
A web address where the license is described.
"""
licenseURL: URLString
# The full list of values in the \`extmetadata\` field.
"""
The full list of values in the \`extmetadata\` field.
"""
metadata: [MediaWikiImageMetadata]!
}
# An entry in the \`extmetadata\` field of a MediaWiki image file.
"""
An entry in the \`extmetadata\` field of a MediaWiki image file.
"""
type MediaWikiImageMetadata {
# The name of the metadata field.
"""
The name of the metadata field.
"""
name: String!
# The value of the metadata field. All values will be converted to strings.
"""
The value of the metadata field. All values will be converted to strings.
"""
value: String
# The source of the value.
"""
The source of the value.
"""
source: String
}
extend type Artist {
# Artist images found at MediaWiki URLs in the artists URL relationships.
# Defaults to URL relationships with the type image.
# This field is provided by the MediaWiki extension.
"""
Artist images found at MediaWiki URLs in the artists URL relationships.
Defaults to URL relationships with the type image.
This field is provided by the MediaWiki extension.
"""
mediaWikiImages(
# The type of URL relationship that will be selected to find images. See
# the possible [Artist-URL relationship types](https://musicbrainz.org/relationships/artist-url).
"""
The type of URL relationship that will be selected to find images. See
the possible [Artist-URL relationship types](https://musicbrainz.org/relationships/artist-url).
"""
type: String = "image"
): [MediaWikiImage]!
}
extend type Instrument {
# Instrument images found at MediaWiki URLs in the instruments URL
# relationships. Defaults to URL relationships with the type image.
# This field is provided by the MediaWiki extension.
"""
Instrument images found at MediaWiki URLs in the instruments URL
relationships. Defaults to URL relationships with the type image.
This field is provided by the MediaWiki extension.
"""
mediaWikiImages(
# The type of URL relationship that will be selected to find images. See the
# possible [Instrument-URL relationship types](https://musicbrainz.org/relationships/instrument-url).
"""
The type of URL relationship that will be selected to find images. See the
possible [Instrument-URL relationship types](https://musicbrainz.org/relationships/instrument-url).
"""
type: String = "image"
): [MediaWikiImage]!
}
extend type Label {
# Label images found at MediaWiki URLs in the labels URL relationships.
# Defaults to URL relationships with the type logo.
# This field is provided by the MediaWiki extension.
"""
Label images found at MediaWiki URLs in the labels URL relationships.
Defaults to URL relationships with the type logo.
This field is provided by the MediaWiki extension.
"""
mediaWikiImages(
# The type of URL relationship that will be selected to find images. See the
# possible [Label-URL relationship types](https://musicbrainz.org/relationships/label-url).
"""
The type of URL relationship that will be selected to find images. See the
possible [Label-URL relationship types](https://musicbrainz.org/relationships/label-url).
"""
type: String = "logo"
): [MediaWikiImage]!
}
extend type Place {
# Place images found at MediaWiki URLs in the places URL relationships.
# Defaults to URL relationships with the type image.
# This field is provided by the MediaWiki extension.
"""
Place images found at MediaWiki URLs in the places URL relationships.
Defaults to URL relationships with the type image.
This field is provided by the MediaWiki extension.
"""
mediaWikiImages(
# The type of URL relationship that will be selected to find images. See the
# possible [Place-URL relationship types](https://musicbrainz.org/relationships/place-url).
"""
The type of URL relationship that will be selected to find images. See the
possible [Place-URL relationship types](https://musicbrainz.org/relationships/place-url).
"""
type: String = "image"
): [MediaWikiImage]!
}

View file

@ -1,16 +1,14 @@
import Client from '../../api/client'
export default class TheAudioDBClient extends Client {
constructor(
{
apiKey = process.env.THEAUDIODB_API_KEY,
baseURL = process.env.THEAUDIODB_BASE_URL ||
'http://www.theaudiodb.com/api/v1/json/',
limit = 10,
period = 1000,
...options
} = {}
) {
constructor({
apiKey = process.env.THEAUDIODB_API_KEY,
baseURL = process.env.THEAUDIODB_BASE_URL ||
'https://www.theaudiodb.com/api/v1/json/',
limit = 10,
period = 1000,
...options
} = {}) {
super({ baseURL, limit, period, ...options })
this.apiKey = apiKey
}
@ -22,7 +20,13 @@ export default class TheAudioDBClient extends Client {
new ClientError('No API key was configured for TheAudioDB client.')
)
}
return super.get(`${this.apiKey}/${path}`, { json: true, ...options })
return super.get(`${this.apiKey}/${path}`, {
json: true,
// FIXME: TheAudioDB's SSL terminator seems to be broken and only works
// by forcing TLS 1.0.
agentOptions: { secureProtocol: 'TLSv1_method' },
...options
})
}
entity(entityType, mbid) {

View file

@ -26,6 +26,7 @@ export default function createLoader(options) {
)
},
{
batch: false,
cacheKeyFn: ([entityType, id]) => `${entityType}/${id}`,
cacheMap: cache
}

View file

@ -1,232 +1,372 @@
import gql from '../../tag'
export default gql`
# The image sizes that may be requested at [TheAudioDB](http://www.theaudiodb.com/).
"""
The image sizes that may be requested at [TheAudioDB](http://www.theaudiodb.com/).
"""
enum TheAudioDBImageSize {
# The images full original dimensions.
"""
The images full original dimensions.
"""
FULL
# A maximum dimension of 200px.
"""
A maximum dimension of 200px.
"""
PREVIEW
}
# An artist on [TheAudioDB](http://www.theaudiodb.com/).
"""
An artist on [TheAudioDB](http://www.theaudiodb.com/).
"""
type TheAudioDBArtist {
# TheAudioDB ID of the artist.
"""
TheAudioDB ID of the artist.
"""
artistID: ID
# A biography of the artist, often available in several languages.
"""
A biography of the artist, often available in several languages.
"""
biography(
# The two-letter code for the language in which to retrieve the biography.
"""
The two-letter code for the language in which to retrieve the biography.
"""
lang: String = "en"
): String
# The number of members in the musical group, if applicable.
"""
The number of members in the musical group, if applicable.
"""
memberCount: Int
# A 1000x185 JPG banner image containing the artist and their logo or name.
"""
A 1000x185 JPG banner image containing the artist and their logo or name.
"""
banner(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: TheAudioDBImageSize = FULL
): URLString
# A list of 1280x720 or 1920x1080 JPG images depicting the artist.
"""
A list of 1280x720 or 1920x1080 JPG images depicting the artist.
"""
fanArt(
# The size of the images to retrieve.
"""
The size of the images to retrieve.
"""
size: TheAudioDBImageSize = FULL
): [URLString]!
# A 400x155 PNG image containing the artists logo or name, with a transparent
# background.
"""
A 400x155 PNG image containing the artists logo or name, with a transparent
background.
"""
logo(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: TheAudioDBImageSize = FULL
): URLString
# A 1000x1000 JPG thumbnail image picturing the artist (usually containing
# every member of a band).
"""
A 1000x1000 JPG thumbnail image picturing the artist (usually containing
every member of a band).
"""
thumbnail(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: TheAudioDBImageSize = FULL
): URLString
# The primary musical genre of the artist (e.g. Alternative Rock).
"""
The primary musical genre of the artist (e.g. Alternative Rock).
"""
genre: String
# The primary musical mood of the artist (e.g. Sad).
"""
The primary musical mood of the artist (e.g. Sad).
"""
mood: String
# The primary musical style of the artist (e.g. Rock/Pop).
"""
The primary musical style of the artist (e.g. Rock/Pop).
"""
style: String
}
# An album on [TheAudioDB](http://www.theaudiodb.com/) corresponding with a
# MusicBrainz Release Group.
"""
An album on [TheAudioDB](http://www.theaudiodb.com/) corresponding with a
MusicBrainz Release Group.
"""
type TheAudioDBAlbum {
# TheAudioDB ID of the album.
"""
TheAudioDB ID of the album.
"""
albumID: ID
# TheAudioDB ID of the artist who released the album.
"""
TheAudioDB ID of the artist who released the album.
"""
artistID: ID
# A description of the album, often available in several languages.
"""
A description of the album, often available in several languages.
"""
description(
# The two-letter code for the language in which to retrieve the biography.
"""
The two-letter code for the language in which to retrieve the biography.
"""
lang: String = "en"
): String
# A review of the album.
"""
A review of the album.
"""
review: String
# The worldwide sales figure.
salesCount: Int
"""
The worldwide sales figure.
"""
salesCount: Float
# The albums rating as determined by user votes, out of 10.
"""
The albums rating as determined by user votes, out of 10.
"""
score: Float
# The number of users who voted to determine the albums score.
scoreVotes: Int
"""
The number of users who voted to determine the albums score.
"""
scoreVotes: Float
# An image of the physical disc media for the album.
"""
An image of the physical disc media for the album.
"""
discImage(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: TheAudioDBImageSize = FULL
): URLString
# An image of the spine of the album packaging.
"""
An image of the spine of the album packaging.
"""
spineImage(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: TheAudioDBImageSize = FULL
): URLString
# An image of the front of the album packaging.
"""
An image of the front of the album packaging.
"""
frontImage(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: TheAudioDBImageSize = FULL
): URLString
# An image of the back of the album packaging.
"""
An image of the back of the album packaging.
"""
backImage(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: TheAudioDBImageSize = FULL
): URLString
# The primary musical genre of the album (e.g. Alternative Rock).
"""
The primary musical genre of the album (e.g. Alternative Rock).
"""
genre: String
# The primary musical mood of the album (e.g. Sad).
"""
The primary musical mood of the album (e.g. Sad).
"""
mood: String
# The primary musical style of the album (e.g. Rock/Pop).
"""
The primary musical style of the album (e.g. Rock/Pop).
"""
style: String
# A rough description of the primary musical speed of the album (e.g. Medium).
"""
A rough description of the primary musical speed of the album (e.g. Medium).
"""
speed: String
# The primary musical theme of the album (e.g. In Love).
"""
The primary musical theme of the album (e.g. In Love).
"""
theme: String
}
# A track on [TheAudioDB](http://www.theaudiodb.com/) corresponding with a
# MusicBrainz Recording.
"""
A track on [TheAudioDB](http://www.theaudiodb.com/) corresponding with a
MusicBrainz Recording.
"""
type TheAudioDBTrack {
# TheAudioDB ID of the track.
"""
TheAudioDB ID of the track.
"""
trackID: ID
# TheAudioDB ID of the album on which the track appears.
"""
TheAudioDB ID of the album on which the track appears.
"""
albumID: ID
# TheAudioDB ID of the artist who released the track.
"""
TheAudioDB ID of the artist who released the track.
"""
artistID: ID
# A description of the track.
"""
A description of the track.
"""
description(
# The two-letter code for the language in which to retrieve the description.
"""
The two-letter code for the language in which to retrieve the description.
"""
lang: String = "en"
): String
# A thumbnail image for the track.
"""
A thumbnail image for the track.
"""
thumbnail(
# The size of the image to retrieve.
"""
The size of the image to retrieve.
"""
size: TheAudioDBImageSize = FULL
): URLString
# The tracks rating as determined by user votes, out of 10.
"""
The tracks rating as determined by user votes, out of 10.
"""
score: Float
# The number of users who voted to determine the albums score.
scoreVotes: Int
"""
The number of users who voted to determine the albums score.
"""
scoreVotes: Float
# The track number of the song on the album.
"""
The track number of the song on the album.
"""
trackNumber: Int
# The official music video for the track.
"""
The official music video for the track.
"""
musicVideo: TheAudioDBMusicVideo
# The primary musical genre of the track (e.g. Alternative Rock).
"""
The primary musical genre of the track (e.g. Alternative Rock).
"""
genre: String
# The primary musical mood of the track (e.g. Sad).
"""
The primary musical mood of the track (e.g. Sad).
"""
mood: String
# The primary musical style of the track (e.g. Rock/Pop).
"""
The primary musical style of the track (e.g. Rock/Pop).
"""
style: String
# The primary musical theme of the track (e.g. In Love).
"""
The primary musical theme of the track (e.g. In Love).
"""
theme: String
}
# Details of a music video associated with a track on [TheAudioDB](http://www.theaudiodb.com/).
"""
Details of a music video associated with a track on [TheAudioDB](http://www.theaudiodb.com/).
"""
type TheAudioDBMusicVideo {
# The URL where the music video can be found.
"""
The URL where the music video can be found.
"""
url: URLString
# The video production company of the music video.
"""
The video production company of the music video.
"""
companyName: String
# The director of the music video.
"""
The director of the music video.
"""
directorName: String
# A list of still images from the music video.
"""
A list of still images from the music video.
"""
screenshots(
# The size of the images to retrieve.
"""
The size of the images to retrieve.
"""
size: TheAudioDBImageSize = FULL
): [URLString]!
# The number of views the video has received at the given URL. This will rarely
# be up to date, so use cautiously.
viewCount: Int
"""
The number of views the video has received at the given URL. This will rarely
be up to date, so use cautiously.
"""
viewCount: Float
# The number of likes the video has received at the given URL. This will rarely
# be up to date, so use cautiously.
likeCount: Int
"""
The number of likes the video has received at the given URL. This will rarely
be up to date, so use cautiously.
"""
likeCount: Float
# The number of dislikes the video has received at the given URL. This will
# rarely be up to date, so use cautiously.
dislikeCount: Int
"""
The number of dislikes the video has received at the given URL. This will
rarely be up to date, so use cautiously.
"""
dislikeCount: Float
# The number of comments the video has received at the given URL. This will
# rarely be up to date, so use cautiously.
commentCount: Int
"""
The number of comments the video has received at the given URL. This will
rarely be up to date, so use cautiously.
"""
commentCount: Float
}
extend type Artist {
# Data about the artist from [TheAudioDB](http://www.theaudiodb.com/), a good
# source of biographical information and images.
# This field is provided by TheAudioDB extension.
"""
Data about the artist from [TheAudioDB](http://www.theaudiodb.com/), a good
source of biographical information and images.
This field is provided by TheAudioDB extension.
"""
theAudioDB: TheAudioDBArtist
}
extend type Recording {
# Data about the recording from [TheAudioDB](http://www.theaudiodb.com/).
# This field is provided by TheAudioDB extension.
"""
Data about the recording from [TheAudioDB](http://www.theaudiodb.com/).
This field is provided by TheAudioDB extension.
"""
theAudioDB: TheAudioDBTrack
}
extend type ReleaseGroup {
# Data about the release group from [TheAudioDB](http://www.theaudiodb.com/),
# a good source of descriptive information, reviews, and images.
# This field is provided by TheAudioDB extension.
"""
Data about the release group from [TheAudioDB](http://www.theaudiodb.com/),
a good source of descriptive information, reviews, and images.
This field is provided by TheAudioDB extension.
"""
theAudioDB: TheAudioDBAlbum
}
`

View file

@ -19,15 +19,13 @@ export const defaultExtensions = [
require.resolve('./extensions/the-audio-db')
]
const middleware = (
{
client = new MusicBrainz(),
extensions = process.env.GRAPHBRAINZ_EXTENSIONS
? JSON.parse(process.env.GRAPHBRAINZ_EXTENSIONS)
: defaultExtensions,
...middlewareOptions
} = {}
) => {
const middleware = ({
client = new MusicBrainz(),
extensions = process.env.GRAPHBRAINZ_EXTENSIONS
? JSON.parse(process.env.GRAPHBRAINZ_EXTENSIONS)
: defaultExtensions,
...middlewareOptions
} = {}) => {
const options = { client, extensions, ...middlewareOptions }
const DEV = process.env.NODE_ENV !== 'production'
const graphiql = DEV || process.env.GRAPHBRAINZ_GRAPHIQL === 'true'

View file

@ -36,6 +36,7 @@ export default function createLoaders(client) {
)
},
{
batch: false,
cacheKeyFn: key => client.getLookupURL(...key),
cacheMap: cache
}
@ -58,6 +59,7 @@ export default function createLoaders(client) {
)
},
{
batch: false,
cacheKeyFn: key => client.getBrowseURL(...key),
cacheMap: cache
}
@ -80,6 +82,7 @@ export default function createLoaders(client) {
)
},
{
batch: false,
cacheKeyFn: key => client.getSearchURL(...key),
cacheMap: cache
}

View file

@ -1,14 +1,12 @@
const debug = require('debug')('graphbrainz:rate-limit')
export default class RateLimit {
constructor(
{
limit = 1,
period = 1000,
concurrency = limit || 1,
defaultPriority = 1
} = {}
) {
constructor({
limit = 1,
period = 1000,
concurrency = limit || 1,
defaultPriority = 1
} = {}) {
this.limit = limit
this.period = period
this.defaultPriority = defaultPriority

View file

@ -21,7 +21,7 @@ export function applyExtension(extension, schema, options = {}) {
return extendSchema(updatedSchema, extensionSchema)
}, outputSchema)
if (resolvers) {
addResolveFunctionsToSchema(outputSchema, resolvers)
addResolveFunctionsToSchema({ schema: outputSchema, resolvers })
}
} else if (typeof extension.extendSchema === 'function') {
debug(

View file

@ -9,7 +9,7 @@ function createScalar(config) {
if (ast.kind === Kind.STRING) {
return ast.value
}
return null
return undefined
},
...config
})
@ -92,7 +92,7 @@ export const Duration = createScalar({
if (ast.kind === Kind.INT) {
return validatePositive(parseInt(ast.value, 10))
}
return null
return undefined
}
})
@ -140,7 +140,7 @@ export const Locale = createScalar({
if (ast.kind === Kind.STRING) {
return validateLocale(ast.value)
}
return null
return undefined
}
})
@ -154,7 +154,7 @@ export const MBID = createScalar({
if (ast.kind === Kind.STRING) {
return validateMBID(ast.value)
}
return null
return undefined
}
})
@ -172,6 +172,6 @@ export const URLString = createScalar({
if (ast.kind === Kind.STRING) {
return validateURL(ast.value)
}
return null
return undefined
}
})

View file

@ -9,7 +9,7 @@ const schema = schemas[TEST_SCHEMA]
function testData(t, query, handler) {
return graphql(schema, query, null, context).then(result => {
if (result.errors !== undefined) {
console.log(result.errors)
result.errors.forEach(error => t.log(error))
}
t.is(result.errors, undefined)
return handler(t, result.data)
@ -24,11 +24,6 @@ function testError(t, query, handler) {
})
}
function testThrows(t, query, handler) {
const error = t.throws(graphql(schema, query, null, context))
return handler(t, error)
}
test(
'schema has a node field',
testData,
@ -287,10 +282,9 @@ test(
}
)
// FIXME: https://github.com/graphql/graphql-js/issues/910
test(
'throws an error if given a malformed MBID',
testThrows,
testError,
`
{
lookup {
@ -300,10 +294,8 @@ test(
}
}
`,
async (t, promise) => {
const err = await promise
t.true(err instanceof TypeError)
t.is(err.message, 'Malformed MBID: ABC123')
(t, errors) => {
t.regex(errors[0].message, /Malformed MBID: ABC123/)
}
)
@ -674,7 +666,7 @@ test(
`,
(t, data) => {
const { work } = data.lookup
t.is(work.title, 'Song of the French Partisan')
t.is(work.title, 'The Partisan')
t.deepEqual(work.iswcs, ['T-900.755.682-3'])
}
)
@ -699,10 +691,9 @@ test(
}
)
// FIXME: https://github.com/graphql/graphql-js/issues/910
test(
'throws an error if given a malformed resource URL',
testThrows,
testError,
`
{
lookup {
@ -713,10 +704,8 @@ test(
}
}
`,
async (t, promise) => {
const err = await promise
t.true(err instanceof TypeError)
t.is(err.message, 'Malformed URL: http:foo')
(t, errors) => {
t.regex(errors[0].message, /Malformed URL: http:foo/)
}
)
@ -846,8 +835,7 @@ test(
(t, data) => {
const { recording, release, releaseGroup } = data.lookup
t.deepEqual(recording.artistCredit, [
{ name: 'Holly Golightly', joinPhrase: ' & ' },
{ name: 'The Brokeoffs', joinPhrase: '' }
{ name: 'Holly Golightly & The Brokeoffs', joinPhrase: '' }
])
t.deepEqual(recording.artistCredits, recording.artistCredit)
@ -946,9 +934,7 @@ test(
(t, data) => {
const works = data.browse.works.edges.map(edge => edge.node)
t.is(data.browse.works.totalCount, 1)
t.deepEqual(works, [
{ title: 'Song of the French Partisan', iswcs: ['T-900.755.682-3'] }
])
t.deepEqual(works, [{ title: 'The Partisan', iswcs: ['T-900.755.682-3'] }])
}
)
@ -1307,7 +1293,8 @@ test(
}
)
test(
// FIXME: API seems to have changed, potentially a bug in MusicBrainz.
test.skip(
'disc queries can be deeply nested',
testData,
`

View file

@ -10,7 +10,7 @@ const context = extension.extendContext(baseContext)
function testData(t, query, handler) {
return graphql(schema, query, null, context).then(result => {
if (result.errors !== undefined) {
console.log(result.errors)
result.errors.forEach(error => t.log(error))
}
t.is(result.errors, undefined)
return handler(t, result.data)
@ -170,11 +170,9 @@ test(
`,
(t, data) => {
const { coverArtArchive } = data.lookup.releaseGroup
const { front } = coverArtArchive
t.true(coverArtArchive.artwork)
t.is(
coverArtArchive.front,
'http://coverartarchive.org/release/25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27/1675312275.jpg'
)
t.snapshot({ front })
t.is(coverArtArchive.release.mbid, '25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27')
t.is(coverArtArchive.release.title, 'The Dark Side of the Moon')
t.is(coverArtArchive.images.length, 1)
@ -199,14 +197,8 @@ test(
`,
(t, data) => {
const { coverArtArchive } = data.lookup.releaseGroup
t.is(
coverArtArchive.small,
'http://coverartarchive.org/release/25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27/1675312275-250.jpg'
)
t.is(
coverArtArchive.large,
'http://coverartarchive.org/release/25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27/1675312275-500.jpg'
)
const { small, large } = coverArtArchive
t.snapshot({ small, large })
}
)

View file

@ -0,0 +1,22 @@
# Snapshot report for `test/extensions/cover-art-archive/schema.js`
The actual snapshot is saved in `schema.js.snap`.
Generated by [AVA](https://ava.li).
## release groups have a front cover art image
> Snapshot 1
{
front: 'http://coverartarchive.org/release/25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27/18974521469.jpg',
}
## release groups have different cover art sizes available
> Snapshot 1
{
large: 'http://coverartarchive.org/release/25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27/18974521469-500.jpg',
small: 'http://coverartarchive.org/release/25fbfbb4-b1ee-4448-aadf-ae3bc2e2dd27/18974521469-250.jpg',
}

View file

@ -10,7 +10,7 @@ const context = extension.extendContext(baseContext)
function testData(t, query, handler) {
return graphql(schema, query, null, context).then(result => {
if (result.errors !== undefined) {
console.log(result.errors)
result.errors.forEach(error => t.log(error))
}
t.is(result.errors, undefined)
return handler(t, result.data)

View file

@ -13,78 +13,78 @@ Generated by [AVA](https://ava.li).
artist: {
fanArt: {
backgrounds: [
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-52c91734c39dd.jpg',
imageID: '108996',
likeCount: 7,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-52c91734c39dd.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-4ddaf131354a8.jpg',
imageID: '2539',
likeCount: 7,
likeCount: 9,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-4ddaf131354a8.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-524daf0607406.jpg',
imageID: '99990',
likeCount: 6,
likeCount: 8,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-524daf0607406.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-4de90b913b2a1.jpg',
imageID: '4153',
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-4de90b913b2a1.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-54dc843050470.jpg',
imageID: '151698',
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-54dc843050470.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-52c917ac71459.jpg',
imageID: '108997',
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-52c917ac71459.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-55baa96c8c47f.jpg',
imageID: '172578',
likeCount: 2,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-55baa96c8c47f.jpg',
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-52c91734c39dd.jpg',
imageID: '108996',
likeCount: 8,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-52c91734c39dd.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-500187e32be79.jpg',
imageID: '42530',
likeCount: 2,
likeCount: 4,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-500187e32be79.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-4de90b913b2a1.jpg',
imageID: '4153',
likeCount: 4,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-4de90b913b2a1.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-56d0287053099.jpg',
imageID: '190330',
likeCount: 2,
likeCount: 4,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-56d0287053099.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-56d02870536ef.jpg',
imageID: '190331',
likeCount: 2,
likeCount: 4,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-56d02870536ef.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-54dc845f81d1b.jpg',
imageID: '151699',
likeCount: 2,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-54dc845f81d1b.jpg',
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-54dc843050470.jpg',
imageID: '151698',
likeCount: 4,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-54dc843050470.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-524daf0607e44.jpg',
imageID: '99991',
likeCount: 2,
likeCount: 4,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-524daf0607e44.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-52c917ac71459.jpg',
imageID: '108997',
likeCount: 4,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-52c917ac71459.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-55baa96c8c47f.jpg',
imageID: '172578',
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-55baa96c8c47f.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-54dc845f81d1b.jpg',
imageID: '151699',
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-54dc845f81d1b.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistbackground/nirvana-54ac79e578054.jpg',
imageID: '146472',
@ -93,24 +93,24 @@ Generated by [AVA](https://ava.li).
},
],
banners: [
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/musicbanner/nirvana-515f7e1a6f50b.jpg',
imageID: '78008',
likeCount: 2,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/musicbanner/nirvana-515f7e1a6f50b.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/musicbanner/nirvana-591789a12da78.jpg',
imageID: '218845',
likeCount: 2,
likeCount: 4,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/musicbanner/nirvana-591789a12da78.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/musicbanner/nirvana-515f7e1a6f50b.jpg',
imageID: '78008',
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/musicbanner/nirvana-515f7e1a6f50b.jpg',
},
],
logos: [
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/musiclogo/nirvana-4e4b9bc06dcc4.png',
imageID: '8957',
likeCount: 4,
likeCount: 5,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/musiclogo/nirvana-4e4b9bc06dcc4.png',
},
],
@ -124,71 +124,71 @@ Generated by [AVA](https://ava.li).
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-518a696cda12f.png',
imageID: '81480',
likeCount: 4,
likeCount: 5,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-518a696cda12f.png',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-518ada7d98805.png',
imageID: '81521',
likeCount: 3,
likeCount: 5,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-518ada7d98805.png',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-518a696c1ab0b.png',
imageID: '81479',
likeCount: 2,
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-518a696c1ab0b.png',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-561900ee87f11.png',
imageID: '181150',
likeCount: 2,
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-561900ee87f11.png',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-561900db6b999.png',
imageID: '181149',
likeCount: 2,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-561900db6b999.png',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-5619010106ffb.png',
imageID: '181151',
likeCount: 2,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-5619010106ffb.png',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-59039625adb45.png',
imageID: '217621',
likeCount: 1,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-59039625adb45.png',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-561900db6b999.png',
imageID: '181149',
likeCount: 1,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-561900db6b999.png',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-5619010106ffb.png',
imageID: '181151',
likeCount: 1,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/hdmusiclogo/nirvana-5619010106ffb.png',
},
],
thumbnails: [
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-4fb61ff40a15a.jpg',
imageID: '31455',
likeCount: 4,
likeCount: 5,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-4fb61ff40a15a.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-4fb6205204d6e.jpg',
imageID: '31456',
likeCount: 4,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-4fb6205204d6e.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-515ddb61b444b.jpg',
imageID: '77828',
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-515ddb61b444b.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-4fb61fd2f3204.jpg',
imageID: '31454',
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-4fb61fd2f3204.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-4fb6205204d6e.jpg',
imageID: '31456',
likeCount: 3,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-4fb6205204d6e.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-515ddb61b444b.jpg',
imageID: '77828',
likeCount: 2,
url: 'https://assets.fanart.tv/preview/music/5b11f4ce-a62d-471e-81fc-a69a8278c7da/artistthumb/nirvana-515ddb61b444b.jpg',
},
],
},
},
@ -221,7 +221,7 @@ Generated by [AVA](https://ava.li).
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-4decb408b6604.jpg',
imageID: '4417',
likeCount: 11,
likeCount: 12,
url: 'https://assets.fanart.tv/preview/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-4decb408b6604.jpg',
},
{
@ -254,6 +254,18 @@ Generated by [AVA](https://ava.li).
likeCount: 2,
url: 'https://assets.fanart.tv/preview/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-53cf470795637.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-59a82b1a7c6cd.jpg',
imageID: '225420',
likeCount: 1,
url: 'https://assets.fanart.tv/preview/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-59a82b1a7c6cd.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-59a82d31adb2f.jpg',
imageID: '225421',
likeCount: 1,
url: 'https://assets.fanart.tv/preview/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-59a82d31adb2f.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-55c4af535f7e9.jpg',
imageID: '173720',
@ -266,18 +278,6 @@ Generated by [AVA](https://ava.li).
likeCount: 1,
url: 'https://assets.fanart.tv/preview/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-55cbdf80ef05c.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-59a82b1a7c6cd.jpg',
imageID: '225420',
likeCount: 0,
url: 'https://assets.fanart.tv/preview/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-59a82b1a7c6cd.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-59a82d31adb2f.jpg',
imageID: '225421',
likeCount: 0,
url: 'https://assets.fanart.tv/preview/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-59a82d31adb2f.jpg',
},
{
fullSizeURL: 'https://assets.fanart.tv/fanart/music/83d91898-7763-47d7-b03b-b92132375c47/albumcover/the-dark-side-of-the-moon-59a31c7ad5931.jpg',
imageID: '225172',

View file

@ -10,7 +10,7 @@ const context = extension.extendContext(baseContext)
function testData(t, query, handler) {
return graphql(schema, query, null, context).then(result => {
if (result.errors !== undefined) {
console.log(result.errors)
result.errors.forEach(error => t.log(error))
}
t.is(result.errors, undefined)
return handler(t, result.data)

View file

@ -13,10 +13,11 @@ Generated by [AVA](https://ava.li).
artist: {
mediaWikiImages: [
{
artistHTML: '<a rel="nofollow" class="external text" href="http://www.flickr.com/people/77758445@N00">P.B. Rage</a> from USA',
artistHTML: '<a rel="nofollow" class="external text" href="https://www.flickr.com/people/77758445@N00">P.B. Rage</a> from USA',
canonicalTitle: 'File:Nirvana around 1992.jpg',
categories: [
'1992 in California',
'1992 events in California',
'1992 in Los Angeles',
'1992 in television',
'Fashion in 1992',
'Flickr images reviewed by trusted users',
@ -26,9 +27,10 @@ Generated by [AVA](https://ava.li).
'Music events in 1992',
'Nirvana (band)',
'Pauley Pavilion',
'Photographs taken on 1992-09-09',
'September 1992 in the United States',
],
creditHTML: '<a rel="nofollow" class="external text" href="http://www.flickr.com/photos/77758445@N00/11295743/">More Kurt -- too rad</a>',
creditHTML: '<a rel="nofollow" class="external text" href="https://www.flickr.com/photos/77758445@N00/11295743/">More Kurt -- too rad</a>',
descriptionHTML: 'Kurt Cobain (front) and Krist Novoselic (left) live at the 1992 <a href="//commons.wikimedia.org/wiki/MTV_Video_Music_Awards" class="mw-redirect" title="MTV Video Music Awards">MTV Video Music Awards</a>.',
descriptionURL: 'https://commons.wikimedia.org/wiki/File:Nirvana_around_1992.jpg',
height: 346,
@ -53,7 +55,7 @@ Generated by [AVA](https://ava.li).
{
name: 'Categories',
source: 'commons-categories',
value: '1992 in California|1992 in television|Fashion in 1992|Flickr images reviewed by trusted users|Krist Novoselic|Kurt Cobain|MTV Video Music Awards|Music events in 1992|Nirvana (band)|Pauley Pavilion|September 1992 in the United States',
value: '1992 events in California|1992 in Los Angeles|1992 in television|Fashion in 1992|Flickr images reviewed by trusted users|Krist Novoselic|Kurt Cobain|MTV Video Music Awards|Music events in 1992|Nirvana (band)|Pauley Pavilion|Photographs taken on 1992-09-09|September 1992 in the United States',
},
{
name: 'Assessments',
@ -73,12 +75,12 @@ Generated by [AVA](https://ava.li).
{
name: 'Credit',
source: 'commons-desc-page',
value: '<a rel="nofollow" class="external text" href="http://www.flickr.com/photos/77758445@N00/11295743/">More Kurt -- too rad</a>',
value: '<a rel="nofollow" class="external text" href="https://www.flickr.com/photos/77758445@N00/11295743/">More Kurt -- too rad</a>',
},
{
name: 'Artist',
source: 'commons-desc-page',
value: '<a rel="nofollow" class="external text" href="http://www.flickr.com/people/77758445@N00">P.B. Rage</a> from USA',
value: '<a rel="nofollow" class="external text" href="https://www.flickr.com/people/77758445@N00">P.B. Rage</a> from USA',
},
{
name: 'LicenseShortName',
@ -136,57 +138,6 @@ Generated by [AVA](https://ava.li).
search: {
instruments: {
nodes: [
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
@ -296,6 +247,289 @@ Generated by [AVA](https://ava.li).
},
],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [
{
artistHTML: `<ul>
<li>
<a href="//commons.wikimedia.org/wiki/File:M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg" title="File:M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus.jpg">M2676_-_gitarr_-_Matteo_Seelos_-_före_1653_-_foto_Olav_Nyhus.jpg</a>: <a href="//commons.wikimedia.org/w/index.php?title=User:MTM_Malin&amp;action=edit&amp;redlink=1" class="new" title="User:MTM Malin (page does not exist)">Musik- och teatermuseet</a>
</li>
<li>derivative work: <a href="//commons.wikimedia.org/wiki/User:Clusternote" title="User:Clusternote">Clusternote</a>
</li>
</ul>`,
canonicalTitle: 'File:M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus (clip).jpg',
categories: [
'1653 instrument productions',
'5 double courses guitars',
'Baroque guitars',
'Files uploaded by User:Clusternote',
'Matteo Seelos (luthier)',
'Multi-tier rosettes (string instrument)',
'Retouched pictures',
'Self-published work',
'Swedish Performing Arts Agency',
'Uploaded with derivativeFX',
],
creditHTML: 'This file was derived from: <a href="//commons.wikimedia.org/wiki/File:M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg" title="File:M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus.jpg">M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus.jpg</a>: <a href="//commons.wikimedia.org/wiki/File:M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg" class="image"><img alt="M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus.jpg" src="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg/50px-M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg" width="50" height="38" srcset="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg/75px-M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg 1.5x, https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg/100px-M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg 2x" data-file-width="3008" data-file-height="2256"></a><br>',
descriptionHTML: 'Gitarr, tillverkare Matteo Seelos, före 1653. Foto Olav Nyhus. Ingår i <a href="https://sv.wikipedia.org/wiki/Musik-_och_teatermuseet" class="extiw" title="sv:Musik- och teatermuseet">Musik- och teatermuseets</a> instrumentsamling.',
descriptionURL: 'https://commons.wikimedia.org/wiki/File:M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus_(clip).jpg',
height: 1236,
licenseShortName: 'CC BY-SA 3.0',
licenseURL: 'https://creativecommons.org/licenses/by-sa/3.0',
metadata: [
{
name: 'DateTime',
source: 'mediawiki-metadata',
value: '2013-11-28 09:55:59',
},
{
name: 'ObjectName',
source: 'mediawiki-metadata',
value: 'M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus (clip)',
},
{
name: 'CommonsMetadataExtension',
source: 'extension',
value: '1.2',
},
{
name: 'Categories',
source: 'commons-categories',
value: '1653 instrument productions|5 double courses guitars|Baroque guitars|Files uploaded by User:Clusternote|Matteo Seelos (luthier)|Multi-tier rosettes (string instrument)|Retouched pictures|Self-published work|Swedish Performing Arts Agency|Uploaded with derivativeFX',
},
{
name: 'Assessments',
source: 'commons-categories',
value: '',
},
{
name: 'ImageDescription',
source: 'commons-desc-page',
value: 'Gitarr, tillverkare Matteo Seelos, före 1653. Foto Olav Nyhus. Ingår i <a href="https://sv.wikipedia.org/wiki/Musik-_och_teatermuseet" class="extiw" title="sv:Musik- och teatermuseet">Musik- och teatermuseets</a> instrumentsamling.',
},
{
name: 'DateTimeOriginal',
source: 'commons-desc-page',
value: '2013-11-28 09:53',
},
{
name: 'Credit',
source: 'commons-desc-page',
value: 'This file was derived from: <a href="//commons.wikimedia.org/wiki/File:M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg" title="File:M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus.jpg">M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus.jpg</a>: <a href="//commons.wikimedia.org/wiki/File:M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg" class="image"><img alt="M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus.jpg" src="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg/50px-M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg" width="50" height="38" srcset="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg/75px-M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg 1.5x, https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg/100px-M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg 2x" data-file-width="3008" data-file-height="2256"></a><br>',
},
{
name: 'Artist',
source: 'commons-desc-page',
value: `<ul>
<li>
<a href="//commons.wikimedia.org/wiki/File:M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus.jpg" title="File:M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus.jpg">M2676_-_gitarr_-_Matteo_Seelos_-_före_1653_-_foto_Olav_Nyhus.jpg</a>: <a href="//commons.wikimedia.org/w/index.php?title=User:MTM_Malin&amp;action=edit&amp;redlink=1" class="new" title="User:MTM Malin (page does not exist)">Musik- och teatermuseet</a>
</li>
<li>derivative work: <a href="//commons.wikimedia.org/wiki/User:Clusternote" title="User:Clusternote">Clusternote</a>
</li>
</ul>`,
},
{
name: 'LicenseShortName',
source: 'commons-desc-page',
value: 'CC BY-SA 3.0',
},
{
name: 'UsageTerms',
source: 'commons-desc-page',
value: 'Creative Commons Attribution-Share Alike 3.0',
},
{
name: 'AttributionRequired',
source: 'commons-desc-page',
value: 'true',
},
{
name: 'LicenseUrl',
source: 'commons-desc-page',
value: 'https://creativecommons.org/licenses/by-sa/3.0',
},
{
name: 'Copyrighted',
source: 'commons-desc-page',
value: 'True',
},
{
name: 'Restrictions',
source: 'commons-desc-page',
value: '',
},
{
name: 'License',
source: 'commons-templates',
value: 'cc-by-sa-3.0',
},
],
objectName: 'M2676 - gitarr - Matteo Seelos - före 1653 - foto Olav Nyhus (clip)',
originalDateTimeHTML: '2013-11-28 09:53',
size: 1547933,
url: 'https://upload.wikimedia.org/wikipedia/commons/1/1a/M2676_-_gitarr_-_Matteo_Seelos_-_f%C3%B6re_1653_-_foto_Olav_Nyhus_%28clip%29.jpg',
user: 'Clusternote',
width: 2613,
},
],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [
{
artistHTML: '<a href="//commons.wikimedia.org/w/index.php?title=User:Patlaff&amp;action=edit&amp;redlink=1" class="new" title="User:Patlaff (page does not exist)">Patlaff</a>',
canonicalTitle: 'File:Steel guitar.jpg',
categories: [
'Dobro-guitars',
'Frankilin Pedal Steel Guitar Co.',
'Lap steel guitars',
'Pedal steel guitars',
'Resonator guitars',
'Self-published work',
'Steel guitars',
'Unidentified guitar brands',
],
creditHTML: '<span class="int-own-work" lang="en">Own work</span>',
descriptionHTML: 'steel guitar',
descriptionURL: 'https://commons.wikimedia.org/wiki/File:Steel_guitar.jpg',
height: 4752,
licenseShortName: 'CC BY-SA 3.0',
licenseURL: 'https://creativecommons.org/licenses/by-sa/3.0',
metadata: [
{
name: 'DateTime',
source: 'mediawiki-metadata',
value: '2012-11-18 20:09:45',
},
{
name: 'ObjectName',
source: 'mediawiki-metadata',
value: 'Steel guitar',
},
{
name: 'CommonsMetadataExtension',
source: 'extension',
value: '1.2',
},
{
name: 'Categories',
source: 'commons-categories',
value: 'Dobro-guitars|Frankilin Pedal Steel Guitar Co.|Lap steel guitars|Pedal steel guitars|Resonator guitars|Self-published work|Steel guitars|Unidentified guitar brands',
},
{
name: 'Assessments',
source: 'commons-categories',
value: '',
},
{
name: 'ImageDescription',
source: 'commons-desc-page',
value: 'steel guitar',
},
{
name: 'DateTimeOriginal',
source: 'commons-desc-page',
value: '2012-01-21 12:18:59',
},
{
name: 'Credit',
source: 'commons-desc-page',
value: '<span class="int-own-work" lang="en">Own work</span>',
},
{
name: 'Artist',
source: 'commons-desc-page',
value: '<a href="//commons.wikimedia.org/w/index.php?title=User:Patlaff&amp;action=edit&amp;redlink=1" class="new" title="User:Patlaff (page does not exist)">Patlaff</a>',
},
{
name: 'LicenseShortName',
source: 'commons-desc-page',
value: 'CC BY-SA 3.0',
},
{
name: 'UsageTerms',
source: 'commons-desc-page',
value: 'Creative Commons Attribution-Share Alike 3.0',
},
{
name: 'AttributionRequired',
source: 'commons-desc-page',
value: 'true',
},
{
name: 'LicenseUrl',
source: 'commons-desc-page',
value: 'https://creativecommons.org/licenses/by-sa/3.0',
},
{
name: 'Copyrighted',
source: 'commons-desc-page',
value: 'True',
},
{
name: 'Restrictions',
source: 'commons-desc-page',
value: '',
},
{
name: 'License',
source: 'commons-templates',
value: 'cc-by-sa-3.0',
},
],
objectName: 'Steel guitar',
originalDateTimeHTML: '2012-01-21 12:18:59',
size: 1405577,
url: 'https://upload.wikimedia.org/wikipedia/commons/3/37/Steel_guitar.jpg',
user: 'Patlaff',
width: 3168,
},
],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
{
mediaWikiImages: [],
},
],
},
},

View file

@ -10,7 +10,7 @@ const context = extension.extendContext(baseContext)
function testData(t, query, handler) {
return graphql(schema, query, null, context).then(result => {
if (result.errors !== undefined) {
console.log(result.errors)
result.errors.forEach(error => t.log(error))
}
t.is(result.errors, undefined)
return handler(t, result.data)

View file

@ -13,8 +13,8 @@ Generated by [AVA](https://ava.li).
artist: {
theAudioDB: {
artistID: '111319',
banner: 'http://www.theaudiodb.com/images/media/artist/banner/wppvrr1365966313.jpg',
bannerPreview: 'http://www.theaudiodb.com/images/media/artist/banner/wppvrr1365966313.jpg/preview',
banner: 'https://www.theaudiodb.com/images/media/artist/banner/wppvrr1365966313.jpg',
bannerPreview: 'https://www.theaudiodb.com/images/media/artist/banner/wppvrr1365966313.jpg/preview',
biography: `Nirvana was an American rock band that was formed by singer and guitarist Kurt Cobain and bassist Krist Novoselic in Aberdeen, Washington, in 1987. Nirvana went through a succession of drummers, the longest-lasting being Dave Grohl, who joined the band in 1990. Despite releasing only three full-length studio albums in their seven-year career, Nirvana has come to be regarded as one of the most influential and important rock bands of the modern era.␊
In the late 1980s Nirvana established itself as part of the Seattle grunge scene, releasing its first album Bleach for the independent record label Sub Pop in 1989. The band eventually came to develop a sound that relied on dynamic contrasts, often between quiet verses and loud, heavy choruses. After signing to major label DGC Records, Nirvana found unexpected success with "Smells Like Teen Spirit", the first single from the band's second album Nevermind (1991). Nirvana's sudden success widely popularized alternative rock as a whole, and the band's frontman Cobain found himself referred to in the media as the "spokesman of a generation", with Nirvana being considered the "flagship band" of Generation X. In response, Nirvana's third studio album, In Utero (1993), featured an abrasive, less-mainstream sound and challenged the group's audience. The album did not match the sales figures of Nevermind, but was still a commercial success and critically acclaimed.␊
Nirvana's brief run ended following the death of Kurt Cobain in 1994, but various posthumous releases have been issued since, overseen by Novoselic, Grohl, and Cobain's widow Courtney Love. Since its debut, the band has sold over 25 million records in the United States alone, and over 75 million records worldwide, making them one of the best-selling bands of all time. Nirvana was inducted into the Rock and Roll Hall of Fame in 2014, in its first year of eligibility.`,
@ -23,23 +23,23 @@ Generated by [AVA](https://ava.li).
全世界でのトータルセールスは、約7500万枚[1][2]。␊
「ローリング・ストーンの選ぶ歴史上最も偉大な100組のアーティスト」において第30位。`,
fanArt: [
'http://media.theaudiodb.com/images/media/artist/fanart/nirvana-4ddaf131354a8.jpg',
'http://media.theaudiodb.com/images/media/artist/fanart/ussvpr1342344599.jpg',
'http://media.theaudiodb.com/images/media/artist/fanart/uusxqw1342344614.jpg',
'https://www.theaudiodb.com/images/media/artist/fanart/nirvana-4ddaf131354a8.jpg',
'https://www.theaudiodb.com/images/media/artist/fanart/ussvpr1342344599.jpg',
'https://www.theaudiodb.com/images/media/artist/fanart/uusxqw1342344614.jpg',
],
fanArtPreview: [
'http://media.theaudiodb.com/images/media/artist/fanart/nirvana-4ddaf131354a8.jpg/preview',
'http://media.theaudiodb.com/images/media/artist/fanart/ussvpr1342344599.jpg/preview',
'http://media.theaudiodb.com/images/media/artist/fanart/uusxqw1342344614.jpg/preview',
'https://www.theaudiodb.com/images/media/artist/fanart/nirvana-4ddaf131354a8.jpg/preview',
'https://www.theaudiodb.com/images/media/artist/fanart/ussvpr1342344599.jpg/preview',
'https://www.theaudiodb.com/images/media/artist/fanart/uusxqw1342344614.jpg/preview',
],
genre: 'Rock',
logo: 'http://www.theaudiodb.com/images/media/artist/logo/xyryvu1363124407.png',
logoPreview: 'http://www.theaudiodb.com/images/media/artist/logo/xyryvu1363124407.png/preview',
logo: 'https://www.theaudiodb.com/images/media/artist/logo/swsxst1531993263.png',
logoPreview: 'https://www.theaudiodb.com/images/media/artist/logo/swsxst1531993263.png/preview',
memberCount: 3,
mood: 'Sad',
style: 'Rock/Pop',
thumbnail: 'http://www.theaudiodb.com/images/media/artist/thumb/ryppyp1363124444.jpg',
thumbnailPreview: 'http://www.theaudiodb.com/images/media/artist/thumb/ryppyp1363124444.jpg/preview',
thumbnail: 'https://www.theaudiodb.com/images/media/artist/thumb/ryppyp1363124444.jpg',
thumbnailPreview: 'https://www.theaudiodb.com/images/media/artist/thumb/ryppyp1363124444.jpg/preview',
},
},
},
@ -62,22 +62,30 @@ Generated by [AVA](https://ava.li).
genre: 'Latin',
mood: 'Sensual',
musicVideo: {
commentCount: 1449046,
commentCount: 2595618,
companyName: null,
directorName: 'Carlos Pérez',
dislikeCount: 2168098,
likeCount: 21015918,
screenshots: [],
screenshotsPreview: [],
dislikeCount: 3379320,
likeCount: 29001634,
screenshots: [
'https://www.theaudiodb.com/images/media/track/mvidscreen/qpxuvy1529928526.jpg',
'https://www.theaudiodb.com/images/media/track/mvidscreen/tqupsr1529928533.jpg',
'https://www.theaudiodb.com/images/media/track/mvidscreen/qtrtvr1529928541.jpg',
],
screenshotsPreview: [
'https://www.theaudiodb.com/images/media/track/mvidscreen/qpxuvy1529928526.jpg/preview',
'https://www.theaudiodb.com/images/media/track/mvidscreen/tqupsr1529928533.jpg/preview',
'https://www.theaudiodb.com/images/media/track/mvidscreen/qtrtvr1529928541.jpg/preview',
],
url: 'https://www.youtube.com/watch?v=kJQP7kiw5Fk',
viewCount: 2147483647,
viewCount: 5353939593,
},
score: 10,
scoreVotes: 1,
scoreVotes: 3,
style: 'Latin',
theme: 'In Love',
thumbnail: 'http://media.theaudiodb.com/images/media/track/thumb/vqqpry1506425784.jpg',
thumbnailPreview: 'http://media.theaudiodb.com/images/media/track/thumb/vqqpry1506425784.jpg/preview',
thumbnail: 'https://www.theaudiodb.com/images/media/track/thumb/vqqpry1506425784.jpg',
thumbnailPreview: 'https://www.theaudiodb.com/images/media/track/thumb/vqqpry1506425784.jpg/preview',
trackID: '34838814',
trackNumber: 1,
},
@ -104,10 +112,10 @@ Generated by [AVA](https://ava.li).
Random Access Memories hace un tributo a la música estadounidense de la época de los 1970s y la primera parte de los 1980s, particularmente al sonido de Los Ángeles durante esa época. Daft Punk grabó el álbum en gran parte con orquesta en vivo con sesiónes musicales y con un uso limitado de máquinas de percusión, sintetizador modular, y con una vendimia de vocoders. El álbum contiene un gran número de colaboradores, entre ellos se destácan: Panda Bear, Chilly Gonzales, DJ Falcon, Julian Casablancas, Todd Edwards, Paul Williams, Pharrell Williams, Nile Rodgers y Ghallmarck. El álbum fue recibido con críticas positivas.␊
Durante la primera mitad de 2013, vendió 614 000 copias en los Estados Unidos, donde se convirtió en el décimo álbum más vendido durante dicho periodo.`,
discImage: 'http://www.theaudiodb.com/images/media/album/cdart/random-access-memories-5194a5974107d.png',
discImagePreview: 'http://www.theaudiodb.com/images/media/album/cdart/random-access-memories-5194a5974107d.png/preview',
frontImage: 'http://www.theaudiodb.com/images/media/album/thumb/random-access-memories-51764651042e5.jpg',
frontImagePreview: 'http://www.theaudiodb.com/images/media/album/thumb/random-access-memories-51764651042e5.jpg/preview',
discImage: 'https://www.theaudiodb.com/images/media/album/cdart/random-access-memories-5194a5974107d.png',
discImagePreview: 'https://www.theaudiodb.com/images/media/album/cdart/random-access-memories-5194a5974107d.png/preview',
frontImage: 'https://www.theaudiodb.com/images/media/album/thumb/random-access-memories-51764651042e5.jpg',
frontImagePreview: 'https://www.theaudiodb.com/images/media/album/thumb/random-access-memories-51764651042e5.jpg/preview',
genre: 'House',
mood: 'Happy',
review: null,

View file

@ -1,21 +1,20 @@
{
"statusCode": 307,
"headers": {
"date": "Tue, 20 Dec 2016 01:37:47 GMT",
"date": "Sat, 04 Aug 2018 09:21:11 GMT",
"content-type": "text/plain; charset=utf-8",
"content-length": "86",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"location": "http://archive.org/download/mbid-76df3287-6cda-33eb-8e9a-044b5e15ffdd/index.json",
"access-control-allow-origin": "*",
"server": "4b4c084fb141"
"access-control-allow-origin": "*"
},
"url": "http://coverartarchive.org:80/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd",
"time": 372,
"time": 353,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "coverartarchive.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,29 +0,0 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:55:06 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "187",
"x-ratelimit-reset": "1481763306",
"server": "Plack::Handler::Starlet",
"etag": "W/\"a7a5bbc296fd2d7f239134995661e4c4\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
},
"url": "http://musicbrainz.org:80/ws/2/label/420a9402-0a87-4510-81a3-60f513a47466?inc=ratings&fmt=json",
"time": 491,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"
}
}
}

View file

@ -2,22 +2,23 @@
"statusCode": 200,
"headers": {
"server": "nginx/1.4.6 (Ubuntu)",
"date": "Tue, 20 Dec 2016 01:39:56 GMT",
"date": "Sat, 04 Aug 2018 09:13:58 GMT",
"content-type": "application/json",
"content-length": "4829",
"last-modified": "Fri, 04 Nov 2016 08:01:44 GMT",
"connection": "keep-alive",
"etag": "\"581c4068-12dd\"",
"expires": "Tue, 20 Dec 2016 07:39:56 GMT",
"expires": "Sat, 04 Aug 2018 15:13:58 GMT",
"cache-control": "max-age=21600",
"access-control-allow-origin": "*",
"accept-ranges": "bytes"
},
"url": "http://ia601203.us.archive.org:80/29/items/mbid-d5cdb7fd-c7e9-460a-9549-8a369655cc52/index.json",
"time": 155,
"time": 141,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"accept-encoding": "gzip, deflate",
"accept": "application/json",
"referer": "http://archive.org/download/mbid-d5cdb7fd-c7e9-460a-9549-8a369655cc52/index.json",

View file

@ -1,21 +1,20 @@
{
"statusCode": 307,
"headers": {
"date": "Tue, 20 Dec 2016 01:39:55 GMT",
"date": "Sat, 04 Aug 2018 09:21:07 GMT",
"content-type": "text/plain; charset=utf-8",
"content-length": "86",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"location": "http://archive.org/download/mbid-dd15903e-0ee7-45ec-aba1-2fc7b3a44e19/index.json",
"access-control-allow-origin": "*",
"server": "d6446ea62189"
"access-control-allow-origin": "*"
},
"url": "http://coverartarchive.org:80/release/dd15903e-0ee7-45ec-aba1-2fc7b3a44e19",
"time": 414,
"time": 372,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "coverartarchive.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

View file

@ -0,0 +1 @@
{"sort-name":"Sony Music Associated Records","life-span":{"begin":"2001-10-01","ended":false,"end":null},"name":"Sony Music Associated Records","area":{"disambiguation":"","iso-3166-1-codes":["JP"],"id":"2db42837-c832-3c27-b4a3-08198f75693c","name":"Japan","sort-name":"Japan"},"label-code":null,"type":"Imprint","relations":[{"type":"discogs","target-credit":"","direction":"forward","target-type":"url","type-id":"5b987f87-25bc-4a2d-b3f1-3618795b8207","url":{"resource":"https://www.discogs.com/label/150168","id":"76aa9dab-a56f-4593-a020-79ea9fb69b7c"},"attributes":[],"ended":false,"attribute-values":{},"begin":null,"source-credit":"","end":null},{"type":"discogs","target-credit":"","direction":"forward","target-type":"url","type-id":"5b987f87-25bc-4a2d-b3f1-3618795b8207","url":{"resource":"https://www.discogs.com/label/878626","id":"168bc19f-09ba-4ae9-a79c-6d76fa59ced9"},"ended":false,"attributes":[],"attribute-values":{},"begin":null,"source-credit":"","end":null},{"type":"logo","target-credit":"","target-type":"url","direction":"forward","type-id":"b35f7822-bf3c-4148-b306-fb723c63ee8b","url":{"resource":"https://web.archive.org/web/20150416023558/https://pbs.twimg.com/profile_images/555963422437670912/sq8xcmVX.jpeg","id":"ab9cdf18-a863-4ef2-96c8-1bcac3a48867"},"ended":false,"attributes":[],"attribute-values":{},"begin":null,"source-credit":"","end":null},{"type":"vgmdb","type-id":"8a2d3e55-d291-4b99-87a0-c59c6b121762","target-type":"url","direction":"forward","target-credit":"","attributes":[],"url":{"id":"1788933b-dd28-42c6-81c7-bb25c64a3a11","resource":"https://vgmdb.net/org/187"},"ended":false,"attribute-values":{},"source-credit":"","begin":null,"end":null},{"end":null,"begin":null,"source-credit":"","attribute-values":{},"url":{"resource":"https://www.wikidata.org/wiki/Q11315207","id":"3d5cacd7-b84f-41c5-a99b-32855ec61c1f"},"ended":false,"attributes":[],"target-credit":"","direction":"forward","target-type":"url","type-id":"75d87e83-d927-4580-ba63-44dc76256f98","type":"wikidata"}],"type-id":"b6285b2a-3514-3d43-80df-fcf528824ded","country":"JP","id":"d766cf2e-d31e-4fad-9511-b27013594d7e","ipis":[],"isnis":[],"disambiguation":"imprint \"A∫R\""}

View file

@ -1,24 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Sat, 04 Nov 2017 22:18:56 GMT",
"date": "Sat, 04 Aug 2018 10:01:01 GMT",
"content-type": "application/json; charset=utf-8",
"content-length": "248",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1048",
"x-ratelimit-reset": "1509833937",
"x-ratelimit-reset": "1533376863",
"server": "Plack::Handler::Starlet",
"etag": "\"82c22921587af20efc7bb9480993b28f\"",
"etag": "W/\"4939ad82b59a75549e85f671b345aa13\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/area/85752fda-13c4-31a3-bee5-0e5cb1f51dad?fmt=json",
"time": 370,
"url": "http://musicbrainz.org:80/ws/2/label/d766cf2e-d31e-4fad-9511-b27013594d7e?inc=url-rels&fmt=json",
"time": 384,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/7.0.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,29 +0,0 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:55:01 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "555",
"x-ratelimit-reset": "1481763302",
"server": "Plack::Handler::Starlet",
"etag": "W/\"dbabcdc1b16a16f4fd57d66a0ed7c32f\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
},
"url": "http://musicbrainz.org:80/ws/2/label/aeff6db2-1fc2-4c46-8218-c4ac52e0066c?inc=ratings&fmt=json",
"time": 493,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"
}
}
}

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:53:50 GMT",
"content-type": "application/json; charset=UTF-8",
"date": "Sat, 04 Aug 2018 09:23:26 GMT",
"content-type": "application/json",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "590",
"x-ratelimit-reset": "1481763232",
"last-modified": "Wed, 09 Nov 2016 23:43:24 GMT",
"server": "Jetty(9.3.10.v20160621)",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1006",
"x-ratelimit-reset": "1533374604",
"last-modified": "Sat, 04 Aug 2018 09:21:17 GMT",
"etag": "W/\"NDc5NDYwMDAwMDAwMDAwMFNvbHI=\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/recording?query=Burn%20the%20Witch&fmt=json",
"time": 541,
"time": 2720,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:54:19 GMT",
"date": "Sat, 04 Aug 2018 09:23:56 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "444",
"x-ratelimit-reset": "1481763260",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "842",
"x-ratelimit-reset": "1533374636",
"server": "Plack::Handler::Starlet",
"etag": "W/\"e233950d837ef29d43e3cc145f6d54a8\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"7ae206227f52916215d6997409b6ad76\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/recording/07649758-09c8-4d70-bc6f-5c37ab36334d?inc=artist-credits&fmt=json",
"time": 480,
"time": 383,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

View file

@ -2,20 +2,21 @@
"statusCode": 302,
"headers": {
"server": "nginx/1.4.6 (Ubuntu)",
"date": "Tue, 20 Dec 2016 01:37:47 GMT",
"date": "Sat, 04 Aug 2018 09:21:11 GMT",
"content-type": "text/html; charset=UTF-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"x-powered-by": "PHP/5.5.9-1ubuntu4.20",
"access-control-allow-origin": "*",
"accept-ranges": "bytes",
"location": "http://ia802607.us.archive.org/32/items/mbid-76df3287-6cda-33eb-8e9a-044b5e15ffdd/index.json"
"location": "http://ia802607.us.archive.org/32/items/mbid-76df3287-6cda-33eb-8e9a-044b5e15ffdd/index.json",
"strict-transport-security": "max-age=604800"
},
"url": "http://archive.org:80/download/mbid-76df3287-6cda-33eb-8e9a-044b5e15ffdd/index.json",
"time": 139,
"time": 133,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"accept-encoding": "gzip, deflate",
"accept": "application/json",
"referer": "http://coverartarchive.org/release/76df3287-6cda-33eb-8e9a-044b5e15ffdd",

Binary file not shown.

View file

@ -1,29 +0,0 @@
{
"statusCode": 200,
"headers": {
"date": "Tue, 20 Dec 2016 01:40:11 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "577",
"x-ratelimit-reset": "1482198012",
"server": "Plack::Handler::Starlet",
"etag": "W/\"0c725784e392aef95ce4df262002a059\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
},
"url": "http://musicbrainz.org:80/ws/2/release/3e2c779e-16e8-459e-8791-2da47a92dce6?fmt=json",
"time": 415,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"
}
}
}

View file

@ -2,20 +2,21 @@
"statusCode": 302,
"headers": {
"server": "nginx/1.4.6 (Ubuntu)",
"date": "Tue, 20 Dec 2016 01:39:57 GMT",
"date": "Sat, 04 Aug 2018 09:21:08 GMT",
"content-type": "text/html; charset=UTF-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"x-powered-by": "PHP/5.5.9-1ubuntu4.20",
"access-control-allow-origin": "*",
"accept-ranges": "bytes",
"location": "http://ia600509.us.archive.org/33/items/mbid-fb98043c-7ac8-4505-ba87-28576836a8d5/index.json"
"location": "http://ia800509.us.archive.org/33/items/mbid-fb98043c-7ac8-4505-ba87-28576836a8d5/index.json",
"strict-transport-security": "max-age=604800"
},
"url": "http://archive.org:80/download/mbid-fb98043c-7ac8-4505-ba87-28576836a8d5/index.json",
"time": 178,
"time": 109,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"accept-encoding": "gzip, deflate",
"accept": "application/json",
"referer": "http://coverartarchive.org/release/fb98043c-7ac8-4505-ba87-28576836a8d5",

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 19 Oct 2017 06:23:11 GMT",
"date": "Sat, 04 Aug 2018 10:00:06 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "843",
"x-ratelimit-reset": "1508394191",
"x-ratelimit-remaining": "812",
"x-ratelimit-reset": "1533376806",
"server": "Plack::Handler::Starlet",
"etag": "W/\"bc0fd422eb415020ac9aba896844f774\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"18f4b4e33f8c6592359deb1bee1ca584\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/instrument/ba4705aa-ff1d-48d5-ae80-7b2046fb451e?inc=url-rels&fmt=json",
"time": 358,
"time": 373,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/6.1.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:54:18 GMT",
"date": "Sat, 04 Aug 2018 09:23:55 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "575",
"x-ratelimit-reset": "1481763260",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "918",
"x-ratelimit-reset": "1533374636",
"server": "Plack::Handler::Starlet",
"etag": "W/\"f86eb48e9c24a7b43f332ef0f56d5c82\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"8db00b0812d52fc6e6470f7a6d624a34\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/release/d5cdb7fd-c7e9-460a-9549-8a369655cc52?fmt=json",
"time": 492,
"time": 362,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:55:45 GMT",
"date": "Sat, 04 Aug 2018 09:25:24 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "614",
"x-ratelimit-reset": "1481763346",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "991",
"x-ratelimit-reset": "1533374724",
"server": "Plack::Handler::Starlet",
"etag": "W/\"2f7ca8025cffd71a1e72f4d671dad0be\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"ae034eada19ed3fc539b67fceaedae31\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/discid/hcwQmxWsG3GdAQvfBa1SCpp4FuU-?fmt=json",
"time": 1138,
"time": 435,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,29 +0,0 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 19 Oct 2017 06:35:18 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1060",
"x-ratelimit-reset": "1508394919",
"server": "Plack::Handler::Starlet",
"etag": "W/\"952c89cf2a01358c9a3c8295a61c2d06\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
},
"url": "http://musicbrainz.org:80/ws/2/label/d49fe768-e91c-404f-9542-3008c4ef9b51?inc=url-rels&fmt=json",
"time": 410,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/6.1.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"
}
}
}

Binary file not shown.

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 19 Oct 2017 06:35:46 GMT",
"date": "Sat, 04 Aug 2018 10:00:01 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1059",
"x-ratelimit-reset": "1508394947",
"x-ratelimit-remaining": "1119",
"x-ratelimit-reset": "1533376802",
"server": "Plack::Handler::Starlet",
"etag": "W/\"2bb8aa78cfd610c5e1a7b121b54efa8f\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"e66d0ab77fbfb8bfdfdeac4c284c1944\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/place/b5297256-8482-4cba-968a-25db61563faf?fmt=json",
"time": 327,
"time": 383,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/6.1.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 19 Oct 2017 06:34:56 GMT",
"date": "Sat, 04 Aug 2018 10:00:28 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1040",
"x-ratelimit-reset": "1508394897",
"x-ratelimit-remaining": "822",
"x-ratelimit-reset": "1533376828",
"server": "Plack::Handler::Starlet",
"etag": "W/\"15d3949951847ce0b26e10c0e96e96db\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"2fb62cdbdad08970192ffe2678b431d1\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/label/08f37a61-1c54-4257-b31d-810fa2ac5cd5?inc=url-rels&fmt=json",
"time": 378,
"time": 381,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/6.1.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:54:23 GMT",
"date": "Sat, 04 Aug 2018 09:23:56 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "515",
"x-ratelimit-reset": "1481763264",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "843",
"x-ratelimit-reset": "1533374636",
"server": "Plack::Handler::Starlet",
"etag": "W/\"5a1a587e543bd1c46c2d2400acbdd926\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"b440e9e3667c13d84537c9fba2a2db8f\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/release-group/53614893-6f25-4519-9cae-b1db904e2887?inc=artist-credits&fmt=json",
"time": 479,
"time": 354,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

View file

@ -0,0 +1 @@
{"images":[{"edit":43983930,"image":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/16110068623.jpg","thumbnails":{"large":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/16110068623-500.jpg","small":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/16110068623-250.jpg"},"front":true,"comment":"WB 2013","approved":true,"back":false,"types":["Front"],"id":16110068623},{"approved":true,"image":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436435354.jpg","edit":27985878,"front":false,"thumbnails":{"large":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436435354-500.jpg","small":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436435354-250.jpg"},"comment":"","back":false,"id":7436435354,"types":["Front"]},{"approved":true,"edit":27985879,"image":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436436976.jpg","front":false,"thumbnails":{"small":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436436976-250.jpg","large":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436436976-500.jpg"},"comment":"","back":true,"types":["Back"],"id":7436436976},{"edit":27985881,"image":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436437572.jpg","comment":"","thumbnails":{"large":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436437572-500.jpg","small":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436437572-250.jpg"},"front":false,"approved":true,"back":false,"types":["Medium"],"id":7436437572},{"back":false,"id":7436438250,"types":["Medium"],"approved":true,"image":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436438250.jpg","edit":27985882,"thumbnails":{"large":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436438250-500.jpg","small":"http://coverartarchive.org/release/22a1945f-185c-4d70-979e-f297b00b0c71/7436438250-250.jpg"},"front":false,"comment":""}],"release":"https://musicbrainz.org/release/22a1945f-185c-4d70-979e-f297b00b0c71"}

View file

@ -2,26 +2,27 @@
"statusCode": 200,
"headers": {
"server": "nginx/1.4.6 (Ubuntu)",
"date": "Tue, 20 Dec 2016 01:39:57 GMT",
"date": "Sat, 04 Aug 2018 09:21:07 GMT",
"content-type": "application/json",
"content-length": "1787",
"last-modified": "Wed, 04 Jun 2014 14:48:40 GMT",
"content-length": "2213",
"last-modified": "Sat, 11 Mar 2017 13:00:55 GMT",
"connection": "keep-alive",
"etag": "\"538f31c8-6fb\"",
"expires": "Tue, 20 Dec 2016 07:39:57 GMT",
"etag": "\"58c3f507-8a5\"",
"expires": "Sat, 04 Aug 2018 15:21:07 GMT",
"cache-control": "max-age=21600",
"access-control-allow-origin": "*",
"accept-ranges": "bytes"
},
"url": "http://ia902502.us.archive.org:80/29/items/mbid-22a1945f-185c-4d70-979e-f297b00b0c71/index.json",
"time": 104,
"url": "http://ia802502.us.archive.org:80/29/items/mbid-22a1945f-185c-4d70-979e-f297b00b0c71/index.json",
"time": 142,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"accept-encoding": "gzip, deflate",
"accept": "application/json",
"referer": "http://archive.org/download/mbid-22a1945f-185c-4d70-979e-f297b00b0c71/index.json",
"host": "ia902502.us.archive.org"
"host": "ia802502.us.archive.org"
}
}
}

View file

@ -0,0 +1,26 @@
{
"statusCode": 302,
"headers": {
"server": "nginx/1.4.6 (Ubuntu)",
"date": "Sat, 04 Aug 2018 09:21:09 GMT",
"content-type": "text/html; charset=UTF-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"access-control-allow-origin": "*",
"accept-ranges": "bytes",
"location": "http://ia800802.us.archive.org/16/items/mbid-4c7c6c6c-5b5b-4625-8b5a-87e44bd5a243/index.json",
"strict-transport-security": "max-age=604800"
},
"url": "http://archive.org:80/download/mbid-4c7c6c6c-5b5b-4625-8b5a-87e44bd5a243/index.json",
"time": 295,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"accept-encoding": "gzip, deflate",
"accept": "application/json",
"referer": "http://coverartarchive.org/release/4c7c6c6c-5b5b-4625-8b5a-87e44bd5a243",
"host": "archive.org"
}
}
}

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Sat, 04 Nov 2017 22:18:56 GMT",
"date": "Sat, 04 Aug 2018 09:23:45 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1049",
"x-ratelimit-reset": "1509833937",
"x-ratelimit-remaining": "989",
"x-ratelimit-reset": "1533374626",
"server": "Plack::Handler::Starlet",
"etag": "W/\"f3dbfd2359a7a02668094286e405c7d7\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"f148990039ef31c75d01afd55b631673\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/area/d907b0ac-2956-386f-a246-62d55779aae1?fmt=json",
"time": 355,
"time": 352,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/7.0.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,29 +0,0 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 19 Oct 2017 06:35:40 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1062",
"x-ratelimit-reset": "1508394941",
"server": "Plack::Handler::Starlet",
"etag": "W/\"59e4337aff496a685585c597d32fe368\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
},
"url": "http://musicbrainz.org:80/ws/2/label/c82b5688-df49-4e21-935b-0b08d13ec98a?inc=url-rels&fmt=json",
"time": 360,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/6.1.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"
}
}
}

View file

@ -0,0 +1 @@
See: http://archive.org/download/mbid-35847092-d9f1-430a-aed7-f4ee93fb21a6/index.json

View file

@ -1,21 +1,20 @@
{
"statusCode": 307,
"headers": {
"date": "Tue, 20 Dec 2016 01:39:57 GMT",
"date": "Sat, 04 Aug 2018 09:21:08 GMT",
"content-type": "text/plain; charset=utf-8",
"content-length": "86",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"location": "http://archive.org/download/mbid-7aa99236-67d1-4996-b5ec-f6a517653fbe/index.json",
"access-control-allow-origin": "*",
"server": "4b4c084fb141"
"location": "http://archive.org/download/mbid-35847092-d9f1-430a-aed7-f4ee93fb21a6/index.json",
"access-control-allow-origin": "*"
},
"url": "http://coverartarchive.org:80/release/7aa99236-67d1-4996-b5ec-f6a517653fbe",
"time": 391,
"url": "http://coverartarchive.org:80/release/35847092-d9f1-430a-aed7-f4ee93fb21a6",
"time": 385,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "coverartarchive.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:55:24 GMT",
"date": "Sat, 04 Aug 2018 09:25:02 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "396",
"x-ratelimit-reset": "1481763324",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "995",
"x-ratelimit-reset": "1533374702",
"server": "Plack::Handler::Starlet",
"etag": "W/\"ee222d647e3b588110c01211979bd498\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"285efd093a1d534288539360677cfd80\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/discid/5JmJmTPkKkYLm2QFsIh1mpjIBsQ-?fmt=json",
"time": 1117,
"time": 449,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:54:45 GMT",
"date": "Sat, 04 Aug 2018 09:24:23 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "484",
"x-ratelimit-reset": "1481763286",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1009",
"x-ratelimit-reset": "1533374664",
"server": "Plack::Handler::Starlet",
"etag": "W/\"876fc8e97249059dfce0b268344bd797\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"42a33c20cb78280509d6c2fd1d7c2999\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/label/9d36ba13-e56a-47b7-9148-23f846374736?inc=ratings&fmt=json",
"time": 479,
"time": 457,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:55:12 GMT",
"date": "Sat, 04 Aug 2018 09:24:50 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "310",
"x-ratelimit-reset": "1481763312",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1183",
"x-ratelimit-reset": "1533374692",
"server": "Plack::Handler::Starlet",
"etag": "W/\"309c86dda9722cdb75072b4a1c0522d0\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"f5ebcba850deda37f059a9ba0ee1023b\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/release-group/abd672ff-6c87-44b5-8606-5b763215cbe7?inc=ratings&fmt=json",
"time": 505,
"time": 359,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

View file

@ -1,26 +1,24 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 15 Dec 2016 00:53:51 GMT",
"content-type": "application/json; charset=UTF-8",
"date": "Sat, 04 Aug 2018 09:23:26 GMT",
"content-type": "application/json",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "298",
"x-ratelimit-reset": "1481763232",
"last-modified": "Thu, 15 Dec 2016 00:15:59 GMT",
"server": "Jetty(9.3.10.v20160621)",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1174",
"x-ratelimit-reset": "1533374608",
"last-modified": "Sat, 04 Aug 2018 09:22:21 GMT",
"etag": "\"OWMwMDAwMDAwMDAwMDBTb2xy\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/label?limit=1&query=Apple%20Records&fmt=json",
"time": 729,
"time": 350,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

View file

@ -0,0 +1 @@
{"id":"5888d65d-9d65-4d13-8454-3d68be9b3e55","name":"acoustic fretless guitar","type-id":"cc00f97f-cf3d-3ae2-9163-041cb1a0d726","disambiguation":"","type":"String instrument","relations":[],"description":"Acoustic guitar without frets."}

View file

@ -1,24 +1,24 @@
{
"statusCode": 200,
"headers": {
"date": "Sat, 04 Nov 2017 22:19:01 GMT",
"date": "Sat, 04 Aug 2018 10:00:28 GMT",
"content-type": "application/json; charset=utf-8",
"content-length": "227",
"content-length": "237",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "789",
"x-ratelimit-reset": "1509833941",
"x-ratelimit-remaining": "825",
"x-ratelimit-reset": "1533376828",
"server": "Plack::Handler::Starlet",
"etag": "\"f003dc5379faf397737ab63975fcacab\"",
"etag": "\"aacc40e18c388ba0521ace866dc3d050\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/area/36721201-bb7c-4dce-be68-0553b1131205?fmt=json",
"time": 356,
"url": "http://musicbrainz.org:80/ws/2/instrument/5888d65d-9d65-4d13-8454-3d68be9b3e55?inc=url-rels&fmt=json",
"time": 362,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/7.0.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

View file

@ -0,0 +1 @@
{"error":"media is not a valid option for the inc parameter for the discid resource unless you specify one of the following other inc parameters: releases"}

View file

@ -0,0 +1,27 @@
{
"statusCode": 400,
"headers": {
"date": "Sat, 04 Aug 2018 10:32:25 GMT",
"content-type": "application/json; charset=utf-8",
"content-length": "156",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "1008",
"x-ratelimit-reset": "1533378746",
"server": "Plack::Handler::Starlet",
"etag": "\"d8325e6c556c7c20f7b933ecc1070bec\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/discid/TMXdzZkTcc9Jq24PD0w5J9_AXms-?inc=media%2Bdiscids&fmt=json",
"time": 369,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"
}
}
}

View file

@ -0,0 +1,11 @@
{
"url": "http://musicbrainz.org:80/ws/2/discid/TMXdzZkTcc9Jq24PD0w5J9_AXms-?inc=media%2Bdiscids&fmt=json",
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"
},
"body": ""
}

Binary file not shown.

View file

@ -1,29 +0,0 @@
{
"statusCode": 200,
"headers": {
"date": "Tue, 20 Dec 2016 01:40:05 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "700",
"x-ratelimit-remaining": "423",
"x-ratelimit-reset": "1482198006",
"server": "Plack::Handler::Starlet",
"etag": "W/\"3467a86d0b1b88d5eccfdd5223cf828a\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
},
"url": "http://musicbrainz.org:80/ws/2/release/3ee3723e-ed1e-4baa-a718-7f1d9ecb3bec?fmt=json",
"time": 518,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/4.5.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"
}
}
}

File diff suppressed because one or more lines are too long

View file

@ -1,26 +1,25 @@
{
"statusCode": 200,
"headers": {
"date": "Thu, 19 Oct 2017 06:35:07 GMT",
"date": "Sat, 04 Aug 2018 09:24:07 GMT",
"content-type": "application/json; charset=utf-8",
"transfer-encoding": "chunked",
"connection": "keep-alive",
"keep-alive": "timeout=15",
"vary": "Accept-Encoding",
"x-ratelimit-limit": "1200",
"x-ratelimit-remaining": "871",
"x-ratelimit-reset": "1508394907",
"x-ratelimit-remaining": "1144",
"x-ratelimit-reset": "1533374648",
"server": "Plack::Handler::Starlet",
"etag": "W/\"87ba73bcb03c83b5125bb95855eb7cda\"",
"access-control-allow-origin": "*",
"content-encoding": "gzip"
"etag": "W/\"4d71de9e84ecc12c5c60a53fb2d762c5\"",
"access-control-allow-origin": "*"
},
"url": "http://musicbrainz.org:80/ws/2/label/1c6f3ffb-2749-4bec-9c1e-19ea5aa19140?inc=url-rels&fmt=json",
"time": 409,
"url": "http://musicbrainz.org:80/ws/2/artist?collection=48eaec0c-7088-4864-839b-12ea681f1b5d&fmt=json",
"time": 490,
"request": {
"method": "GET",
"headers": {
"User-Agent": "graphbrainz/6.1.0 ( https://github.com/exogen/graphbrainz )",
"User-Agent": "graphbrainz/7.3.0 ( https://github.com/exogen/graphbrainz )",
"host": "musicbrainz.org",
"accept-encoding": "gzip, deflate",
"accept": "application/json"

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more