From e36533be1d9341a674d9a4adf404cc28ac7b7b17 Mon Sep 17 00:00:00 2001 From: Serial <69764315+Serial-ATA@users.noreply.github.com> Date: Sun, 20 Sep 2026 16:44:40 -0400 Subject: [PATCH 1/3] feat: Display release & track advisory ratings --- harmonizer/compatibility.ts | 24 ++++++++++----- harmonizer/properties.ts | 2 ++ harmonizer/types.ts | 12 ++++++++ providers/Beatport/json_types.ts | 2 ++ providers/Beatport/mod.ts | 2 ++ providers/Deezer/mod.ts | 3 ++ providers/Mora/json_types.ts | 2 ++ providers/Mora/mod.ts | 7 +++++ providers/Ototoy/json_types.ts | 1 + providers/Ototoy/mod.ts | 37 ++++++++++++++++++++++++ providers/Qobuz/mod.ts | 2 ++ providers/Spotify/mod.ts | 1 + providers/Tidal/v1/lookup.ts | 17 +++++++++-- providers/Tidal/v2/lookup.ts | 2 ++ providers/iTunes/api_types.ts | 2 +- providers/iTunes/mod.ts | 11 ++++++- server/components/AdvisoryRatingIcon.tsx | 11 +++++++ server/components/Release.tsx | 6 +++- server/components/Tracklist.tsx | 2 ++ server/static/harmony.css | 33 +++++++++++++++++++++ 20 files changed, 166 insertions(+), 13 deletions(-) create mode 100644 server/components/AdvisoryRatingIcon.tsx diff --git a/harmonizer/compatibility.ts b/harmonizer/compatibility.ts index 07cb3344..012f6f04 100644 --- a/harmonizer/compatibility.ts +++ b/harmonizer/compatibility.ts @@ -57,14 +57,22 @@ interface CompatibilityCheck { errorMessage: string; } -const releaseCompatibilityChecks: CompatibilityCheck[] = [{ - property: (release) => release.gtin ? Number(release.gtin) : undefined, - errorMessage: 'Providers have returned multiple different GTIN', -}, { - property: trackCountSummary, - // TODO: Support releases with the same total track count. - errorMessage: 'Providers have returned incompatible track lists', -}]; +const releaseCompatibilityChecks: CompatibilityCheck[] = [ + { + property: (release) => release.gtin ? Number(release.gtin) : undefined, + errorMessage: 'Providers have returned multiple different GTIN', + }, + { + property: trackCountSummary, + // TODO: Support releases with the same total track count. + errorMessage: 'Providers have returned incompatible track lists', + }, + // Explicit and clean versions should be separate releases + { + property: (release) => release.advisoryRating, + errorMessage: 'Providers have returned conflicting advisory ratings', + }, +]; /** Determines whether the given releases are compatible and can be merged (with the primary provider's data). */ function determineReleaseIncompatibility( diff --git a/harmonizer/properties.ts b/harmonizer/properties.ts index 7e2a3cdf..4cf8cc51 100644 --- a/harmonizer/properties.ts +++ b/harmonizer/properties.ts @@ -27,12 +27,14 @@ export const immutableReleaseProperties = [ 'images', // TODO: make images combinable? combine if not only front covers? 'copyright', 'credits', + 'advisoryRating', ] as const satisfies Array; /** Track properties which have to be taken from one provider and can not be combined from data of multiple providers. */ export const immutableTrackProperties = [ 'isrc', 'length', + 'advisoryRating', ] as const satisfies Array; /** Track properties which can be combined from data of multiple providers. */ diff --git a/harmonizer/types.ts b/harmonizer/types.ts index c318618a..9bb0b71b 100644 --- a/harmonizer/types.ts +++ b/harmonizer/types.ts @@ -67,6 +67,7 @@ export type HarmonyRelease = { availableIn?: CountryCode[]; excludedFrom?: CountryCode[]; releaseGroup?: ResolvableEntity; + advisoryRating?: AdvisoryRating; info: ReleaseInfo; }; @@ -92,6 +93,7 @@ export type HarmonyTrack = { type?: TrackType; isrc?: string; availableIn?: CountryCode[]; + advisoryRating?: AdvisoryRating; recording?: ResolvableEntity; }; @@ -155,6 +157,16 @@ export type TrackType = 'audio' | 'video'; /** Global Trade Item Number with 8 (EAN-8), 12 (UPC), 13 (EAN-13) or 14 digits. */ export type GTIN = number | string; +/** + * The advisory rating of a release or track: + * - `clean`: An edited version of an originally explicit release/track. This is **not** the + * same as a release that was non-explicit to begin with. In that case, no `AdvisoryRating` + * is specified. + * - `explicit`: The release/track has some sort of parental advisory warning. Possibly due + * to the contents of its lyrics and/or cover art. + */ +export type AdvisoryRating = 'clean' | 'explicit'; + export type Language = { /** ISO 639-3 three letter code. */ code: string; diff --git a/providers/Beatport/json_types.ts b/providers/Beatport/json_types.ts index c336da15..07b67978 100644 --- a/providers/Beatport/json_types.ts +++ b/providers/Beatport/json_types.ts @@ -101,6 +101,7 @@ export interface Release extends MinimalRelease { exclusive: boolean; grid: null; is_available_for_streaming: boolean; + is_explicit: boolean; is_hype: boolean; new_release_date: string; override_price: boolean; @@ -145,6 +146,7 @@ export interface Track extends EntityWithUrl { free_download_end_date: null; genre: Genre; is_available_for_streaming: boolean; + is_explicit: boolean; is_hype: boolean; isrc: string | null; key: Key; diff --git a/providers/Beatport/mod.ts b/providers/Beatport/mod.ts index d725109f..1df611c9 100644 --- a/providers/Beatport/mod.ts +++ b/providers/Beatport/mod.ts @@ -182,6 +182,7 @@ export class BeatportReleaseLookup extends ReleaseLookup }], images: [this.getArtwork(albumPage)], copyright: albumPage.master, + advisoryRating: this.convertRawAdvisoryRating(albumPage.explicitFlg), info: this.generateReleaseInfo(), }; return release; } + convertRawAdvisoryRating(explicitFlg: string): AdvisoryRating | undefined { + return explicitFlg === '1' ? 'explicit' : undefined; + } + convertRawTrack(rawTrack: Track): HarmonyTrack { return { number: rawTrack.trackNo, @@ -216,6 +222,7 @@ export class MoraReleaseLookup extends ReleaseLookup type: rawTrack.mediaFormatNo == MediaFormat.Video ? 'video' : 'audio', artists: [this.makeArtistCreditName(rawTrack.artistName, rawTrack.artistNo)], length: rawTrack.duration * 1000, + advisoryRating: this.convertRawAdvisoryRating(rawTrack.explicitFlg), }; } diff --git a/providers/Ototoy/json_types.ts b/providers/Ototoy/json_types.ts index ca0802c6..d4a185e3 100644 --- a/providers/Ototoy/json_types.ts +++ b/providers/Ototoy/json_types.ts @@ -10,6 +10,7 @@ export interface AlbumMeta { originalReleaseDate?: string; releaseDate?: string; label?: Label; + tagCloud?: string[]; } export interface Artist { diff --git a/providers/Ototoy/mod.ts b/providers/Ototoy/mod.ts index c4c2e821..a3782cf8 100644 --- a/providers/Ototoy/mod.ts +++ b/providers/Ototoy/mod.ts @@ -1,5 +1,6 @@ import type { AlbumMeta, Artist, Label as RawLabel, PackagePage, Track } from './json_types.ts'; import type { + AdvisoryRating, ArtistCreditName, Artwork, EntityId, @@ -248,6 +249,13 @@ export default class OtotoyProvider extends MetadataProvider { //

Label: Baz label

//

+ //

  • + // + // foo + // + //
  • + // // // // NOTES: @@ -303,11 +311,26 @@ export default class OtotoyProvider extends MetadataProvider { } }); + const tagCloud: string[] = []; + const tagCloudList = albumMetadata.querySelector('ul.tag-cloud'); + if (tagCloudList) { + const tags = tagCloudList.querySelectorAll('li > a.oty-btn-tag'); + tags.forEach((el) => { + const ariaLabel = el.getAttribute('aria-label'); + if (ariaLabel && ariaLabel == 'Add tags') { + return; // Skip the add button + } + + tagCloud.push(el.textContent.trim()); + }); + } + const albumMeta: AlbumMeta = { title, artists, releaseDate, originalReleaseDate, + tagCloud: tagCloud.length > 0 ? tagCloud : undefined, }; const labelAnchor = details.querySelector('p.label-name > a'); @@ -392,6 +415,9 @@ export class OtotoyReleaseLookup extends ReleaseLookup { readonly apiBaseUrl = 'https://openapi.tidal.com/'; @@ -115,10 +122,15 @@ export class TidalV1ReleaseLookup extends ReleaseApiLookup packaging: 'None', images: artwork ? [artwork] : [], labels: this.getLabels(rawRelease), + advisoryRating: this.convertAdvisoryRating(rawRelease.properties), info: this.generateReleaseInfo(), }; } + private convertAdvisoryRating(properties: Properties): AdvisoryRating | undefined { + return properties.content === 'explicit' ? 'explicit' : undefined; + } + private convertRawTracklist(tracklist: AlbumItem[]): HarmonyMedium[] { const result: HarmonyMedium[] = []; let medium: HarmonyMedium = { @@ -159,6 +171,7 @@ export class TidalV1ReleaseLookup extends ReleaseApiLookup isrc: track.isrc, artists: track.artists.map(this.convertRawArtist.bind(this)), type: track.artifactType === 'video' ? 'video' : 'audio', + advisoryRating: this.convertAdvisoryRating(track.properties), }; return result; diff --git a/providers/Tidal/v2/lookup.ts b/providers/Tidal/v2/lookup.ts index f2a84132..10d39065 100644 --- a/providers/Tidal/v2/lookup.ts +++ b/providers/Tidal/v2/lookup.ts @@ -159,6 +159,7 @@ export class TidalV2ReleaseLookup extends ReleaseApiLookup + {marker} + + ); +} diff --git a/server/components/Release.tsx b/server/components/Release.tsx index a2c5b2ee..8580c99e 100644 --- a/server/components/Release.tsx +++ b/server/components/Release.tsx @@ -8,6 +8,7 @@ import { TextWithLineBreaks } from './TextWithLineBreaks.tsx'; import { Tracklist } from './Tracklist.tsx'; import { CopyButton, CopyLinksButton } from '@/server/islands/CopyButton.tsx'; import RegionList from '@/server/islands/RegionList.tsx'; +import { AdvisoryRatingIcon } from './AdvisoryRatingIcon.tsx'; import { getMaxCacheTimestamp } from '@/harmonizer/timestamp.ts'; import { determineReleaseEventCountries } from '@/musicbrainz/release_countries.ts'; @@ -30,7 +31,10 @@ export function Release({ release, releaseMap }: { release: MergedHarmonyRelease return (
    {info.messages.map((message, index) => )} -

    {release.title}

    +

    + {release.title} + {release.advisoryRating && } +

    release.title} />
    by diff --git a/server/components/Tracklist.tsx b/server/components/Tracklist.tsx index ea545c51..bd9ce205 100644 --- a/server/components/Tracklist.tsx +++ b/server/components/Tracklist.tsx @@ -4,6 +4,7 @@ import { ISRC } from './ISRC.tsx'; import { LinkedEntity } from './LinkedEntity.tsx'; import { SpriteIcon } from './SpriteIcon.tsx'; import { CopyTracklistButton } from '@/server/islands/CopyButton.tsx'; +import { AdvisoryRatingIcon } from './AdvisoryRatingIcon.tsx'; import { pluralWithCount } from '@/utils/plural.ts'; import { mapValues } from '@/utils/record.ts'; @@ -69,6 +70,7 @@ export function Tracklist({ medium, mediumMap, showTitle = false }: TracklistPro ? : track.title} track?.title} /> + {track.advisoryRating && } {track.artists && ( diff --git a/server/static/harmony.css b/server/static/harmony.css index a83cf362..79b93401 100644 --- a/server/static/harmony.css +++ b/server/static/harmony.css @@ -272,6 +272,32 @@ caption > ul.alt-values { margin: 0 auto; } +/* AdvisoryRatingIcon.tsx */ + +span.advisory-rating { + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + width: 1.25em; + height: 1.25em; + border-radius: 3px; + color: var(--badge-text); + background-color: var(--badge-fill); + font-weight: 700; + font-size: 0.8em; + line-height: 1; + user-select: none; + vertical-align: middle; + align-self: center; + margin-left: 0.35em; +} + +span.advisory-rating > abbr[title] { + text-decoration: none; + border-bottom: none; +} + /* CopyButton.tsx */ button.copy { @@ -551,6 +577,13 @@ div.region-list > span.label + button { h2.release-title { margin-bottom: 0; + display: inline-flex; + align-items: center; + gap: 0.5em; +} + +h2.release-title > span.advisory-rating { + margin-left: 0; } /* Tooltip.tsx */ From 4aba838eca73027db4e2176b9b70ac797c9529ce Mon Sep 17 00:00:00 2001 From: Serial <69764315+Serial-ATA@users.noreply.github.com> Date: Sun, 20 Sep 2026 19:19:31 -0400 Subject: [PATCH 2/3] chore: ignore `.idea` in `deno fmt` --- deno.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deno.json b/deno.json index 9692e6cf..7d036269 100644 --- a/deno.json +++ b/deno.json @@ -4,7 +4,7 @@ "jsxImportSource": "preact" }, "fmt": { - "exclude": ["**/*.svg", "./testdata/**"], + "exclude": ["**/*.svg", "./testdata/**", ".idea"], "lineWidth": 120, "proseWrap": "preserve", "singleQuote": true, From 4042149ff4e0b8adc350ee7fecf9110a7aaee065 Mon Sep 17 00:00:00 2001 From: Serial <69764315+Serial-ATA@users.noreply.github.com> Date: Sun, 20 Sep 2026 20:27:32 -0400 Subject: [PATCH 3/3] chore: add tests & update snapshots --- .../Beatport/__snapshots__/mod.test.ts.snap | 575 +++++++ providers/Beatport/mod.test.ts | 28 +- .../Deezer/__snapshots__/mod.test.ts.snap | 512 ++++++ providers/Deezer/mod.test.ts | 28 +- providers/Deezer/mod.ts | 5 +- providers/Mora/__snapshots__/mod.test.ts.snap | 591 +++++++ providers/Mora/mod.test.ts | 16 + .../Ototoy/__snapshots__/mod.test.ts.snap | 489 +++++- providers/Ototoy/mod.test.ts | 16 + .../Qobuz/__snapshots__/mod.test.ts.snap | 558 +++++++ providers/Qobuz/mod.test.ts | 28 + providers/Spotify/mod.test.ts | 26 + .../Tidal/__snapshots__/mod.test.ts.snap | 569 +++++++ providers/Tidal/mod.test.ts | 26 + .../iTunes/__snapshots__/mod.test.ts.snap | 624 ++++++++ providers/iTunes/mod.test.ts | 24 + ...ty=song&limit=200&id=1577414584&country=us | 12 + ...ty=song&limit=200&id=6769823972&country=us | 32 + .../https!/com.beatport.www/release/-/7059114 | 1 + .../https!/com.deezer.api/album/245878832 | 1 + .../https!/com.deezer.api/album/982951161 | 1 + .../0.2/album/get!album_id=hgukd7uvy8lqc | 1 + .../0.2/album/get!album_id=ohej7aqvk85gt | 1 + ...include=artists,items.artists,prov#1a82246 | 1 + ...include=artists,items.artists,prov#d5a14fd | 1 + .../00000083/0048/578/965/packageMeta.json | 1413 +++++++++++++++++ .../jp.mora/package/43000006/00881061522348 | 1 + testdata/https!/jp.ototoy/_/default/p/1289692 | 1 + testdata/https!/jp.ototoy/_/default/p/1822344 | 2 +- testdata/https!/jp.ototoy/_/default/p/3016055 | 2 +- testdata/https!/jp.ototoy/_/default/p/3228080 | 2 +- testdata/https!/jp.ototoy/_/default/p/3237840 | 2 +- testdata/https!/jp.ototoy/_/default/p/3286704 | 2 +- testdata/https!/jp.ototoy/_/default/p/3915185 | 1 + testdata/https!/jp.ototoy/_/default/p/709920 | 2 +- 35 files changed, 5541 insertions(+), 53 deletions(-) create mode 100644 providers/Beatport/__snapshots__/mod.test.ts.snap create mode 100644 testdata/https!/com.apple.itunes/lookup!entity=song&limit=200&id=1577414584&country=us create mode 100644 testdata/https!/com.apple.itunes/lookup!entity=song&limit=200&id=6769823972&country=us create mode 100644 testdata/https!/com.beatport.www/release/-/7059114 create mode 100644 testdata/https!/com.deezer.api/album/245878832 create mode 100644 testdata/https!/com.deezer.api/album/982951161 create mode 100644 testdata/https!/com.qobuz.www/api.json/0.2/album/get!album_id=hgukd7uvy8lqc create mode 100644 testdata/https!/com.qobuz.www/api.json/0.2/album/get!album_id=ohej7aqvk85gt create mode 100644 testdata/https!/com.tidal.openapi/v2/albums!countryCode=US&include=artists,items.artists,prov#1a82246 create mode 100644 testdata/https!/com.tidal.openapi/v2/albums!countryCode=US&include=artists,items.artists,prov#d5a14fd create mode 100644 testdata/https!/jp.mora.cf/contents/package/0000/00000083/0048/578/965/packageMeta.json create mode 100644 testdata/https!/jp.mora/package/43000006/00881061522348 create mode 100644 testdata/https!/jp.ototoy/_/default/p/1289692 create mode 100644 testdata/https!/jp.ototoy/_/default/p/3915185 diff --git a/providers/Beatport/__snapshots__/mod.test.ts.snap b/providers/Beatport/__snapshots__/mod.test.ts.snap new file mode 100644 index 00000000..4dbb007c --- /dev/null +++ b/providers/Beatport/__snapshots__/mod.test.ts.snap @@ -0,0 +1,575 @@ +export const snapshot = {}; + +snapshot[`Beatport provider > release lookup > partially explicit release 1`] = ` +{ + advisoryRating: "explicit", + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + { + creditedName: "Circe Electro", + externalIds: [ + { + id: "678893", + provider: "beatport", + slug: "circe-electro", + type: "artist", + }, + ], + name: "Circe Electro", + }, + { + creditedName: "Jax Panik", + externalIds: [ + { + id: "2397497", + provider: "beatport", + slug: "jax-panik", + type: "artist", + }, + ], + name: "Jax Panik", + }, + ], + externalLinks: [ + { + types: [ + "paid download", + "paid streaming", + ], + url: "https://www.beatport.com/release/little-grunts/7059114", + }, + ], + gtin: "824296930656", + images: [ + { + thumbUrl: "https://geo-media.beatport.com/image_size/250x250/bb7f6646-3825-407e-9c7f-9319559230c7.jpg", + types: [ + "front", + ], + url: "https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg", + }, + ], + info: { + messages: [], + providers: [ + { + apiUrl: undefined, + id: "7059114", + internalName: "beatport", + lookup: { + method: "id", + value: "7059114", + }, + name: "Beatport", + url: "https://www.beatport.com/release/little-grunts/7059114", + }, + ], + }, + labels: [ + { + catalogNumber: "CNSLR018", + externalIds: [ + { + id: "71710", + provider: "beatport", + slug: "cnslr-recordings", + type: "label", + }, + ], + name: "CNSLR Recordings", + }, + ], + media: [ + { + format: "Digital Media", + tracklist: [ + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + ], + isrc: "GBWUL2672382", + length: 252923, + number: 1, + recording: { + externalIds: [ + { + id: "29313839", + provider: "beatport", + slug: "james-bond", + type: "track", + }, + ], + }, + title: "James Bond", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + { + creditedName: "Circe Electro", + externalIds: [ + { + id: "678893", + provider: "beatport", + slug: "circe-electro", + type: "artist", + }, + ], + name: "Circe Electro", + }, + ], + isrc: "GBWUL2672387", + length: 285625, + number: 2, + recording: { + externalIds: [ + { + id: "29313840", + provider: "beatport", + slug: "who-the-fuck-is-haezer", + type: "track", + }, + ], + }, + title: "Who The Fuck is Haezer (remix)", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + ], + isrc: "GBWUL2672420", + length: 251076, + number: 3, + recording: { + externalIds: [ + { + id: "29313841", + provider: "beatport", + slug: "joey-bloom", + type: "track", + }, + ], + }, + title: "Joey Bloom", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + ], + isrc: "GBWUL2672423", + length: 237230, + number: 4, + recording: { + externalIds: [ + { + id: "29313842", + provider: "beatport", + slug: "anarchy", + type: "track", + }, + ], + }, + title: "Anarchy!", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + { + creditedName: "Circe Electro", + externalIds: [ + { + id: "678893", + provider: "beatport", + slug: "circe-electro", + type: "artist", + }, + ], + name: "Circe Electro", + }, + ], + isrc: "GBWUL2672427", + length: 195692, + number: 5, + recording: { + externalIds: [ + { + id: "29313843", + provider: "beatport", + slug: "gangsta-shit", + type: "track", + }, + ], + }, + title: "Gangsta Shit", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + ], + isrc: "GBWUL2672432", + length: 236076, + number: 6, + recording: { + externalIds: [ + { + id: "29313844", + provider: "beatport", + slug: "tell-me-im-bad", + type: "track", + }, + ], + }, + title: "Tell Me I'm Bad", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + { + creditedName: "Circe Electro", + externalIds: [ + { + id: "678893", + provider: "beatport", + slug: "circe-electro", + type: "artist", + }, + ], + name: "Circe Electro", + }, + ], + isrc: "GBWUL2672435", + length: 194307, + number: 7, + recording: { + externalIds: [ + { + id: "29313845", + provider: "beatport", + slug: "who-the-fuck-is-haezer", + type: "track", + }, + ], + }, + title: "Who The Fuck is Haezer", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + ], + isrc: "GBWUL2672452", + length: 319384, + number: 8, + recording: { + externalIds: [ + { + id: "29313846", + provider: "beatport", + slug: "full-tilt", + type: "track", + }, + ], + }, + title: "Full Tilt", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + { + creditedName: "Circe Electro", + externalIds: [ + { + id: "678893", + provider: "beatport", + slug: "circe-electro", + type: "artist", + }, + ], + name: "Circe Electro", + }, + ], + isrc: "GBWUL2672455", + length: 213230, + number: 9, + recording: { + externalIds: [ + { + id: "29313847", + provider: "beatport", + slug: "yasi", + type: "track", + }, + ], + }, + title: "Yasi", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + ], + isrc: "GBWUL2672459", + length: 230769, + number: 10, + recording: { + externalIds: [ + { + id: "29313848", + provider: "beatport", + slug: "fists-in-the-air", + type: "track", + }, + ], + }, + title: "Fists in the Air", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + ], + isrc: "GBWUL2672463", + length: 309532, + number: 11, + recording: { + externalIds: [ + { + id: "29313849", + provider: "beatport", + slug: "amber", + type: "track", + }, + ], + }, + title: "Amber", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + ], + isrc: "GBWUL2672467", + length: 228346, + number: 12, + recording: { + externalIds: [ + { + id: "29313850", + provider: "beatport", + slug: "i-wont", + type: "track", + }, + ], + }, + title: "I Won't", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Haezer", + externalIds: [ + { + id: "141373", + provider: "beatport", + slug: "haezer", + type: "artist", + }, + ], + name: "Haezer", + }, + { + creditedName: "Jax Panik", + externalIds: [ + { + id: "2397497", + provider: "beatport", + slug: "jax-panik", + type: "artist", + }, + ], + name: "Jax Panik", + }, + ], + isrc: "GBWUL2672470", + length: 184615, + number: 13, + recording: { + externalIds: [ + { + id: "29313851", + provider: "beatport", + slug: "sirens-in-the-night", + type: "track", + }, + ], + }, + title: "Sirens In The Night", + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 29, + month: 6, + year: 2026, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "Little Grunts", +} +`; diff --git a/providers/Beatport/mod.test.ts b/providers/Beatport/mod.test.ts index 021abdd1..e624935a 100644 --- a/providers/Beatport/mod.test.ts +++ b/providers/Beatport/mod.test.ts @@ -1,10 +1,14 @@ import { describeProvider, makeProviderOptions } from '@/providers/test_spec.ts'; -import { describe } from '@std/testing/bdd'; +import { afterAll, describe } from '@std/testing/bdd'; +import { assertSnapshot } from '@std/testing/snapshot'; +import { assertEquals } from 'std/assert/mod.ts'; +import { stubProviderLookups } from '@/providers/test_stubs.ts'; import BeatportProvider from './mod.ts'; describe('Beatport provider', () => { const beatport = new BeatportProvider(makeProviderOptions()); + const lookupStub = stubProviderLookups(beatport); describeProvider(beatport, { urls: [{ @@ -29,6 +33,26 @@ describe('Beatport provider', () => { isCanonical: true, }], invalidIds: ['text'], - releaseLookup: [], + releaseLookup: [{ + description: 'partially explicit release', + release: new URL('https://www.beatport.com/release/little-grunts/7059114'), + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'explicit', 'Release should be marked explicit'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + allTracks.forEach((track, index) => { + if ([0, 1, 4, 6, 8, 12].includes(index)) { + assertEquals(track.advisoryRating, 'explicit', 'The third track should be marked explicit'); + } else { + assertEquals(track.advisoryRating, undefined, `Track ${index + 1} should have no advisory rating`); + } + }); + }, + }], + }); + + afterAll(() => { + lookupStub.restore(); }); }); diff --git a/providers/Deezer/__snapshots__/mod.test.ts.snap b/providers/Deezer/__snapshots__/mod.test.ts.snap index 7218a5cb..68d0165a 100644 --- a/providers/Deezer/__snapshots__/mod.test.ts.snap +++ b/providers/Deezer/__snapshots__/mod.test.ts.snap @@ -2,6 +2,7 @@ export const snapshot = {}; snapshot[`Deezer provider > release lookup > single by two artists 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "Lady Gaga", @@ -261,6 +262,7 @@ snapshot[`Deezer provider > release lookup > single by two artists 1`] = ` number: 1, tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "Lady Gaga", @@ -527,3 +529,513 @@ snapshot[`Deezer provider > release lookup > single by two artists 1`] = ` ], } `; + +snapshot[`Deezer provider > release lookup > explicit release 1`] = ` +{ + advisoryRating: "explicit", + artists: [ + { + creditedName: "Lil Nas X", + externalIds: [ + { + id: "15166511", + provider: "deezer", + type: "artist", + }, + ], + name: "Lil Nas X", + }, + { + creditedName: "Jack Harlow", + externalIds: [ + { + id: "9093938", + provider: "deezer", + type: "artist", + }, + ], + name: "Jack Harlow", + }, + ], + availableIn: undefined, + externalLinks: [ + { + types: [ + "free streaming", + ], + url: "https://www.deezer.com/album/245878832", + }, + ], + gtin: "886449403912", + images: [ + { + thumbUrl: "https://cdn-images.dzcdn.net/images/cover/a65e86966cfd34b2aa292856136ef9ac/250x250-000000-80-0-0.jpg", + types: [ + "front", + ], + url: "https://cdn-images.dzcdn.net/images/cover/a65e86966cfd34b2aa292856136ef9ac/1000x1000-000000-80-0-0.jpg", + }, + ], + info: { + messages: [], + providers: [ + { + apiUrl: "https://api.deezer.com/album/245878832", + id: "245878832", + internalName: "deezer", + lookup: { + method: "id", + value: "245878832", + }, + name: "Deezer", + url: "https://www.deezer.com/album/245878832", + }, + ], + }, + labels: [ + { + name: "Columbia", + }, + ], + media: [ + { + format: "Digital Media", + tracklist: [ + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Lil Nas X", + externalIds: [ + { + id: "15166511", + provider: "deezer", + type: "artist", + }, + ], + name: "Lil Nas X", + }, + ], + length: 214000, + number: 1, + recording: { + externalIds: [ + { + id: "1439691952", + provider: "deezer", + type: "track", + }, + ], + }, + title: "INDUSTRY BABY", + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 23, + month: 7, + year: 2021, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "INDUSTRY BABY", + types: [ + "Single", + ], +} +`; + +snapshot[`Deezer provider > release lookup > partially explicit release 1`] = ` +{ + advisoryRating: "explicit", + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + availableIn: undefined, + externalLinks: [ + { + types: [ + "free streaming", + ], + url: "https://www.deezer.com/album/982951161", + }, + ], + gtin: "045778817160", + images: [ + { + thumbUrl: "https://cdn-images.dzcdn.net/images/cover/845e0ea1fd1619049f23bbdb7692b253/250x250-000000-80-0-0.jpg", + types: [ + "front", + ], + url: "https://cdn-images.dzcdn.net/images/cover/845e0ea1fd1619049f23bbdb7692b253/1000x1000-000000-80-0-0.jpg", + }, + ], + info: { + messages: [], + providers: [ + { + apiUrl: "https://api.deezer.com/album/982951161", + id: "982951161", + internalName: "deezer", + lookup: { + method: "id", + value: "982951161", + }, + name: "Deezer", + url: "https://www.deezer.com/album/982951161", + }, + ], + }, + labels: [ + { + name: "Anti", + }, + { + name: "Epitaph", + }, + ], + media: [ + { + format: "Digital Media", + tracklist: [ + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 186000, + number: 1, + recording: { + externalIds: [ + { + id: "4022194781", + provider: "deezer", + type: "track", + }, + ], + }, + title: "Yellow and Green", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 208000, + number: 2, + recording: { + externalIds: [ + { + id: "4022194791", + provider: "deezer", + type: "track", + }, + ], + }, + title: "These Days", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 183000, + number: 3, + recording: { + externalIds: [ + { + id: "4022194801", + provider: "deezer", + type: "track", + }, + ], + }, + title: "Better Man", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 125000, + number: 4, + recording: { + externalIds: [ + { + id: "4022194811", + provider: "deezer", + type: "track", + }, + ], + }, + title: "Melodie", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 208000, + number: 5, + recording: { + externalIds: [ + { + id: "4022194821", + provider: "deezer", + type: "track", + }, + ], + }, + title: "Red Car", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 189000, + number: 6, + recording: { + externalIds: [ + { + id: "4022194831", + provider: "deezer", + type: "track", + }, + ], + }, + title: "Not for Nothing", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 174000, + number: 7, + recording: { + externalIds: [ + { + id: "4022194841", + provider: "deezer", + type: "track", + }, + ], + }, + title: "Entertainer", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 151000, + number: 8, + recording: { + externalIds: [ + { + id: "4022194851", + provider: "deezer", + type: "track", + }, + ], + }, + title: "Like Me", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 195000, + number: 9, + recording: { + externalIds: [ + { + id: "4022194861", + provider: "deezer", + type: "track", + }, + ], + }, + title: "Spill", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 163000, + number: 10, + recording: { + externalIds: [ + { + id: "4022194871", + provider: "deezer", + type: "track", + }, + ], + }, + title: "Up to You", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "12611413", + provider: "deezer", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 166000, + number: 11, + recording: { + externalIds: [ + { + id: "4022194881", + provider: "deezer", + type: "track", + }, + ], + }, + title: "Slip Away", + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 18, + month: 9, + year: 2026, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "Melodie", + types: [ + "Album", + ], +} +`; diff --git a/providers/Deezer/mod.test.ts b/providers/Deezer/mod.test.ts index 024ee32b..a260099c 100644 --- a/providers/Deezer/mod.test.ts +++ b/providers/Deezer/mod.test.ts @@ -1,7 +1,7 @@ import type { ReleaseOptions } from '@/harmonizer/types.ts'; import { describeProvider, makeProviderOptions } from '@/providers/test_spec.ts'; import { stubProviderLookups } from '@/providers/test_stubs.ts'; -import { assert } from 'std/assert/assert.ts'; +import { assert, assertEquals } from 'std/assert/mod.ts'; import { afterAll, describe } from '@std/testing/bdd'; import { assertSnapshot } from '@std/testing/snapshot'; @@ -66,6 +66,32 @@ describe('Deezer provider', () => { assert(allTracks.every((track) => track.artists?.length === 1), 'Tracks should not have multiple artists'); assert(allTracks.every((track) => !track.isrc), 'Tracks should not have an ISRC'); }, + }, { + description: 'explicit release', + release: '245878832', + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'explicit', 'The release should be marked explicit'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + assertEquals(allTracks[0].advisoryRating, 'explicit', 'The track should be marked explicit'); + }, + }, { + description: 'partially explicit release', + release: '982951161', + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'explicit', 'The release should be marked explicit'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + allTracks.forEach((track, index) => { + if (index === 2) { + assertEquals(track.advisoryRating, 'explicit', 'The third track should be marked explicit'); + } else { + assertEquals(track.advisoryRating, undefined, `Track ${index + 1} should have no advisory rating`); + } + }); + }, }], }); diff --git a/providers/Deezer/mod.ts b/providers/Deezer/mod.ts index 080e9510..d49dddea 100644 --- a/providers/Deezer/mod.ts +++ b/providers/Deezer/mod.ts @@ -202,8 +202,6 @@ export class DeezerReleaseLookup extends ReleaseApiLookup release lookup > release with GTIN in distPartNo 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "Ado", @@ -62,6 +63,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in distPartNo 1`] = format: "Digital Media", tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "Ado", @@ -99,6 +101,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in distPartNo 1`] = snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "Various Artists", @@ -159,6 +162,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` format: "Digital Media", tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "Poppin'Party", @@ -178,6 +182,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Poppin'Party", @@ -197,6 +202,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Poppin'Party", @@ -216,6 +222,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Afterglow", @@ -235,6 +242,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Afterglow", @@ -254,6 +262,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Afterglow", @@ -273,6 +282,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Pastel*Palettes", @@ -292,6 +302,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Pastel*Palettes", @@ -311,6 +322,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Pastel*Palettes", @@ -330,6 +342,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Roselia", @@ -349,6 +362,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Roselia", @@ -368,6 +382,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Roselia", @@ -387,6 +402,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Poppin'Party, 高松 燈(CV:羊宮妃那)", @@ -406,6 +422,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Pastel*Palettes, 美竹 蘭(CV:佐倉綾音)", @@ -425,6 +442,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "ハロー、ハッピーワールド!", @@ -444,6 +462,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "ハロー、ハッピーワールド!", @@ -463,6 +482,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "ハロー、ハッピーワールド!", @@ -482,6 +502,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Morfonica", @@ -501,6 +522,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Morfonica", @@ -520,6 +542,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Morfonica", @@ -539,6 +562,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "RAISE A SUILEN", @@ -558,6 +582,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "RAISE A SUILEN", @@ -577,6 +602,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "MyGO!!!!!", @@ -596,6 +622,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "MyGO!!!!!", @@ -615,6 +642,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "MyGO!!!!!", @@ -634,6 +662,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Roselia, レイヤ(CV:Raychell)", @@ -653,6 +682,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "ハロー、ハッピーワールド!, 倉田ましろ(CV:進藤あまね)", @@ -690,6 +720,7 @@ snapshot[`Mora provider > release lookup > release with GTIN in cdPartNo 1`] = ` snapshot[`Mora provider > release lookup > video release 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "The Last Dinner Party", @@ -750,6 +781,7 @@ snapshot[`Mora provider > release lookup > video release 1`] = ` format: "Digital Media", tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "The Last Dinner Party", @@ -784,3 +816,562 @@ snapshot[`Mora provider > release lookup > video release 1`] = ` title: "Woman is a Tree", } `; + +snapshot[`Mora provider > release lookup > explicit release 1`] = ` +{ + advisoryRating: "explicit", + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + availableIn: [ + "JP", + ], + copyright: "℗ 2026 School Boy/Interscope Records", + externalLinks: [ + { + types: [ + "paid download", + ], + url: "https://mora.jp/package/43000006/00881061522348/", + }, + ], + gtin: "00881061522348", + images: [ + { + types: [ + "front", + ], + url: "https://cf.mora.jp/contents/package/0000/00000083/0048/578/965/0048578965.200.jpg", + }, + ], + info: { + messages: [], + providers: [ + { + apiUrl: "https://cf.mora.jp/contents/package/0000/00000083/0048/578/965/packageMeta.json", + id: "43000006/00881061522348", + internalName: "mora", + lookup: { + method: "id", + value: "43000006/00881061522348", + }, + name: "mora", + url: "https://mora.jp/package/43000006/00881061522348/", + }, + ], + }, + labels: [ + { + name: "School Boy/Interscope Records", + }, + ], + media: [ + { + format: "Digital Media", + tracklist: [ + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 252000, + number: 1, + title: "After All", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 177000, + number: 2, + title: "Habits of Creatures", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 194000, + number: 3, + title: "Versailles", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 202000, + number: 4, + title: "On Wires", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 149000, + number: 5, + title: "Blue Skies", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 210000, + number: 6, + title: "Burning Heart", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 229000, + number: 7, + title: "Wild Child", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 249000, + number: 8, + title: "Good Fine Alright", + type: "audio", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 177000, + number: 9, + title: "Something Tragic", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 183000, + number: 10, + title: "Soft", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 210000, + number: 11, + title: "Lonely Side of the Bed", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 228000, + number: 12, + title: "Just a Little Walk on the Moon", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 319000, + number: 13, + title: "Never Let a Good Thing Die", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 179000, + number: 14, + title: "Amalfi Coast", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 209000, + number: 15, + title: "Patience Power Passion", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 192000, + number: 16, + title: "Don't Leave Me on the Dance Floor", + type: "audio", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 233000, + number: 17, + title: "Motivation", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 194000, + number: 18, + title: "You Don't Know How It Feels", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 197000, + number: 19, + title: "Near or Far", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 186000, + number: 20, + title: "Diver", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 236000, + number: 21, + title: "Hold Me to the Light", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 222000, + number: 22, + title: "That's Just Me", + type: "audio", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 220000, + number: 23, + title: "No Labels, I Love You", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Carly Rae Jepsen", + externalIds: [ + { + id: "295546", + provider: "mora", + type: "artist", + }, + ], + name: "Carly Rae Jepsen", + }, + ], + length: 241000, + number: 24, + title: "Super Sage", + type: "audio", + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 18, + month: 9, + year: 2026, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "Day and Night", +} +`; diff --git a/providers/Mora/mod.test.ts b/providers/Mora/mod.test.ts index 23676822..dd4029b2 100644 --- a/providers/Mora/mod.test.ts +++ b/providers/Mora/mod.test.ts @@ -51,6 +51,22 @@ describe('Mora provider', () => { assertEquals(trackCount, 1, 'Release should have 1 track'); assertEquals(release.media[0].tracklist[0].type, 'video'); }, + }, { + description: 'explicit release', + release: '43000006/00881061522348', + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'explicit', 'Release should be marked explicit'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + allTracks.forEach((track, index) => { + if ([8, 16, 22].includes(index)) { + assertEquals(track.advisoryRating, 'explicit', `Track ${index + 1} should be marked explicit`); + } else { + assertEquals(track.advisoryRating, undefined, `Track ${index + 1} should have no advisory rating`); + } + }); + }, }], }); diff --git a/providers/Ototoy/__snapshots__/mod.test.ts.snap b/providers/Ototoy/__snapshots__/mod.test.ts.snap index 4e78dcd8..8fe27202 100644 --- a/providers/Ototoy/__snapshots__/mod.test.ts.snap +++ b/providers/Ototoy/__snapshots__/mod.test.ts.snap @@ -2,6 +2,7 @@ export const snapshot = {}; snapshot[`OTOTOY provider > release lookup > single track release 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "sasakure.UK", @@ -92,9 +93,10 @@ snapshot[`OTOTOY provider > release lookup > single track release 1`] = ` snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { + advisoryRating: undefined, artists: [ { - creditedName: "ザ・ビートルズ", + creditedName: "The Beatles", externalIds: [ { id: "218489", @@ -102,7 +104,7 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` type: "artist", }, ], - name: "ザ・ビートルズ", + name: "The Beatles", }, ], externalLinks: [ @@ -166,15 +168,15 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { artists: [ { - creditedName: "ジョン・レノン", + creditedName: "John Lennon", externalIds: [ { - id: "284005", + id: "918373", provider: "ototoy", type: "artist", }, ], - name: "ジョン・レノン", + name: "John Lennon", }, ], length: 11000, @@ -185,15 +187,15 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { artists: [ { - creditedName: "ザ・クォーリー・メン", + creditedName: "The Quarrymen", externalIds: [ { - id: "1823343", + id: "2122701", provider: "ototoy", type: "artist", }, ], - name: "ザ・クォーリー・メン", + name: "The Quarrymen", }, ], length: 129000, @@ -204,15 +206,15 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { artists: [ { - creditedName: "ザ・クォーリー・メン", + creditedName: "The Quarrymen", externalIds: [ { - id: "1823343", + id: "2122701", provider: "ototoy", type: "artist", }, ], - name: "ザ・クォーリー・メン", + name: "The Quarrymen", }, ], length: 164000, @@ -223,15 +225,15 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { artists: [ { - creditedName: "ポール・マッカートニー", + creditedName: "Paul McCartney", externalIds: [ { - id: "268135", + id: "1426056", provider: "ototoy", type: "artist", }, ], - name: "ポール・マッカートニー", + name: "Paul McCartney", }, ], length: 18000, @@ -263,15 +265,15 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { artists: [ { - creditedName: "ポール・マッカートニー", + creditedName: "Paul McCartney", externalIds: [ { - id: "268135", + id: "1426056", provider: "ototoy", type: "artist", }, ], - name: "ポール・マッカートニー", + name: "Paul McCartney", }, ], length: 7000, @@ -282,7 +284,7 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { artists: [ { - creditedName: "ザ・ビートルズ", + creditedName: "The Beatles", externalIds: [ { id: "218489", @@ -290,18 +292,18 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` type: "artist", }, ], - name: "ザ・ビートルズ", + name: "The Beatles", }, { - creditedName: "ビートルズとトニー・シェリダン", + creditedName: "Tony Sheridan", externalIds: [ { - id: "274608", + id: "2122702", provider: "ototoy", type: "artist", }, ], - name: "ビートルズとトニー・シェリダン", + name: "Tony Sheridan", }, ], length: 162000, @@ -326,15 +328,15 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { artists: [ { - creditedName: "ジョン・レノン", + creditedName: "John Lennon", externalIds: [ { - id: "284005", + id: "918373", provider: "ototoy", type: "artist", }, ], - name: "ジョン・レノン", + name: "John Lennon", }, ], length: 9000, @@ -345,15 +347,15 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { artists: [ { - creditedName: "ブライアン・エプスタイン", + creditedName: "Brian Epstein", externalIds: [ { - id: "1823344", + id: "2122706", provider: "ototoy", type: "artist", }, ], - name: "ブライアン・エプスタイン", + name: "Brian Epstein", }, ], length: 18000, @@ -399,15 +401,15 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { artists: [ { - creditedName: "ブライアン・エプスタイン", + creditedName: "Brian Epstein", externalIds: [ { - id: "1823344", + id: "2122706", provider: "ototoy", type: "artist", }, ], - name: "ブライアン・エプスタイン", + name: "Brian Epstein", }, ], length: 32000, @@ -474,15 +476,15 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` { artists: [ { - creditedName: "ジョン・レノン", + creditedName: "John Lennon", externalIds: [ { - id: "284005", + id: "918373", provider: "ototoy", type: "artist", }, ], - name: "ジョン・レノン", + name: "John Lennon", }, ], length: 12000, @@ -1661,6 +1663,7 @@ snapshot[`OTOTOY provider > release lookup > multi-disc release 1`] = ` snapshot[`OTOTOY provider > release lookup > multiple artists 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "sasakure.UK", @@ -1795,6 +1798,7 @@ snapshot[`OTOTOY provider > release lookup > multiple artists 1`] = ` snapshot[`OTOTOY provider > release lookup > no label 1`] = ` { + advisoryRating: "explicit", artists: [ { creditedName: "Benjazzy", @@ -1818,11 +1822,11 @@ snapshot[`OTOTOY provider > release lookup > no label 1`] = ` ], images: [ { - thumbUrl: "https://imgs.ototoy.jp/imgs/jacket/3228/00000003.3228080.1763569536.7217_320.jpg", + thumbUrl: "https://imgs.ototoy.jp/imgs/jacket/3228/00000003.3228080.1765970185.6207_320.jpg", types: [ "front", ], - url: "https://imgs.ototoy.jp/imgs/jacket/3228/00000003.3228080.1763569536.7217orig.jpg", + url: "https://imgs.ototoy.jp/imgs/jacket/3228/00000003.3228080.1765970185.6207orig.jpg", }, ], info: { @@ -2108,7 +2112,7 @@ snapshot[`OTOTOY provider > release lookup > no label 1`] = ` creditedName: "般若", externalIds: [ { - id: "214647", + id: "8585", provider: "ototoy", type: "artist", }, @@ -2147,6 +2151,7 @@ snapshot[`OTOTOY provider > release lookup > no label 1`] = ` snapshot[`OTOTOY provider > release lookup > original release date only 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "YOASOBI", @@ -2170,11 +2175,11 @@ snapshot[`OTOTOY provider > release lookup > original release date only 1`] = ` ], images: [ { - thumbUrl: "https://imgs.ototoy.jp/imgs/jacket/1822/00000003.1695204881.8512_320.jpg", + thumbUrl: "https://imgs.ototoy.jp/imgs/jacket/1822/00000003.1822344.1781248983.0236_320.jpg", types: [ "front", ], - url: "https://imgs.ototoy.jp/imgs/jacket/1822/00000003.1695204881.8512orig.jpg", + url: "https://imgs.ototoy.jp/imgs/jacket/1822/00000003.1822344.1781248983.0236orig.jpg", }, ], info: { @@ -2300,6 +2305,7 @@ snapshot[`OTOTOY provider > release lookup > original release date only 1`] = ` snapshot[`OTOTOY provider > release lookup > catalog number 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "YOASOBI", @@ -2323,11 +2329,11 @@ snapshot[`OTOTOY provider > release lookup > catalog number 1`] = ` ], images: [ { - thumbUrl: "https://imgs.ototoy.jp/imgs/jacket/1822/00000003.1695204881.8512_320.jpg", + thumbUrl: "https://imgs.ototoy.jp/imgs/jacket/1822/00000003.1822344.1781248983.0236_320.jpg", types: [ "front", ], - url: "https://imgs.ototoy.jp/imgs/jacket/1822/00000003.1695204881.8512orig.jpg", + url: "https://imgs.ototoy.jp/imgs/jacket/1822/00000003.1822344.1781248983.0236orig.jpg", }, ], info: { @@ -2453,6 +2459,7 @@ snapshot[`OTOTOY provider > release lookup > catalog number 1`] = ` snapshot[`OTOTOY provider > release lookup > per-track artists 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "Various Artists", @@ -2701,3 +2708,403 @@ snapshot[`OTOTOY provider > release lookup > per-track artists 1`] = ` title: "Friends", } `; + +snapshot[`OTOTOY provider > release lookup > explicit release 1`] = ` +{ + advisoryRating: "explicit", + artists: [ + { + creditedName: "Steve Lacy", + externalIds: [ + { + id: "386946", + provider: "ototoy", + type: "artist", + }, + ], + name: "Steve Lacy", + }, + ], + externalLinks: [ + { + types: [ + "paid download", + ], + url: "https://ototoy.jp/_/default/p/1289692", + }, + ], + images: [ + { + thumbUrl: "https://imgs.ototoy.jp/imgs/jacket/1289/00000003.1657229286.1438_320.jpg", + types: [ + "front", + ], + url: "https://imgs.ototoy.jp/imgs/jacket/1289/00000003.1657229286.1438orig.jpg", + }, + ], + info: { + messages: [], + providers: [ + { + apiUrl: undefined, + id: "1289692", + internalName: "ototoy", + lookup: { + method: "id", + value: "1289692", + }, + name: "OTOTOY", + url: "https://ototoy.jp/_/default/p/1289692", + }, + ], + }, + labels: [ + { + catalogNumber: "G0100047877840", + externalIds: [ + { + id: "1113591", + provider: "ototoy", + type: "label", + }, + ], + name: "L-M Records/RCA Records", + }, + ], + media: [ + { + format: "Digital Media", + number: 1, + tracklist: [ + { + artists: undefined, + length: 156000, + number: 1, + title: "Static", + type: "audio", + }, + { + artists: undefined, + length: 201000, + number: 2, + title: "Helmet", + type: "audio", + }, + { + artists: undefined, + length: 295000, + number: 3, + title: "Mercury", + type: "audio", + }, + { + artists: undefined, + length: 184000, + number: 4, + title: "Buttons", + type: "audio", + }, + { + artists: undefined, + length: 232000, + number: 5, + title: "Bad Habit", + type: "audio", + }, + { + artists: [ + { + creditedName: "Steve Lacy", + externalIds: [ + { + id: "386946", + provider: "ototoy", + type: "artist", + }, + ], + name: "Steve Lacy", + }, + { + creditedName: "Matt Martians", + externalIds: [ + { + id: "1004299", + provider: "ototoy", + type: "artist", + }, + ], + name: "Matt Martians", + }, + ], + length: 50000, + number: 6, + title: "2Gether (Enterlude)", + type: "audio", + }, + { + artists: undefined, + length: 240000, + number: 7, + title: "Cody Freestyle", + type: "audio", + }, + { + artists: undefined, + length: 173000, + number: 8, + title: "Amber", + type: "audio", + }, + { + artists: [ + { + creditedName: "Steve Lacy", + externalIds: [ + { + id: "386946", + provider: "ototoy", + type: "artist", + }, + ], + name: "Steve Lacy", + }, + { + creditedName: "Fousheé", + externalIds: [ + { + id: "851399", + provider: "ototoy", + type: "artist", + }, + ], + name: "Fousheé", + }, + ], + length: 293000, + number: 9, + title: "Sunshine (feat. Fousheé)", + type: "audio", + }, + { + artists: undefined, + length: 273000, + number: 10, + title: "Give You the World", + type: "audio", + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 15, + month: 7, + year: 2022, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "Gemini Rights", +} +`; + +snapshot[`OTOTOY provider > release lookup > clean release 1`] = ` +{ + advisoryRating: "clean", + artists: [ + { + creditedName: "Steve Lacy", + externalIds: [ + { + id: "386946", + provider: "ototoy", + type: "artist", + }, + ], + name: "Steve Lacy", + }, + ], + externalLinks: [ + { + types: [ + "paid download", + ], + url: "https://ototoy.jp/_/default/p/3915185", + }, + ], + images: [ + { + thumbUrl: "https://imgs.ototoy.jp/imgs/jacket/3915/00000003.3915185.1783386796.7557_320.jpg", + types: [ + "front", + ], + url: "https://imgs.ototoy.jp/imgs/jacket/3915/00000003.3915185.1783386796.7557orig.jpg", + }, + ], + info: { + messages: [], + providers: [ + { + apiUrl: undefined, + id: "3915185", + internalName: "ototoy", + lookup: { + method: "id", + value: "3915185", + }, + name: "OTOTOY", + url: "https://ototoy.jp/_/default/p/3915185", + }, + ], + }, + labels: [ + { + catalogNumber: "G010005873292T", + externalIds: [ + { + id: "1113591", + provider: "ototoy", + type: "label", + }, + ], + name: "L-M Records/RCA Records", + }, + ], + media: [ + { + format: "Digital Media", + number: 1, + tracklist: [ + { + artists: undefined, + length: 156000, + number: 1, + title: "Static", + type: "audio", + }, + { + artists: undefined, + length: 201000, + number: 2, + title: "Helmet", + type: "audio", + }, + { + artists: undefined, + length: 295000, + number: 3, + title: "Mercury", + type: "audio", + }, + { + artists: undefined, + length: 184000, + number: 4, + title: "Buttons", + type: "audio", + }, + { + artists: undefined, + length: 232000, + number: 5, + title: "Bad Habit", + type: "audio", + }, + { + artists: [ + { + creditedName: "Steve Lacy", + externalIds: [ + { + id: "386946", + provider: "ototoy", + type: "artist", + }, + ], + name: "Steve Lacy", + }, + { + creditedName: "Matt Martians", + externalIds: [ + { + id: "1004299", + provider: "ototoy", + type: "artist", + }, + ], + name: "Matt Martians", + }, + ], + length: 50000, + number: 6, + title: "2Gether (Enterlude)", + type: "audio", + }, + { + artists: undefined, + length: 240000, + number: 7, + title: "Cody Freestyle", + type: "audio", + }, + { + artists: undefined, + length: 173000, + number: 8, + title: "Amber", + type: "audio", + }, + { + artists: [ + { + creditedName: "Steve Lacy", + externalIds: [ + { + id: "386946", + provider: "ototoy", + type: "artist", + }, + ], + name: "Steve Lacy", + }, + { + creditedName: "Fousheé", + externalIds: [ + { + id: "851399", + provider: "ototoy", + type: "artist", + }, + ], + name: "Fousheé", + }, + ], + length: 293000, + number: 9, + title: "Sunshine (feat. Fousheé)", + type: "audio", + }, + { + artists: undefined, + length: 273000, + number: 10, + title: "Give You the World", + type: "audio", + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 14, + month: 7, + year: 2022, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "Gemini Rights", +} +`; diff --git a/providers/Ototoy/mod.test.ts b/providers/Ototoy/mod.test.ts index 3ba0e6a0..c4424ece 100644 --- a/providers/Ototoy/mod.test.ts +++ b/providers/Ototoy/mod.test.ts @@ -99,6 +99,22 @@ describe('OTOTOY provider', () => { assertEquals(media.tracklist.length, 6); assertEquals(media.tracklist[5].artists!.length, 3); }, + }, { + description: 'explicit release', + release: '1289692', + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'explicit'); + }, + }, { + description: 'clean release', + release: '3915185', + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'clean'); + }, }], }); diff --git a/providers/Qobuz/__snapshots__/mod.test.ts.snap b/providers/Qobuz/__snapshots__/mod.test.ts.snap index 3f924bff..3b9bdd36 100644 --- a/providers/Qobuz/__snapshots__/mod.test.ts.snap +++ b/providers/Qobuz/__snapshots__/mod.test.ts.snap @@ -2,6 +2,7 @@ export const snapshot = {}; snapshot[`Qobuz provider > release lookup > single by two artists 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "ivycomb", @@ -85,6 +86,7 @@ snapshot[`Qobuz provider > release lookup > single by two artists 1`] = ` number: 1, tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "ivycomb", @@ -117,6 +119,7 @@ snapshot[`Qobuz provider > release lookup > single by two artists 1`] = ` title: "Suspend My Belief", }, { + advisoryRating: undefined, artists: [ { creditedName: "ivycomb", @@ -166,6 +169,7 @@ snapshot[`Qobuz provider > release lookup > single by two artists 1`] = ` snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -233,6 +237,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` number: 1, tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -261,6 +266,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` title: "Reunion", }, { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -289,6 +295,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` title: "アンドロイドガール", }, { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -317,6 +324,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` title: "スクランブル交際", }, { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -345,6 +353,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` title: "モスキート", }, { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -373,6 +382,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` title: "乙女解剖", }, { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -401,6 +411,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` title: "人質交換", }, { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -429,6 +440,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` title: "シンセカイ案内所", }, { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -457,6 +469,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` title: "サイコグラム", }, { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -485,6 +498,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` title: "夜行性ハイズ", }, { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -513,6 +527,7 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` title: "ヒバナ -Reloaded-", }, { + advisoryRating: undefined, artists: [ { creditedName: "DECO*27", @@ -559,3 +574,546 @@ snapshot[`Qobuz provider > release lookup > non-downloadable album 1`] = ` ], } `; + +snapshot[`Qobuz provider > release lookup > explicit release 1`] = ` +{ + advisoryRating: "explicit", + artists: [ + { + creditedName: "Lil Nas X", + externalIds: [ + { + id: "4384197", + provider: "qobuz", + type: "artist", + }, + ], + name: "Lil Nas X", + }, + { + creditedName: "Jack Harlow", + externalIds: [ + { + id: "3337986", + provider: "qobuz", + type: "artist", + }, + ], + name: "Jack Harlow", + }, + ], + copyright: "(P) 2021 Columbia Records, a Division of Sony Music Entertainment", + externalLinks: [ + { + types: [ + "paid streaming", + "paid download", + ], + url: "https://open.qobuz.com/album/hgukd7uvy8lqc", + }, + ], + gtin: "0886449403912", + images: [ + { + thumbUrl: "https://static.qobuz.com/images/covers/qc/8l/hgukd7uvy8lqc_230.jpg", + types: [ + "front", + ], + url: "https://static.qobuz.com/images/covers/qc/8l/hgukd7uvy8lqc_org.jpg", + }, + ], + info: { + messages: [], + providers: [ + { + apiUrl: "https://www.qobuz.com/api.json/0.2/album/get?album_id=hgukd7uvy8lqc", + id: "hgukd7uvy8lqc", + internalName: "qobuz", + lookup: { + method: "id", + value: "hgukd7uvy8lqc", + }, + name: "Qobuz", + url: "https://open.qobuz.com/album/hgukd7uvy8lqc", + }, + ], + }, + labels: [ + { + externalIds: [ + { + id: "4592", + provider: "qobuz", + slug: "columbia", + type: "label", + }, + ], + name: "Columbia", + }, + ], + media: [ + { + format: "Digital Media", + number: 1, + tracklist: [ + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Lil Nas X", + externalIds: [ + { + id: "4384197", + provider: "qobuz", + type: "artist", + }, + ], + name: "Lil Nas X", + }, + { + creditedName: "Jack Harlow", + name: "Jack Harlow", + }, + ], + isrc: "USSM12104539", + length: 212000, + number: 1, + recording: { + externalIds: [ + { + id: "127040661", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "INDUSTRY BABY", + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 23, + month: 7, + year: 2021, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "INDUSTRY BABY", + types: [ + "Single", + ], +} +`; + +snapshot[`Qobuz provider > release lookup > partially explicit release 1`] = ` +{ + advisoryRating: "explicit", + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + copyright: "2026 Anti 2026 Anti", + externalLinks: [ + { + types: [ + "paid streaming", + "paid download", + ], + url: "https://open.qobuz.com/album/ohej7aqvk85gt", + }, + ], + gtin: "0045778817160", + images: [ + { + thumbUrl: "https://static.qobuz.com/images/covers/gt/85/ohej7aqvk85gt_230.jpg", + types: [ + "front", + ], + url: "https://static.qobuz.com/images/covers/gt/85/ohej7aqvk85gt_org.jpg", + }, + ], + info: { + messages: [], + providers: [ + { + apiUrl: "https://www.qobuz.com/api.json/0.2/album/get?album_id=ohej7aqvk85gt", + id: "ohej7aqvk85gt", + internalName: "qobuz", + lookup: { + method: "id", + value: "ohej7aqvk85gt", + }, + name: "Qobuz", + url: "https://open.qobuz.com/album/ohej7aqvk85gt", + }, + ], + }, + labels: [ + { + externalIds: [ + { + id: "10623438", + provider: "qobuz", + slug: "antiepitaph", + type: "label", + }, + ], + name: "Anti/Epitaph", + }, + ], + media: [ + { + format: "Digital Media", + number: 1, + tracklist: [ + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621001", + length: 186000, + number: 1, + recording: { + externalIds: [ + { + id: "418639466", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "Yellow and Green", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621002", + length: 208000, + number: 2, + recording: { + externalIds: [ + { + id: "418639467", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "These Days", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621003", + length: 183000, + number: 3, + recording: { + externalIds: [ + { + id: "418639468", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "Better Man", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621004", + length: 125000, + number: 4, + recording: { + externalIds: [ + { + id: "418639469", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "Melodie", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621005", + length: 208000, + number: 5, + recording: { + externalIds: [ + { + id: "418639470", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "Red Car", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621006", + length: 189000, + number: 6, + recording: { + externalIds: [ + { + id: "418639471", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "Not for Nothing", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621007", + length: 174000, + number: 7, + recording: { + externalIds: [ + { + id: "418639472", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "Entertainer", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621008", + length: 151000, + number: 8, + recording: { + externalIds: [ + { + id: "418639473", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "Like Me", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621009", + length: 195000, + number: 9, + recording: { + externalIds: [ + { + id: "418639474", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "Spill", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621010", + length: 163000, + number: 10, + recording: { + externalIds: [ + { + id: "418639475", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "Up to You", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "7230866", + provider: "qobuz", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621011", + length: 166000, + number: 11, + recording: { + externalIds: [ + { + id: "418639476", + provider: "qobuz", + type: "track", + }, + ], + }, + title: "Slip Away", + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 18, + month: 9, + year: 2026, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "Melodie", + types: [ + "Album", + ], +} +`; diff --git a/providers/Qobuz/mod.test.ts b/providers/Qobuz/mod.test.ts index ed688475..106181bb 100644 --- a/providers/Qobuz/mod.test.ts +++ b/providers/Qobuz/mod.test.ts @@ -108,6 +108,34 @@ describe('Qobuz provider', () => { 'Release should be streamable but not downloadable', ); }, + }, { + description: 'explicit release', + release: new URL('https://open.qobuz.com/album/hgukd7uvy8lqc'), + options: releaseOptions, + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + assertEquals( + release.advisoryRating, + 'explicit', + 'Release should be marked explicit', + ); + }, + }, { + description: 'partially explicit release', + release: new URL('https://open.qobuz.com/album/ohej7aqvk85gt'), + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'explicit', 'The release should be marked explicit'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + allTracks.forEach((track, index) => { + if (index === 2) { + assertEquals(track.advisoryRating, 'explicit', 'The third track should be marked explicit'); + } else { + assertEquals(track.advisoryRating, undefined, `Track ${index + 1} should have no advisory rating`); + } + }); + }, }], }); diff --git a/providers/Spotify/mod.test.ts b/providers/Spotify/mod.test.ts index a814f242..70bb5edb 100644 --- a/providers/Spotify/mod.test.ts +++ b/providers/Spotify/mod.test.ts @@ -100,6 +100,32 @@ describe('Spotify provider', () => { type: 'track', }], 'Track 55 has its original track ID, not the ID of the replacement track'); }, + }, { + description: 'explicit release', + release: new URL('https://open.spotify.com/album/622NFw5Yk0OReMJ2XWcXUh'), + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'explicit', 'The release should be marked explicit'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + assert(allTracks.every((track) => track.advisoryRating === 'explicit'), 'All tracks should be marked explicit'); + }, + }, { + description: 'partially explicit release', + release: new URL('https://open.spotify.com/album/3pCuWK1YLBdu96F3wIGqjy'), + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'explicit', 'The release should be marked explicit'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + allTracks.forEach((track, index) => { + if (index === 2) { + assertEquals(track.advisoryRating, 'explicit', 'The third track should be marked explicit'); + } else { + assertEquals(track.advisoryRating, undefined, `Track ${index + 1} should have no advisory rating`); + } + }); + }, }], }); diff --git a/providers/Tidal/__snapshots__/mod.test.ts.snap b/providers/Tidal/__snapshots__/mod.test.ts.snap index 7a12ad62..25984014 100644 --- a/providers/Tidal/__snapshots__/mod.test.ts.snap +++ b/providers/Tidal/__snapshots__/mod.test.ts.snap @@ -2,6 +2,7 @@ export const snapshot = {}; snapshot[`Tidal provider > release lookup > live album with video tracks and featured artist (v1 API) 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -58,6 +59,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea number: 1, tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -78,6 +80,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -98,6 +101,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -118,6 +122,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -138,6 +143,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -158,6 +164,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "Beyoncé", @@ -189,6 +196,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -209,6 +217,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -240,6 +249,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "audio", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -260,6 +270,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "video", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -280,6 +291,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "video", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -300,6 +312,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "video", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -320,6 +333,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "video", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -340,6 +354,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "video", }, { + advisoryRating: undefined, artists: [ { creditedName: "Beyoncé", @@ -371,6 +386,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "video", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -391,6 +407,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea type: "video", }, { + advisoryRating: undefined, artists: [ { creditedName: "JAY Z", @@ -444,6 +461,7 @@ snapshot[`Tidal provider > release lookup > live album with video tracks and fea snapshot[`Tidal provider > release lookup > single by two artists (v2 API) 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "Lady Gaga", @@ -515,6 +533,7 @@ snapshot[`Tidal provider > release lookup > single by two artists (v2 API) 1`] = number: 1, tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "Lady Gaga", @@ -576,6 +595,7 @@ snapshot[`Tidal provider > release lookup > single by two artists (v2 API) 1`] = snapshot[`Tidal provider > release lookup > lyric video (v2 API) 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "Taylor Swift", @@ -636,6 +656,7 @@ snapshot[`Tidal provider > release lookup > lyric video (v2 API) 1`] = ` number: 1, tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "Taylor Swift", @@ -686,6 +707,7 @@ snapshot[`Tidal provider > release lookup > lyric video (v2 API) 1`] = ` snapshot[`Tidal provider > release lookup > release with paginated tracklist and version info (v2 API) 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "Air Max '97", @@ -718,6 +740,7 @@ snapshot[`Tidal provider > release lookup > release with paginated tracklist and snapshot[`Tidal provider > release lookup > release with missing tracks and missing artist (v2 API) 1`] = ` { + advisoryRating: undefined, artists: [ { externalIds: [ @@ -820,3 +843,549 @@ snapshot[`Tidal provider > release lookup > release with missing tracks and miss }, ] `; + +snapshot[`Tidal provider > release lookup > explicit release (v2 API) 1`] = ` +{ + advisoryRating: "explicit", + artists: [ + { + creditedName: "Lil Nas X", + externalIds: [ + { + id: "9996466", + provider: "tidal", + type: "artist", + }, + ], + name: "Lil Nas X", + }, + { + creditedName: "Jack Harlow", + externalIds: [ + { + id: "7286900", + provider: "tidal", + type: "artist", + }, + ], + name: "Jack Harlow", + }, + ], + copyright: "℗ 2021 Columbia Records, a Division of Sony Music Entertainment", + externalLinks: [ + { + types: [ + "paid streaming", + ], + url: "https://tidal.com/album/191569964", + }, + ], + gtin: "886449403912", + images: [ + { + thumbUrl: "https://resources.tidal.com/images/0eb92f59/070d/4cea/8fec/797e05b8083d/320x320.jpg", + types: [ + "front", + ], + url: "https://resources.tidal.com/images/0eb92f59/070d/4cea/8fec/797e05b8083d/1280x1280.jpg", + }, + ], + info: { + messages: [], + providers: [ + { + apiUrl: "https://openapi.tidal.com/v2/albums?countryCode=US&include=artists%2Citems.artists%2Cproviders%2CcoverArt&filter%5Bid%5D=191569964", + id: "191569964", + internalName: "tidal", + lookup: { + method: "id", + region: "US", + value: "191569964", + }, + name: "Tidal", + url: "https://tidal.com/album/191569964", + }, + ], + }, + labels: [ + { + name: "Sony Music", + }, + ], + media: [ + { + format: "Digital Media", + number: 1, + tracklist: [ + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Lil Nas X", + externalIds: [ + { + id: "9996466", + provider: "tidal", + type: "artist", + }, + ], + name: "Lil Nas X", + }, + { + creditedName: "Jack Harlow", + externalIds: [ + { + id: "7286900", + provider: "tidal", + type: "artist", + }, + ], + name: "Jack Harlow", + }, + ], + isrc: "USSM12104539", + length: 212000, + number: 1, + recording: { + externalIds: [ + { + id: "191569965", + provider: "tidal", + type: "track", + }, + ], + }, + title: "INDUSTRY BABY", + type: "audio", + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 23, + month: 7, + year: 2021, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "INDUSTRY BABY", + types: [ + "Single", + ], +} +`; + +snapshot[`Tidal provider > release lookup > partially explicit release (v2 API) 1`] = ` +{ + advisoryRating: "explicit", + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + copyright: "Anti", + externalLinks: [ + { + types: [ + "paid streaming", + ], + url: "https://tidal.com/album/524698793", + }, + ], + gtin: "0045778817160", + images: [ + { + thumbUrl: "https://resources.tidal.com/images/2c2f23da/f004/4ee2/83c6/025ac29a3765/320x320.jpg", + types: [ + "front", + ], + url: "https://resources.tidal.com/images/2c2f23da/f004/4ee2/83c6/025ac29a3765/1280x1280.jpg", + }, + ], + info: { + messages: [], + providers: [ + { + apiUrl: "https://openapi.tidal.com/v2/albums?countryCode=US&include=artists%2Citems.artists%2Cproviders%2CcoverArt&filter%5Bid%5D=524698793", + id: "524698793", + internalName: "tidal", + lookup: { + method: "id", + region: "US", + value: "524698793", + }, + name: "Tidal", + url: "https://tidal.com/album/524698793", + }, + ], + }, + labels: [ + { + name: "IIP-DDS", + }, + ], + media: [ + { + format: "Digital Media", + number: 1, + tracklist: [ + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621001", + length: 187000, + number: 1, + recording: { + externalIds: [ + { + id: "524698794", + provider: "tidal", + type: "track", + }, + ], + }, + title: "Yellow and Green", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621002", + length: 209000, + number: 2, + recording: { + externalIds: [ + { + id: "524698796", + provider: "tidal", + type: "track", + }, + ], + }, + title: "These Days", + type: "audio", + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621003", + length: 183000, + number: 3, + recording: { + externalIds: [ + { + id: "524698797", + provider: "tidal", + type: "track", + }, + ], + }, + title: "Better Man", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621004", + length: 126000, + number: 4, + recording: { + externalIds: [ + { + id: "524698799", + provider: "tidal", + type: "track", + }, + ], + }, + title: "Melodie", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621005", + length: 209000, + number: 5, + recording: { + externalIds: [ + { + id: "524698800", + provider: "tidal", + type: "track", + }, + ], + }, + title: "Red Car", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621006", + length: 189000, + number: 6, + recording: { + externalIds: [ + { + id: "524698801", + provider: "tidal", + type: "track", + }, + ], + }, + title: "Not for Nothing", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621007", + length: 174000, + number: 7, + recording: { + externalIds: [ + { + id: "524698802", + provider: "tidal", + type: "track", + }, + ], + }, + title: "Entertainer", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621008", + length: 152000, + number: 8, + recording: { + externalIds: [ + { + id: "524698803", + provider: "tidal", + type: "track", + }, + ], + }, + title: "Like Me", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621009", + length: 196000, + number: 9, + recording: { + externalIds: [ + { + id: "524698804", + provider: "tidal", + type: "track", + }, + ], + }, + title: "Spill", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621010", + length: 164000, + number: 10, + recording: { + externalIds: [ + { + id: "524698806", + provider: "tidal", + type: "track", + }, + ], + }, + title: "Up to You", + type: "audio", + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "8837991", + provider: "tidal", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + isrc: "USEP42621011", + length: 166000, + number: 11, + recording: { + externalIds: [ + { + id: "524698808", + provider: "tidal", + type: "track", + }, + ], + }, + title: "Slip Away", + type: "audio", + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 18, + month: 9, + year: 2026, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "Melodie", + types: [ + "Album", + ], +} +`; diff --git a/providers/Tidal/mod.test.ts b/providers/Tidal/mod.test.ts index d24a1a71..37722f68 100644 --- a/providers/Tidal/mod.test.ts +++ b/providers/Tidal/mod.test.ts @@ -154,6 +154,32 @@ describe('Tidal provider', () => { await assertSnapshot(ctx, release.artists, 'Release has a placeholder artist'); await assertSnapshot(ctx, release.info.messages, 'Lookup generates warnings for missing tracks and artist'); }, + }, { + description: 'explicit release (v2 API)', + release: new URL('https://tidal.com/album/191569964'), + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'explicit', 'The release should be marked explicit'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + assert(allTracks.every((track) => track.advisoryRating === 'explicit'), 'All tracks should be marked explicit'); + }, + }, { + description: 'partially explicit release (v2 API)', + release: new URL('https://tidal.com/album/524698793'), + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + + assertEquals(release.advisoryRating, 'explicit', 'The release should be marked explicit'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + allTracks.forEach((track, index) => { + if (index === 2) { + assertEquals(track.advisoryRating, 'explicit', 'The third track should be marked explicit'); + } else { + assertEquals(track.advisoryRating, undefined, `Track ${index + 1} should have no advisory rating`); + } + }); + }, }], }); diff --git a/providers/iTunes/__snapshots__/mod.test.ts.snap b/providers/iTunes/__snapshots__/mod.test.ts.snap index 88375e63..acbb9878 100644 --- a/providers/iTunes/__snapshots__/mod.test.ts.snap +++ b/providers/iTunes/__snapshots__/mod.test.ts.snap @@ -2,6 +2,7 @@ export const snapshot = {}; snapshot[`iTunes provider > release lookup > multi-disc download with video tracks 1`] = ` { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -66,6 +67,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac number: 1, tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -101,6 +103,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -136,6 +139,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -171,6 +175,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -206,6 +211,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -241,6 +247,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -276,6 +283,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -311,6 +319,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -346,6 +355,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -381,6 +391,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -416,6 +427,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -451,6 +463,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -492,6 +505,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac number: 2, tracklist: [ { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -527,6 +541,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -562,6 +577,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -597,6 +613,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -632,6 +649,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -667,6 +685,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -702,6 +721,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: undefined, }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -737,6 +757,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: "video", }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -772,6 +793,7 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac type: "video", }, { + advisoryRating: undefined, artists: [ { creditedName: "Queen", @@ -824,3 +846,605 @@ snapshot[`iTunes provider > release lookup > multi-disc download with video trac types: [], } `; + +snapshot[`iTunes provider > release lookup > clean release 1`] = ` +{ + advisoryRating: "clean", + artists: [ + { + creditedName: "Lil Nas X & Jack Harlow", + externalIds: [ + { + id: "1400730578", + provider: "itunes", + region: "US", + slug: "lil-nas-x", + type: "artist", + }, + ], + name: "Lil Nas X & Jack Harlow", + }, + ], + copyright: "℗ 2021 Columbia Records, a Division of Sony Music Entertainment", + externalLinks: [ + { + types: [ + "paid download", + "paid streaming", + ], + url: "https://music.apple.com/us/album/1577414584", + }, + ], + gtin: "886449403929", + images: [ + { + thumbUrl: "https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/f7/16/67/f7166746-6299-5e54-8c7c-9535e941a53e/886449403929.jpg/250x250bb.jpg", + types: [ + "front", + ], + url: "https://a1.mzstatic.com/us/r1000/063/Music115/v4/f7/16/67/f7166746-6299-5e54-8c7c-9535e941a53e/886449403929.jpg", + }, + ], + info: { + messages: [ + { + provider: "iTunes", + text: "Successfully extracted GTIN 886449403929 from artwork URL", + type: "info", + }, + ], + providers: [ + { + apiUrl: "https://itunes.apple.com/lookup?entity=song&limit=200&id=1577414584&country=us", + id: "1577414584", + internalName: "itunes", + lookup: { + method: "id", + region: "US", + value: "1577414584", + }, + name: "iTunes", + url: "https://music.apple.com/us/album/1577414584", + }, + ], + }, + media: [ + { + format: "Digital Media", + number: 1, + tracklist: [ + { + advisoryRating: "clean", + artists: [ + { + creditedName: "Lil Nas X & Jack Harlow", + externalIds: [ + { + id: "1400730578", + provider: "itunes", + region: "US", + slug: "lil-nas-x", + type: "artist", + }, + ], + name: "Lil Nas X & Jack Harlow", + }, + ], + length: 212000, + number: 1, + recording: { + externalIds: [ + { + id: "1577414972", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "INDUSTRY BABY", + type: undefined, + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 23, + month: 7, + year: 2021, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "INDUSTRY BABY", + types: [ + "Single", + ], +} +`; + +snapshot[`iTunes provider > release lookup > partially explicit release 1`] = ` +{ + advisoryRating: "explicit", + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + copyright: "℗ 2026 Anti", + externalLinks: [ + { + types: [ + "paid download", + "paid streaming", + ], + url: "https://music.apple.com/us/album/6769823972", + }, + ], + gtin: "0045778817160", + images: [ + { + thumbUrl: "https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/250x250bb.jpg", + types: [ + "front", + ], + url: "https://a1.mzstatic.com/us/r1000/063/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png", + }, + ], + info: { + messages: [ + { + provider: "iTunes", + text: "Successfully extracted GTIN 0045778817160 from artwork URL", + type: "info", + }, + ], + providers: [ + { + apiUrl: "https://itunes.apple.com/lookup?entity=song&limit=200&id=6769823972&country=us", + id: "6769823972", + internalName: "itunes", + lookup: { + method: "id", + region: "US", + value: "6769823972", + }, + name: "iTunes", + url: "https://music.apple.com/us/album/6769823972", + }, + ], + }, + media: [ + { + format: "Digital Media", + number: 1, + tracklist: [ + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 186573, + number: 1, + recording: { + externalIds: [ + { + id: "6769823973", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "Yellow and Green", + type: undefined, + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 208871, + number: 2, + recording: { + externalIds: [ + { + id: "6769823974", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "These Days", + type: undefined, + }, + { + advisoryRating: "explicit", + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 183228, + number: 3, + recording: { + externalIds: [ + { + id: "6769823975", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "Better Man", + type: undefined, + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 125722, + number: 4, + recording: { + externalIds: [ + { + id: "6769823976", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "Melodie", + type: undefined, + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 208938, + number: 5, + recording: { + externalIds: [ + { + id: "6769824067", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "Red Car", + type: undefined, + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 189291, + number: 6, + recording: { + externalIds: [ + { + id: "6769824068", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "Not for Nothing", + type: undefined, + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 174060, + number: 7, + recording: { + externalIds: [ + { + id: "6769824069", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "Entertainer", + type: undefined, + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 151762, + number: 8, + recording: { + externalIds: [ + { + id: "6769824070", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "Like Me", + type: undefined, + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 195912, + number: 9, + recording: { + externalIds: [ + { + id: "6769824071", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "Spill", + type: undefined, + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 163855, + number: 10, + recording: { + externalIds: [ + { + id: "6769824072", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "Up to You", + type: undefined, + }, + { + advisoryRating: undefined, + artists: [ + { + creditedName: "Slow Pulp", + externalIds: [ + { + id: "1247711013", + provider: "itunes", + region: "US", + slug: "slow-pulp", + type: "artist", + }, + ], + name: "Slow Pulp", + }, + ], + length: 166494, + number: 11, + recording: { + externalIds: [ + { + id: "6769824073", + linkTypes: [ + "paid download", + "paid streaming", + ], + provider: "itunes", + region: "US", + type: "song", + }, + ], + }, + title: "Slip Away", + type: undefined, + }, + ], + }, + ], + packaging: "None", + releaseDate: { + date: { + day: 18, + month: 9, + year: 2026, + }, + quality: "assumed-valid", + }, + status: "Official", + title: "Melodie", + types: [], +} +`; diff --git a/providers/iTunes/mod.test.ts b/providers/iTunes/mod.test.ts index 471bcdf6..baa70187 100644 --- a/providers/iTunes/mod.test.ts +++ b/providers/iTunes/mod.test.ts @@ -104,6 +104,30 @@ describe('iTunes provider', () => { 'Lookup generates a warning about the missing tracks', ); }, + }, { + description: 'clean release', + release: '1577414584', + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + assertEquals(release.advisoryRating, 'clean', 'The release should be marked clean'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + assertEquals(allTracks[0].advisoryRating, 'clean', 'The track should be marked clean'); + }, + }, { + description: 'partially explicit release', + release: '6769823972', + assert: async (release, ctx) => { + await assertSnapshot(ctx, release); + assertEquals(release.advisoryRating, 'explicit', 'The release should be marked explicit'); + const allTracks = release.media.flatMap((medium) => medium.tracklist); + allTracks.forEach((track, index) => { + if (index === 2) { + assertEquals(track.advisoryRating, 'explicit', 'The third track should be marked explicit'); + } else { + assertEquals(track.advisoryRating, undefined, `Track ${index + 1} should have no advisory rating`); + } + }); + }, }], }); diff --git a/testdata/https!/com.apple.itunes/lookup!entity=song&limit=200&id=1577414584&country=us b/testdata/https!/com.apple.itunes/lookup!entity=song&limit=200&id=1577414584&country=us new file mode 100644 index 00000000..003f07a5 --- /dev/null +++ b/testdata/https!/com.apple.itunes/lookup!entity=song&limit=200&id=1577414584&country=us @@ -0,0 +1,12 @@ + + + +{ + "resultCount":2, + "results": [ +{"wrapperType":"collection", "collectionType":"Album", "artistId":1400730578, "collectionId":1577414584, "amgArtistId":3526930, "artistName":"Lil Nas X & Jack Harlow", "collectionName":"INDUSTRY BABY - Single", "collectionCensoredName":"INDUSTRY BABY - Single", "artistViewUrl":"https://music.apple.com/us/artist/lil-nas-x/1400730578?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/industry-baby-single/1577414584?uo=4", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/f7/16/67/f7166746-6299-5e54-8c7c-9535e941a53e/886449403929.jpg/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/f7/16/67/f7166746-6299-5e54-8c7c-9535e941a53e/886449403929.jpg/100x100bb.jpg", "collectionPrice":1.29, "collectionExplicitness":"cleaned", "contentAdvisoryRating":"Clean", "trackCount":1, "copyright":"℗ 2021 Columbia Records, a Division of Sony Music Entertainment", "country":"USA", "currency":"USD", "releaseDate":"2021-07-23T07:00:00Z", "primaryGenreName":"Hip-Hop/Rap"}, +{"wrapperType":"track", "kind":"song", "artistId":1400730578, "collectionId":1577414584, "trackId":1577414972, "artistName":"Lil Nas X & Jack Harlow", "collectionName":"INDUSTRY BABY - Single", "trackName":"INDUSTRY BABY", "collectionCensoredName":"INDUSTRY BABY - Single", "trackCensoredName":"INDUSTRY BABY", "artistViewUrl":"https://music.apple.com/us/artist/lil-nas-x/1400730578?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/industry-baby/1577414584?i=1577414972&uo=4", "trackViewUrl":"https://music.apple.com/us/album/industry-baby/1577414584?i=1577414972&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview211/v4/51/97/7a/51977a71-448a-202a-5e60-756d5dcb6eeb/mzaf_194387576127428058.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/f7/16/67/f7166746-6299-5e54-8c7c-9535e941a53e/886449403929.jpg/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/f7/16/67/f7166746-6299-5e54-8c7c-9535e941a53e/886449403929.jpg/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/f7/16/67/f7166746-6299-5e54-8c7c-9535e941a53e/886449403929.jpg/100x100bb.jpg", "collectionPrice":1.29, "trackPrice":1.29, "releaseDate":"2021-07-23T12:00:00Z", "collectionExplicitness":"cleaned", "trackExplicitness":"cleaned", "discCount":1, "discNumber":1, "trackCount":1, "trackNumber":1, "trackTimeMillis":212000, "country":"USA", "currency":"USD", "primaryGenreName":"Hip-Hop/Rap", "contentAdvisoryRating":"Clean", "isStreamable":true}] +} + + diff --git a/testdata/https!/com.apple.itunes/lookup!entity=song&limit=200&id=6769823972&country=us b/testdata/https!/com.apple.itunes/lookup!entity=song&limit=200&id=6769823972&country=us new file mode 100644 index 00000000..0039012d --- /dev/null +++ b/testdata/https!/com.apple.itunes/lookup!entity=song&limit=200&id=6769823972&country=us @@ -0,0 +1,32 @@ + + + +{ + "resultCount":12, + "results": [ +{"wrapperType":"collection", "collectionType":"Album", "artistId":1247711013, "collectionId":6769823972, "amgArtistId":3543111, "artistName":"Slow Pulp", "collectionName":"Melodie", "collectionCensoredName":"Melodie", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/melodie/6769823972?uo=4", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "collectionExplicitness":"explicit", "contentAdvisoryRating":"Explicit", "trackCount":11, "copyright":"℗ 2026 Anti", "country":"USA", "currency":"USD", "releaseDate":"2026-09-18T07:00:00Z", "primaryGenreName":"Alternative"}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769823973, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"Yellow and Green", "collectionCensoredName":"Melodie", "trackCensoredName":"Yellow and Green", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/yellow-and-green/6769823972?i=6769823973&uo=4", "trackViewUrl":"https://music.apple.com/us/album/yellow-and-green/6769823972?i=6769823973&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview221/v4/12/8a/bf/128abf1b-6b89-9249-5fe5-bb1bac10c264/mzaf_9958806511422464542.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-09-18T12:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":1, "trackTimeMillis":186573, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769823974, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"These Days", "collectionCensoredName":"Melodie", "trackCensoredName":"These Days", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/these-days/6769823972?i=6769823974&uo=4", "trackViewUrl":"https://music.apple.com/us/album/these-days/6769823972?i=6769823974&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview211/v4/8c/8f/6d/8c8f6dbe-acb7-45f1-710b-6565c847de5f/mzaf_8667352295096850422.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-09-18T12:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":2, "trackTimeMillis":208871, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769823975, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"Better Man", "collectionCensoredName":"Melodie", "trackCensoredName":"Better Man", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/better-man/6769823972?i=6769823975&uo=4", "trackViewUrl":"https://music.apple.com/us/album/better-man/6769823972?i=6769823975&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview221/v4/c1/d1/96/c1d196b4-c312-d14f-07a5-e50d2a6a8529/mzaf_12732930569905178133.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-06-10T07:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"explicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":3, "trackTimeMillis":183228, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "contentAdvisoryRating":"Explicit", "isStreamable":true}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769823976, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"Melodie", "collectionCensoredName":"Melodie", "trackCensoredName":"Melodie", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/melodie/6769823972?i=6769823976&uo=4", "trackViewUrl":"https://music.apple.com/us/album/melodie/6769823972?i=6769823976&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview221/v4/08/74/b9/0874b969-41cd-57b7-febb-e79430449b7f/mzaf_2843576653890315463.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-09-18T12:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":4, "trackTimeMillis":125722, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769824067, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"Red Car", "collectionCensoredName":"Melodie", "trackCensoredName":"Red Car", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/red-car/6769823972?i=6769824067&uo=4", "trackViewUrl":"https://music.apple.com/us/album/red-car/6769823972?i=6769824067&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview221/v4/d9/77/ee/d977eec5-9f54-5d44-88a0-9ff32b4d9eae/mzaf_12282520258092238335.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-09-18T12:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":5, "trackTimeMillis":208938, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769824068, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"Not for Nothing", "collectionCensoredName":"Melodie", "trackCensoredName":"Not for Nothing", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/not-for-nothing/6769823972?i=6769824068&uo=4", "trackViewUrl":"https://music.apple.com/us/album/not-for-nothing/6769823972?i=6769824068&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview221/v4/7b/b4/0c/7bb40c56-ce7a-1d06-c582-1743ddb5c2de/mzaf_10132552559548883920.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-07-07T07:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":6, "trackTimeMillis":189291, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769824069, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"Entertainer", "collectionCensoredName":"Melodie", "trackCensoredName":"Entertainer", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/entertainer/6769823972?i=6769824069&uo=4", "trackViewUrl":"https://music.apple.com/us/album/entertainer/6769823972?i=6769824069&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview211/v4/78/e2/e0/78e2e0f3-ad58-d2b8-e7b2-9a4a2071a7bd/mzaf_8004431201024015789.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-09-18T12:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":7, "trackTimeMillis":174060, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769824070, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"Like Me", "collectionCensoredName":"Melodie", "trackCensoredName":"Like Me", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/like-me/6769823972?i=6769824070&uo=4", "trackViewUrl":"https://music.apple.com/us/album/like-me/6769823972?i=6769824070&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview211/v4/01/08/3d/01083d17-95e9-a909-def8-8bda088fe8e7/mzaf_6483824873932085084.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-09-18T12:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":8, "trackTimeMillis":151762, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769824071, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"Spill", "collectionCensoredName":"Melodie", "trackCensoredName":"Spill", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/spill/6769823972?i=6769824071&uo=4", "trackViewUrl":"https://music.apple.com/us/album/spill/6769823972?i=6769824071&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview221/v4/03/98/c4/0398c46d-6be3-2d33-3194-947fe92999b3/mzaf_4667934060784894235.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-08-13T07:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":9, "trackTimeMillis":195912, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769824072, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"Up to You", "collectionCensoredName":"Melodie", "trackCensoredName":"Up to You", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/up-to-you/6769823972?i=6769824072&uo=4", "trackViewUrl":"https://music.apple.com/us/album/up-to-you/6769823972?i=6769824072&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview221/v4/7e/f4/22/7ef422f7-49eb-590d-7f90-01102e4615a0/mzaf_8345093597979098168.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-09-18T12:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":10, "trackTimeMillis":163855, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}, +{"wrapperType":"track", "kind":"song", "artistId":1247711013, "collectionId":6769823972, "trackId":6769824073, "artistName":"Slow Pulp", "collectionName":"Melodie", "trackName":"Slip Away", "collectionCensoredName":"Melodie", "trackCensoredName":"Slip Away", "artistViewUrl":"https://music.apple.com/us/artist/slow-pulp/1247711013?uo=4", "collectionViewUrl":"https://music.apple.com/us/album/slip-away/6769823972?i=6769824073&uo=4", "trackViewUrl":"https://music.apple.com/us/album/slip-away/6769823972?i=6769824073&uo=4", +"previewUrl":"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview211/v4/ec/74/9a/ec749a2c-451c-3f82-b0e5-6a8971251ce5/mzaf_5398668902561133854.plus.aac.p.m4a", "artworkUrl30":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/30x30bb.jpg", "artworkUrl60":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/60x60bb.jpg", "artworkUrl100":"https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/af/23/87/af2387f9-b84c-0664-54ae-fc67f35be87a/0045778817160.png/100x100bb.jpg", "collectionPrice":9.99, "trackPrice":1.29, "releaseDate":"2026-09-18T12:00:00Z", "collectionExplicitness":"explicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":11, "trackNumber":11, "trackTimeMillis":166494, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "isStreamable":true}] +} + + diff --git a/testdata/https!/com.beatport.www/release/-/7059114 b/testdata/https!/com.beatport.www/release/-/7059114 new file mode 100644 index 00000000..fa62578d --- /dev/null +++ b/testdata/https!/com.beatport.www/release/-/7059114 @@ -0,0 +1 @@ +{"props":{"pageProps":{"dehydratedState":{"mutations":[],"queries":[{"state":{"data":{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"},{"id":678893,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Circe Electro","slug":"circe-electro","url":"https://api-internal.beatportprod.com/v4/catalog/artists/678893/"},{"id":2397497,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Jax Panik","slug":"jax-panik","url":"https://api-internal.beatportprod.com/v4/catalog/artists/2397497/"}],"bpm_range":{"min":74,"max":144},"catalog_number":"CNSLR018","desc":null,"enabled":true,"encoded_date":"2026-06-12T15:19:23-06:00","exclusive":false,"grid":null,"id":7059114,"image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"is_available_for_streaming":true,"is_explicit":true,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"name":"Little Grunts","new_release_date":"2026-06-29","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":8.99,"display":"$8.99"},"price_override_firm":false,"publish_date":"2026-06-29","remixers":[{"id":24895,"image":{"id":56601932,"uri":"https://geo-media.beatport.com/image_size/590x404/20b1c07d-fc9c-44c2-a84f-0da041d0987a.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/20b1c07d-fc9c-44c2-a84f-0da041d0987a.jpg"},"name":"Cyberpunkers","slug":"cyberpunkers","url":"https://api-internal.beatportprod.com/v4/catalog/artists/24895/"}],"slug":"little-grunts","tracks":["https://api-internal.beatportprod.com/v4/catalog/tracks/29313851/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313850/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313849/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313848/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313847/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313846/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313845/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313844/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313843/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313842/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313841/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313840/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313839/"],"track_count":13,"type":{"id":2,"name":"Album"},"upc":"824296930656","updated":"2026-06-29T00:33:08-06:00","is_hype":false},"dataUpdateCount":1,"dataUpdatedAt":1789956527881,"error":null,"errorUpdateCount":0,"errorUpdatedAt":0,"fetchFailureCount":0,"fetchFailureReason":null,"fetchMeta":null,"isInvalidated":false,"status":"success","fetchStatus":"idle"},"queryKey":["release-7059114"],"queryHash":"[\"release-7059114\"]"},{"state":{"data":{"results":[{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"},{"id":2397497,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Jax Panik","slug":"jax-panik","url":"https://api-internal.beatportprod.com/v4/catalog/artists/2397497/"}],"publish_status":"published","available_worldwide":true,"bpm":99,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:26-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313851,"image":{"id":56000063,"uri":"https://geo-media.beatport.com/image_size/1500x250/ee120cbc-429c-4ae8-8ed1-ee004b8b50f0.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/ee120cbc-429c-4ae8-8ed1-ee004b8b50f0.png"},"is_available_for_streaming":true,"is_explicit":true,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672470","key":{"camelot_number":8,"camelot_letter":"A","chord_type":{"id":1,"name":"Minor","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/1/"},"id":8,"is_sharp":false,"is_flat":false,"letter":"A","name":"A Minor","url":"https://api-internal.beatportprod.com/v4/catalog/keys/8/"},"label_track_identifier":null,"length":"3:04","length_ms":184615,"mix_name":"Original Mix","name":"Sirens In The Night","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/ee120cbc-429c-4ae8-8ed1-ee004b8b50f0.LOFI.mp3","sample_start_ms":73846,"sample_end_ms":163846,"slug":"sirens-in-the-night","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313851/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"}],"publish_status":"published","available_worldwide":true,"bpm":124,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:26-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313850,"image":{"id":56000065,"uri":"https://geo-media.beatport.com/image_size/1500x250/17a11fa9-8122-4a9d-b319-6cdbeeced8d5.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/17a11fa9-8122-4a9d-b319-6cdbeeced8d5.png"},"is_available_for_streaming":true,"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672467","key":{"camelot_number":2,"camelot_letter":"B","chord_type":{"id":2,"name":"Major","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/2/"},"id":33,"is_sharp":false,"is_flat":true,"letter":"G","name":"Gb Major","url":"https://api-internal.beatportprod.com/v4/catalog/keys/33/"},"label_track_identifier":null,"length":"3:48","length_ms":228346,"mix_name":"Original Mix","name":"I Won't","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/17a11fa9-8122-4a9d-b319-6cdbeeced8d5.LOFI.mp3","sample_start_ms":91338,"sample_end_ms":211338,"slug":"i-wont","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313850/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"}],"publish_status":"published","available_worldwide":true,"bpm":144,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:26-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313849,"image":{"id":56000066,"uri":"https://geo-media.beatport.com/image_size/1500x250/dabf3cb3-7966-4fd4-b546-3d2c9fa51421.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/dabf3cb3-7966-4fd4-b546-3d2c9fa51421.png"},"is_available_for_streaming":true,"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672463","key":{"camelot_number":4,"camelot_letter":"A","chord_type":{"id":1,"name":"Minor","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/1/"},"id":4,"is_sharp":false,"is_flat":false,"letter":"F","name":"F Minor","url":"https://api-internal.beatportprod.com/v4/catalog/keys/4/"},"label_track_identifier":null,"length":"5:09","length_ms":309532,"mix_name":"Original Mix","name":"Amber","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/dabf3cb3-7966-4fd4-b546-3d2c9fa51421.LOFI.mp3","sample_start_ms":123813,"sample_end_ms":243813,"slug":"amber","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313849/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"}],"publish_status":"published","available_worldwide":true,"bpm":130,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:25-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313848,"image":{"id":56000062,"uri":"https://geo-media.beatport.com/image_size/1500x250/08cea69e-7501-404a-891c-8fff8e7bd310.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/08cea69e-7501-404a-891c-8fff8e7bd310.png"},"is_available_for_streaming":true,"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672459","key":{"camelot_number":9,"camelot_letter":"A","chord_type":{"id":1,"name":"Minor","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/1/"},"id":9,"is_sharp":false,"is_flat":false,"letter":"E","name":"E Minor","url":"https://api-internal.beatportprod.com/v4/catalog/keys/9/"},"label_track_identifier":null,"length":"3:50","length_ms":230769,"mix_name":"Original Mix","name":"Fists in the Air","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/08cea69e-7501-404a-891c-8fff8e7bd310.LOFI.mp3","sample_start_ms":92308,"sample_end_ms":212308,"slug":"fists-in-the-air","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313848/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"},{"id":678893,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Circe Electro","slug":"circe-electro","url":"https://api-internal.beatportprod.com/v4/catalog/artists/678893/"}],"publish_status":"published","available_worldwide":true,"bpm":128,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:25-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313847,"image":{"id":56000059,"uri":"https://geo-media.beatport.com/image_size/1500x250/83ed394f-0849-4c35-9ed3-7019ef8b989d.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/83ed394f-0849-4c35-9ed3-7019ef8b989d.png"},"is_available_for_streaming":true,"is_explicit":true,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672455","key":{"camelot_number":8,"camelot_letter":"B","chord_type":{"id":2,"name":"Major","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/2/"},"id":20,"is_sharp":false,"is_flat":false,"letter":"C","name":"C Major","url":"https://api-internal.beatportprod.com/v4/catalog/keys/20/"},"label_track_identifier":null,"length":"3:33","length_ms":213230,"mix_name":"Original Mix","name":"Yasi","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/83ed394f-0849-4c35-9ed3-7019ef8b989d.LOFI.mp3","sample_start_ms":85292,"sample_end_ms":205292,"slug":"yasi","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313847/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"}],"publish_status":"published","available_worldwide":true,"bpm":130,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:25-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313846,"image":{"id":56000064,"uri":"https://geo-media.beatport.com/image_size/1500x250/7ddbe244-8380-4652-aeb3-4dc9d27eca92.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/7ddbe244-8380-4652-aeb3-4dc9d27eca92.png"},"is_available_for_streaming":true,"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672452","key":{"camelot_number":11,"camelot_letter":"B","chord_type":{"id":2,"name":"Major","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/2/"},"id":23,"is_sharp":false,"is_flat":false,"letter":"A","name":"A Major","url":"https://api-internal.beatportprod.com/v4/catalog/keys/23/"},"label_track_identifier":null,"length":"5:19","length_ms":319384,"mix_name":"Original Mix","name":"Full Tilt","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/7ddbe244-8380-4652-aeb3-4dc9d27eca92.LOFI.mp3","sample_start_ms":127754,"sample_end_ms":247754,"slug":"full-tilt","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313846/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"},{"id":678893,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Circe Electro","slug":"circe-electro","url":"https://api-internal.beatportprod.com/v4/catalog/artists/678893/"}],"publish_status":"published","available_worldwide":true,"bpm":74,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:25-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313845,"image":{"id":56000058,"uri":"https://geo-media.beatport.com/image_size/1500x250/73f63852-0e17-4652-b2a9-573eec5daff4.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/73f63852-0e17-4652-b2a9-573eec5daff4.png"},"is_available_for_streaming":true,"is_explicit":true,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672435","key":{"camelot_number":10,"camelot_letter":"B","chord_type":{"id":2,"name":"Major","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/2/"},"id":22,"is_sharp":false,"is_flat":false,"letter":"D","name":"D Major","url":"https://api-internal.beatportprod.com/v4/catalog/keys/22/"},"label_track_identifier":null,"length":"3:14","length_ms":194307,"mix_name":"Original Mix","name":"Who The Fuck is Haezer","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/73f63852-0e17-4652-b2a9-573eec5daff4.LOFI.mp3","sample_start_ms":77723,"sample_end_ms":167723,"slug":"who-the-fuck-is-haezer","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313845/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"}],"publish_status":"published","available_worldwide":true,"bpm":118,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:24-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313844,"image":{"id":56000056,"uri":"https://geo-media.beatport.com/image_size/1500x250/4667f0b5-88ed-4bae-ade7-01e884a55433.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/4667f0b5-88ed-4bae-ade7-01e884a55433.png"},"is_available_for_streaming":true,"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672432","key":{"camelot_number":12,"camelot_letter":"B","chord_type":{"id":2,"name":"Major","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/2/"},"id":24,"is_sharp":false,"is_flat":false,"letter":"E","name":"E Major","url":"https://api-internal.beatportprod.com/v4/catalog/keys/24/"},"label_track_identifier":null,"length":"3:56","length_ms":236076,"mix_name":"Original Mix","name":"Tell Me I'm Bad","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/4667f0b5-88ed-4bae-ade7-01e884a55433.LOFI.mp3","sample_start_ms":94430,"sample_end_ms":214430,"slug":"tell-me-im-bad","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313844/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"},{"id":678893,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Circe Electro","slug":"circe-electro","url":"https://api-internal.beatportprod.com/v4/catalog/artists/678893/"}],"publish_status":"published","available_worldwide":true,"bpm":98,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:24-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313843,"image":{"id":56000057,"uri":"https://geo-media.beatport.com/image_size/1500x250/5595a57e-de07-4041-a25a-d50c71d7f9da.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/5595a57e-de07-4041-a25a-d50c71d7f9da.png"},"is_available_for_streaming":true,"is_explicit":true,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672427","key":{"camelot_number":4,"camelot_letter":"A","chord_type":{"id":1,"name":"Minor","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/1/"},"id":4,"is_sharp":false,"is_flat":false,"letter":"F","name":"F Minor","url":"https://api-internal.beatportprod.com/v4/catalog/keys/4/"},"label_track_identifier":null,"length":"3:15","length_ms":195692,"mix_name":"Original Mix","name":"Gangsta Shit","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/5595a57e-de07-4041-a25a-d50c71d7f9da.LOFI.mp3","sample_start_ms":78277,"sample_end_ms":168277,"slug":"gangsta-shit","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313843/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"}],"publish_status":"published","available_worldwide":true,"bpm":130,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:24-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313842,"image":{"id":56000061,"uri":"https://geo-media.beatport.com/image_size/1500x250/62fa5d07-b4f9-4f52-93a0-d5a4ee2b3f58.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/62fa5d07-b4f9-4f52-93a0-d5a4ee2b3f58.png"},"is_available_for_streaming":true,"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672423","key":{"camelot_number":6,"camelot_letter":"B","chord_type":{"id":2,"name":"Major","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/2/"},"id":18,"is_sharp":false,"is_flat":true,"letter":"B","name":"Bb Major","url":"https://api-internal.beatportprod.com/v4/catalog/keys/18/"},"label_track_identifier":null,"length":"3:57","length_ms":237230,"mix_name":"Original Mix","name":"Anarchy!","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/62fa5d07-b4f9-4f52-93a0-d5a4ee2b3f58.LOFI.mp3","sample_start_ms":94892,"sample_end_ms":214892,"slug":"anarchy","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313842/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"}],"publish_status":"published","available_worldwide":true,"bpm":130,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:24-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313841,"image":{"id":56000055,"uri":"https://geo-media.beatport.com/image_size/1500x250/483c9422-a538-4cd2-97cc-fa106051d568.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/483c9422-a538-4cd2-97cc-fa106051d568.png"},"is_available_for_streaming":true,"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672420","key":{"camelot_number":12,"camelot_letter":"B","chord_type":{"id":2,"name":"Major","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/2/"},"id":24,"is_sharp":false,"is_flat":false,"letter":"E","name":"E Major","url":"https://api-internal.beatportprod.com/v4/catalog/keys/24/"},"label_track_identifier":null,"length":"4:11","length_ms":251076,"mix_name":"Original Mix","name":"Joey Bloom","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/483c9422-a538-4cd2-97cc-fa106051d568.LOFI.mp3","sample_start_ms":100430,"sample_end_ms":220430,"slug":"joey-bloom","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313841/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"},{"id":678893,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Circe Electro","slug":"circe-electro","url":"https://api-internal.beatportprod.com/v4/catalog/artists/678893/"}],"publish_status":"published","available_worldwide":true,"bpm":132,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:24-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313840,"image":{"id":56000060,"uri":"https://geo-media.beatport.com/image_size/1500x250/fa208d21-d8d1-40be-93c2-bcb3d64524ff.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/fa208d21-d8d1-40be-93c2-bcb3d64524ff.png"},"is_available_for_streaming":true,"is_explicit":true,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672387","key":{"camelot_number":9,"camelot_letter":"A","chord_type":{"id":1,"name":"Minor","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/1/"},"id":9,"is_sharp":false,"is_flat":false,"letter":"E","name":"E Minor","url":"https://api-internal.beatportprod.com/v4/catalog/keys/9/"},"label_track_identifier":null,"length":"4:45","length_ms":285625,"mix_name":"remix","name":"Who The Fuck is Haezer","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[{"id":24895,"image":{"id":56601932,"uri":"https://geo-media.beatport.com/image_size/590x404/20b1c07d-fc9c-44c2-a84f-0da041d0987a.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/20b1c07d-fc9c-44c2-a84f-0da041d0987a.jpg"},"name":"Cyberpunkers","slug":"cyberpunkers","url":"https://api-internal.beatportprod.com/v4/catalog/artists/24895/"}],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/fa208d21-d8d1-40be-93c2-bcb3d64524ff.LOFI.mp3","sample_start_ms":114250,"sample_end_ms":234250,"slug":"who-the-fuck-is-haezer","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313840/","is_hype":false},{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"}],"publish_status":"published","available_worldwide":true,"bpm":130,"bsrc_remixer":[],"catalog_number":"CNSLR018","current_status":{"id":10,"name":"General Content","url":"https://api-internal.beatportprod.com/v4/auxiliary/current-status/10/"},"encoded_date":"2026-06-12T15:19:23-06:00","exclusive":false,"free_downloads":[],"free_download_start_date":null,"free_download_end_date":null,"genre":{"id":96,"name":"Mainstage","slug":"mainstage","url":"https://api-internal.beatportprod.com/v4/catalog/genres/96/"},"id":29313839,"image":{"id":56000054,"uri":"https://geo-media.beatport.com/image_size/1500x250/ee206538-12aa-4ab6-b898-04336d010060.png","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/ee206538-12aa-4ab6-b898-04336d010060.png"},"is_available_for_streaming":true,"is_explicit":true,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"isrc":"GBWUL2672382","key":{"camelot_number":8,"camelot_letter":"B","chord_type":{"id":2,"name":"Major","url":"https://api-internal.beatportprod.com/v4/catalog/chord-types/2/"},"id":20,"is_sharp":false,"is_flat":false,"letter":"C","name":"C Major","url":"https://api-internal.beatportprod.com/v4/catalog/keys/20/"},"label_track_identifier":null,"length":"4:12","length_ms":252923,"mix_name":"Original Mix","name":"James Bond","new_release_date":"2026-06-29","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"publish_date":"2026-06-29","release":{"id":7059114,"name":"Little Grunts","image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"slug":"little-grunts"},"remixers":[],"sale_type":{"id":1,"name":"purchase","url":"https://api-internal.beatportprod.com/v4/auxiliary/sale-types/1/"},"sample_url":"https://geo-samples.beatport.com/track/ee206538-12aa-4ab6-b898-04336d010060.LOFI.mp3","sample_start_ms":101169,"sample_end_ms":221169,"slug":"james-bond","sub_genre":{"id":246,"name":"Electro House","slug":"electro-house","url":"https://api-internal.beatportprod.com/v4/catalog/sub-genres/246/","enabled":true},"url":"https://api-internal.beatportprod.com/v4/catalog/tracks/29313839/","is_hype":false}],"next":null,"previous":null,"count":13,"page":"1/1","per_page":100},"dataUpdateCount":1,"dataUpdatedAt":1789956527970,"error":null,"errorUpdateCount":0,"errorUpdatedAt":0,"fetchFailureCount":0,"fetchFailureReason":null,"fetchMeta":null,"isInvalidated":false,"status":"success","fetchStatus":"idle"},"queryKey":["tracks",{"release_id":7059114,"per_page":100,"page":1}],"queryHash":"[\"tracks\",{\"page\":1,\"per_page\":100,\"release_id\":7059114}]"},{"state":{"data":{"results":[{"artists":[{"id":1343,"image":{"id":56085512,"uri":"https://geo-media.beatport.com/image_size/590x404/bac7f976-def1-45cb-96ef-210c0284467b.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bac7f976-def1-45cb-96ef-210c0284467b.jpg"},"name":"JELO","slug":"jelo","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1343/"},{"id":2405400,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"J. Elles","slug":"j-elles","url":"https://api-internal.beatportprod.com/v4/catalog/artists/2405400/"}],"bpm_range":{"min":130,"max":130},"catalog_number":"883500364984","desc":null,"enabled":true,"encoded_date":"2026-06-18T04:07:04-06:00","exclusive":false,"id":7090279,"image":{"id":56151637,"uri":"https://geo-media.beatport.com/image_size/1400x1400/7dc5c878-d65d-491d-8c73-5bedf909219b.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/7dc5c878-d65d-491d-8c73-5bedf909219b.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":66449,"name":"DistroKid","image":{"id":37419647,"uri":"https://geo-media.beatport.com/image_size/500x500/20730136-73e9-4d98-ab83-bf0f82efa567.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/20730136-73e9-4d98-ab83-bf0f82efa567.jpg"},"slug":"distrokid"},"name":"Two Sketchy","new_release_date":"2026-07-17","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2026-07-17","remixers":[],"slug":"two-sketchy","track_count":1,"upc":"883500364984","updated":"2026-07-17T00:33:29-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/7090279/","is_hype":false},{"artists":[{"id":1315368,"image":{"id":48761918,"uri":"https://geo-media.beatport.com/image_size/590x404/92fa2371-c391-4c72-ab31-5f7e416d3bfb.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/92fa2371-c391-4c72-ab31-5f7e416d3bfb.jpg"},"name":"DJ Kos (US)","slug":"dj-kos-us","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1315368/"}],"bpm_range":{"min":126,"max":128},"catalog_number":"DKR0305","desc":"DIRTYKITCHENRAVE.COM","enabled":true,"encoded_date":"2026-06-03T16:25:34-06:00","exclusive":false,"id":7017803,"image":{"id":55752979,"uri":"https://geo-media.beatport.com/image_size/1400x1400/3e41ed68-f2e2-494d-b9fa-91773996881b.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/3e41ed68-f2e2-494d-b9fa-91773996881b.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":112835,"name":"DIRTY KITCHEN RAVE","image":{"id":34136849,"uri":"https://geo-media.beatport.com/image_size/500x500/0d480885-f45e-4a4f-9ad8-b468c08d80fd.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0d480885-f45e-4a4f-9ad8-b468c08d80fd.jpg"},"slug":"dirty-kitchen-rave"},"name":"Boombox Bang EP","new_release_date":"2026-07-10","override_price":null,"pre_order":false,"pre_order_date":"2026-06-12","price":{"code":"USD","symbol":"$","value":6.99,"display":"$6.99"},"price_override_firm":false,"publish_date":"2026-07-10","remixers":[],"slug":"boombox-bang-ep","track_count":5,"upc":"5054289981357","updated":"2026-07-24T00:33:22-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/7017803/","is_hype":true},{"artists":[{"id":929185,"image":{"id":28275614,"uri":"https://geo-media.beatport.com/image_size/590x404/3d45068a-d203-49d2-b9b7-75eeffed8a6a.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/3d45068a-d203-49d2-b9b7-75eeffed8a6a.jpg"},"name":"GhostMasters","slug":"ghostmasters","url":"https://api-internal.beatportprod.com/v4/catalog/artists/929185/"},{"id":1028222,"image":{"id":31652098,"uri":"https://geo-media.beatport.com/image_size/590x404/088b5df4-f9ea-4939-8f9d-4b5c822a12cd.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/088b5df4-f9ea-4939-8f9d-4b5c822a12cd.jpg"},"name":"The GrooveBand","slug":"the-grooveband","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1028222/"}],"bpm_range":{"min":123,"max":123},"catalog_number":"GR1217","desc":"Funky","enabled":true,"encoded_date":"2026-06-03T04:22:03-06:00","exclusive":false,"id":7015626,"image":{"id":55741754,"uri":"https://geo-media.beatport.com/image_size/1400x1400/52968a9b-21c5-4aa9-9c51-1548b5bc0d5a.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/52968a9b-21c5-4aa9-9c51-1548b5bc0d5a.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":15702,"name":"Guareber Recordings","image":{"id":11015514,"uri":"https://geo-media.beatport.com/image_size/500x500/76607ce1-90ab-467c-b836-448a0a561760.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/76607ce1-90ab-467c-b836-448a0a561760.jpg"},"slug":"guareber-recordings"},"name":"Drop It Low","new_release_date":"2026-07-10","override_price":null,"pre_order":false,"pre_order_date":"2026-06-12","price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2026-07-10","remixers":[],"slug":"drop-it-low","track_count":1,"upc":"5054289916519","updated":"2026-06-12T00:33:24-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/7015626/","is_hype":false},{"artists":[{"id":170336,"image":{"id":30776801,"uri":"https://geo-media.beatport.com/image_size/590x404/5a8a2045-de1d-49a4-b1b1-bfccc4304aec.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/5a8a2045-de1d-49a4-b1b1-bfccc4304aec.jpg"},"name":"Block \u0026 Crown","slug":"block-crown","url":"https://api-internal.beatportprod.com/v4/catalog/artists/170336/"}],"bpm_range":{"min":127,"max":127},"catalog_number":"RD94","desc":"Nu Disco House","enabled":true,"encoded_date":"2026-05-26T15:10:09-06:00","exclusive":false,"id":6984760,"image":{"id":55553544,"uri":"https://geo-media.beatport.com/image_size/1400x1400/0fa0c0a9-7c7d-493c-b931-f3ba97e7e35c.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0fa0c0a9-7c7d-493c-b931-f3ba97e7e35c.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":113000,"name":"Reduplicate","image":{"id":34201332,"uri":"https://geo-media.beatport.com/image_size/500x500/fc3992cf-a5eb-4445-9ee9-fb95c9e4d0aa.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/fc3992cf-a5eb-4445-9ee9-fb95c9e4d0aa.jpg"},"slug":"reduplicate"},"name":"Shoot Your Best Shot ","new_release_date":"2026-07-17","override_price":null,"pre_order":false,"pre_order_date":"2026-07-03","price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2026-07-17","remixers":[],"slug":"shoot-your-best-shot","track_count":1,"upc":"4069977410041","updated":"2026-07-03T00:33:37-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/6984760/","is_hype":false},{"artists":[{"id":1332734,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Drowning Pool","slug":"drowning-pool","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1332734/"}],"bpm_range":{"min":131,"max":131},"catalog_number":"CR10777","desc":null,"enabled":true,"encoded_date":"2026-04-14T05:16:30-06:00","exclusive":false,"id":6803768,"image":{"id":54268078,"uri":"https://geo-media.beatport.com/image_size/1400x1400/917bedaa-51fb-4bea-ba05-e9c0d2a4f63c.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/917bedaa-51fb-4bea-ba05-e9c0d2a4f63c.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":73104,"name":"Craft Recordings","image":{"id":5539566,"uri":"https://geo-media.beatport.com/image_size/500x500/cda9862c-cf92-4d13-ac65-7e9277181f51.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/cda9862c-cf92-4d13-ac65-7e9277181f51.jpg"},"slug":"craft-recordings"},"name":"Bodies (Chris Vrenna's XXX Tweaker Mix)","new_release_date":"2026-04-14","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2026-04-14","remixers":[{"id":213271,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Chris Vrenna","slug":"chris-vrenna","url":"https://api-internal.beatportprod.com/v4/catalog/artists/213271/"}],"slug":"bodies-chris-vrennas-xxx-tweaker-mix","track_count":1,"upc":"00888072781160","updated":"2026-04-14T00:32:57-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/6803768/","is_hype":false},{"artists":[{"id":9654,"image":{"id":55928806,"uri":"https://geo-media.beatport.com/image_size/590x404/8ae0d68f-93ab-42cd-8acc-7016db411e8c.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/8ae0d68f-93ab-42cd-8acc-7016db411e8c.jpg"},"name":"Digitalism","slug":"digitalism","url":"https://api-internal.beatportprod.com/v4/catalog/artists/9654/"}],"bpm_range":{"min":124,"max":124},"catalog_number":"4066004959474","desc":null,"enabled":true,"encoded_date":"2026-04-09T14:53:17-06:00","exclusive":false,"id":6786113,"image":{"id":54135365,"uri":"https://geo-media.beatport.com/image_size/1400x1400/ed68d51a-56f5-4382-991b-9c42e60894c9.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/ed68d51a-56f5-4382-991b-9c42e60894c9.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":65987,"name":"Magnetism","image":{"id":16736143,"uri":"https://geo-media.beatport.com/image_size/500x500/e5490145-a9fb-4287-9983-9440b0cef080.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/e5490145-a9fb-4287-9983-9440b0cef080.jpg"},"slug":"magnetism"},"name":"Achtung! Optimism","new_release_date":"2026-05-15","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2026-05-15","remixers":[],"slug":"achtung-optimism","track_count":1,"upc":"4066004959474","updated":"2026-05-15T00:33:44-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/6786113/","is_hype":false},{"artists":[{"id":26786,"image":{"id":42209340,"uri":"https://geo-media.beatport.com/image_size/590x404/967b18cf-2065-4777-b0aa-6c38c3de8391.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/967b18cf-2065-4777-b0aa-6c38c3de8391.jpg"},"name":"Tronik Youth","slug":"tronik-youth","url":"https://api-internal.beatportprod.com/v4/catalog/artists/26786/"},{"id":724481,"image":{"id":25329332,"uri":"https://geo-media.beatport.com/image_size/590x404/fb4b2603-72c9-4432-9e71-f3c5d4167e04.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/fb4b2603-72c9-4432-9e71-f3c5d4167e04.jpg"},"name":"Velax","slug":"velax","url":"https://api-internal.beatportprod.com/v4/catalog/artists/724481/"}],"bpm_range":{"min":125,"max":132},"catalog_number":"NEIN2616","desc":"Nein boss Tronik Youth teams up with Velax to produce three dark and brooding EBM tracks with Man2.0 and Disco Morato on remix duties","enabled":true,"encoded_date":"2026-03-25T20:16:37-06:00","exclusive":false,"id":6650876,"image":{"id":50886399,"uri":"https://geo-media.beatport.com/image_size/1400x1400/43819a27-7f3d-4fb5-b5f1-8ef7fafd0cf8.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/43819a27-7f3d-4fb5-b5f1-8ef7fafd0cf8.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":44105,"name":"Nein Records","image":{"id":10204944,"uri":"https://geo-media.beatport.com/image_size/500x500/45250b59-3bbe-4a4d-84de-37b6c7497f37.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/45250b59-3bbe-4a4d-84de-37b6c7497f37.jpg"},"slug":"nein-records"},"name":"Inner Enemy","new_release_date":"2026-04-24","override_price":null,"pre_order":false,"pre_order_date":"2026-03-27","price":{"code":"USD","symbol":"$","value":6.99,"display":"$6.99"},"price_override_firm":false,"publish_date":"2026-04-24","remixers":[{"id":573282,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Disco Morato","slug":"disco-morato","url":"https://api-internal.beatportprod.com/v4/catalog/artists/573282/"},{"id":562842,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Man2.0","slug":"man20","url":"https://api-internal.beatportprod.com/v4/catalog/artists/562842/"}],"slug":"inner-enemy","track_count":5,"upc":"5054289810787","updated":"2026-05-08T00:33:39-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/6650876/","is_hype":false},{"artists":[{"id":1168365,"image":{"id":36635450,"uri":"https://geo-media.beatport.com/image_size/590x404/853577ed-4453-4f5f-8cbd-223299ecc665.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/853577ed-4453-4f5f-8cbd-223299ecc665.jpg"},"name":"Brothas \u0026 Sistas","slug":"brothas-sistas","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1168365/"}],"bpm_range":{"min":122,"max":122},"catalog_number":"RF243","desc":"Funky House","enabled":true,"encoded_date":"2026-03-18T12:04:08-06:00","exclusive":false,"id":6472213,"image":{"id":49154405,"uri":"https://geo-media.beatport.com/image_size/1400x1400/66d3e471-447e-4c26-b474-c760a4f9b6d9.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/66d3e471-447e-4c26-b474-c760a4f9b6d9.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":115847,"name":"Radical Funk","image":{"id":35550291,"uri":"https://geo-media.beatport.com/image_size/500x500/e2d8853f-57c5-4742-baab-12a6fd04cc0a.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/e2d8853f-57c5-4742-baab-12a6fd04cc0a.jpg"},"slug":"radical-funk"},"name":"I´ll Do Anything","new_release_date":"2026-04-24","override_price":null,"pre_order":false,"pre_order_date":"2026-03-27","price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2026-04-24","remixers":[],"slug":"i-ll-do-anything","track_count":1,"upc":"5054289751769","updated":"2026-03-27T00:33:28-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/6472213/","is_hype":false},{"artists":[{"id":961,"image":{"id":12472681,"uri":"https://geo-media.beatport.com/image_size/590x404/3ec99b1f-8f78-4c02-9e42-b849ecb073b6.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/3ec99b1f-8f78-4c02-9e42-b849ecb073b6.jpg"},"name":"Demarkus Lewis","slug":"demarkus-lewis","url":"https://api-internal.beatportprod.com/v4/catalog/artists/961/"}],"bpm_range":{"min":125,"max":126},"catalog_number":"ISH064","desc":"Episode 64: The one with the old fries. How long is too long to keep french fries under a heat lamp? According to USDA guidelines...15 minutes. LOL, when I worked at a turn n burn, them fries sat in there all damn day.","enabled":true,"encoded_date":"2026-03-11T20:19:58-06:00","exclusive":false,"id":6428234,"image":{"id":48844606,"uri":"https://geo-media.beatport.com/image_size/1400x1400/9972a68d-9054-4d4e-95e6-5b964f6ddcb8.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/9972a68d-9054-4d4e-95e6-5b964f6ddcb8.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":87101,"name":"iSH","image":{"id":25452313,"uri":"https://geo-media.beatport.com/image_size/500x500/0b44bf6e-f7fd-42a2-92e1-cacd382a7347.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0b44bf6e-f7fd-42a2-92e1-cacd382a7347.jpg"},"slug":"ish"},"name":"The Heat Lamp","new_release_date":"2026-04-03","override_price":null,"pre_order":false,"pre_order_date":"2026-03-27","price":{"code":"USD","symbol":"$","value":2.98,"display":"$2.98"},"price_override_firm":false,"publish_date":"2026-04-03","remixers":[],"slug":"the-heat-lamp","track_count":2,"upc":"5054289776168","updated":"2026-04-17T00:33:35-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/6428234/","is_hype":false},{"artists":[{"id":1168365,"image":{"id":36635450,"uri":"https://geo-media.beatport.com/image_size/590x404/853577ed-4453-4f5f-8cbd-223299ecc665.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/853577ed-4453-4f5f-8cbd-223299ecc665.jpg"},"name":"Brothas \u0026 Sistas","slug":"brothas-sistas","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1168365/"}],"bpm_range":{"min":126,"max":126},"catalog_number":"RF238","desc":"Funky House","enabled":true,"encoded_date":"2026-02-11T05:00:56-07:00","exclusive":false,"id":5908600,"image":{"id":47815310,"uri":"https://geo-media.beatport.com/image_size/1400x1400/eea334c6-419b-48e2-bcca-8d6f54dfbd2e.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/eea334c6-419b-48e2-bcca-8d6f54dfbd2e.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":115847,"name":"Radical Funk","image":{"id":35550291,"uri":"https://geo-media.beatport.com/image_size/500x500/e2d8853f-57c5-4742-baab-12a6fd04cc0a.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/e2d8853f-57c5-4742-baab-12a6fd04cc0a.jpg"},"slug":"radical-funk"},"name":"Sunshine And Fun","new_release_date":"2026-03-20","override_price":null,"pre_order":false,"pre_order_date":"2026-02-20","price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2026-03-20","remixers":[],"slug":"sunshine-and-fun","track_count":1,"upc":"5054289678172","updated":"2026-02-20T00:32:41-07:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/5908600/","is_hype":false},{"artists":[{"id":1168125,"image":{"id":36893024,"uri":"https://geo-media.beatport.com/image_size/590x404/1d809093-799f-4cc9-9129-4925365e6e7b.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/1d809093-799f-4cc9-9129-4925365e6e7b.jpg"},"name":"FlashDancers","slug":"flashdancers","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1168125/"}],"bpm_range":{"min":126,"max":127},"catalog_number":"DCE001","desc":"Funky House","enabled":true,"encoded_date":"2025-12-23T17:46:36-07:00","exclusive":false,"id":5752582,"image":{"id":46766735,"uri":"https://geo-media.beatport.com/image_size/1400x1400/010de2b2-c278-4368-9ffc-0fa15483f9b8.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/010de2b2-c278-4368-9ffc-0fa15483f9b8.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":117304,"name":"Black Fridays","image":{"id":36408145,"uri":"https://geo-media.beatport.com/image_size/500x500/7805a4db-792c-44f8-88a2-6d97c29e1740.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/7805a4db-792c-44f8-88a2-6d97c29e1740.jpg"},"slug":"black-fridays"},"name":"Good Heart / Ibiza People","new_release_date":"2026-01-23","override_price":null,"pre_order":false,"pre_order_date":"2025-12-26","price":{"code":"USD","symbol":"$","value":2.98,"display":"$2.98"},"price_override_firm":false,"publish_date":"2026-01-23","remixers":[],"slug":"good-heart-ibiza-people","track_count":2,"upc":"5054289588327","updated":"2025-12-26T00:32:13-07:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/5752582/","is_hype":false},{"artists":[{"id":12620,"image":{"id":25110322,"uri":"https://geo-media.beatport.com/image_size/590x404/6c857074-a849-47aa-b20f-3c59393fe634.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/6c857074-a849-47aa-b20f-3c59393fe634.jpg"},"name":"Sonny Wharton","slug":"sonny-wharton","url":"https://api-internal.beatportprod.com/v4/catalog/artists/12620/"}],"bpm_range":{"min":128,"max":128},"catalog_number":"05025425539732","desc":null,"enabled":true,"encoded_date":"2025-11-28T21:23:41-07:00","exclusive":false,"id":5661908,"image":{"id":46204784,"uri":"https://geo-media.beatport.com/image_size/1400x1400/f7f5cf8a-7112-4006-b403-a59e8c03a15f.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/f7f5cf8a-7112-4006-b403-a59e8c03a15f.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":166397,"name":"Skint Records","image":{"id":5539566,"uri":"https://geo-media.beatport.com/image_size/500x500/cda9862c-cf92-4d13-ac65-7e9277181f51.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/cda9862c-cf92-4d13-ac65-7e9277181f51.jpg"},"slug":"skint-records"},"name":"Pandemonium","new_release_date":"2014-01-20","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2026-01-28","remixers":[],"slug":"pandemonium","track_count":1,"upc":"05025425539732","updated":"2026-08-30T10:07:35-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/5661908/","is_hype":false},{"artists":[{"id":128419,"image":{"id":5380586,"uri":"https://geo-media.beatport.com/image_size/590x404/3e5123d1-4e68-42c6-b239-9743bba684b0.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/3e5123d1-4e68-42c6-b239-9743bba684b0.jpg"},"name":"ImanoS","slug":"imanos","url":"https://api-internal.beatportprod.com/v4/catalog/artists/128419/"},{"id":141852,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Faustix","slug":"faustix","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141852/"}],"bpm_range":{"min":128,"max":128},"catalog_number":"00732183775269","desc":null,"enabled":true,"encoded_date":"2025-11-28T20:30:22-07:00","exclusive":false,"id":5661696,"image":{"id":46204260,"uri":"https://geo-media.beatport.com/image_size/1400x1400/49672194-2a60-46cd-8636-7bddbb3e0129.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/49672194-2a60-46cd-8636-7bddbb3e0129.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":166441,"name":"Red Stick","image":{"id":5539566,"uri":"https://geo-media.beatport.com/image_size/500x500/cda9862c-cf92-4d13-ac65-7e9277181f51.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/cda9862c-cf92-4d13-ac65-7e9277181f51.jpg"},"slug":"red-stick"},"name":"Ambulance (Tommie Sunshine Remix)","new_release_date":"2012-01-01","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2026-01-28","remixers":[{"id":5432,"image":{"id":11045656,"uri":"https://geo-media.beatport.com/image_size/590x404/e8ed698a-11b8-4304-854e-c756c5a32c78.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/e8ed698a-11b8-4304-854e-c756c5a32c78.jpg"},"name":"Tommie Sunshine","slug":"tommie-sunshine","url":"https://api-internal.beatportprod.com/v4/catalog/artists/5432/"}],"slug":"ambulance-tommie-sunshine-remix","track_count":1,"upc":"00732183775269","updated":"2026-07-20T05:57:37-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/5661696/","is_hype":false},{"artists":[{"id":268891,"image":{"id":55915697,"uri":"https://geo-media.beatport.com/image_size/590x404/d40f9203-09e8-4ac7-98a9-38048efc2f31.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/d40f9203-09e8-4ac7-98a9-38048efc2f31.jpg"},"name":"Louisahhh","slug":"louisahhh","url":"https://api-internal.beatportprod.com/v4/catalog/artists/268891/"}],"bpm_range":{"min":123,"max":123},"catalog_number":"04050538680928","desc":null,"enabled":true,"encoded_date":"2025-11-28T19:45:46-07:00","exclusive":false,"id":5661133,"image":{"id":46202526,"uri":"https://geo-media.beatport.com/image_size/1400x1400/cb2de2d4-c079-497b-a2c6-0ddcb3ad777c.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/cb2de2d4-c079-497b-a2c6-0ddcb3ad777c.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":166397,"name":"Skint Records","image":{"id":5539566,"uri":"https://geo-media.beatport.com/image_size/500x500/cda9862c-cf92-4d13-ac65-7e9277181f51.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/cda9862c-cf92-4d13-ac65-7e9277181f51.jpg"},"slug":"skint-records"},"name":"Love Is a Punk (Vitalic Remix)","new_release_date":"2021-04-09","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2026-01-28","remixers":[{"id":11456,"image":{"id":14716158,"uri":"https://geo-media.beatport.com/image_size/590x404/8531cb01-d38e-4f4a-9a61-34fdac49dd0d.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/8531cb01-d38e-4f4a-9a61-34fdac49dd0d.jpg"},"name":"Vitalic","slug":"vitalic","url":"https://api-internal.beatportprod.com/v4/catalog/artists/11456/"}],"slug":"love-is-a-punk-vitalic-remix","track_count":1,"upc":"04050538680928","updated":"2026-08-19T11:04:10-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/5661133/","is_hype":false},{"artists":[{"id":601197,"image":{"id":57205370,"uri":"https://geo-media.beatport.com/image_size/590x404/65122426-e47f-469b-ae20-c1790a618584.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65122426-e47f-469b-ae20-c1790a618584.jpg"},"name":"Rory Marshall","slug":"rory-marshall","url":"https://api-internal.beatportprod.com/v4/catalog/artists/601197/"},{"id":1023562,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"yanzo","slug":"yanzo","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1023562/"}],"bpm_range":{"min":68,"max":136},"catalog_number":"BUSH2415DJ","desc":null,"enabled":true,"encoded_date":"2025-10-16T04:37:57-06:00","exclusive":false,"id":5512889,"image":{"id":45311110,"uri":"https://geo-media.beatport.com/image_size/1400x1400/9223625b-2dd8-4310-9762-414eea29966c.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/9223625b-2dd8-4310-9762-414eea29966c.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":11394,"name":"Bush Records","image":{"id":16660112,"uri":"https://geo-media.beatport.com/image_size/500x500/e1a3ecee-e74b-4452-a007-c385b547cb98.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/e1a3ecee-e74b-4452-a007-c385b547cb98.jpg"},"slug":"bush-records"},"name":"Inside - EP (feat. Yanzo)","new_release_date":"2025-11-14","override_price":null,"pre_order":false,"pre_order_date":"2025-10-31","price":{"code":"USD","symbol":"$","value":2.98,"display":"$2.98"},"price_override_firm":false,"publish_date":"2025-11-14","remixers":[],"slug":"inside-ep-feat-yanzo","track_count":2,"upc":"9361385179998","updated":"2025-10-31T00:32:37-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/5512889/","is_hype":false},{"artists":[{"id":345137,"image":{"id":55957030,"uri":"https://geo-media.beatport.com/image_size/590x404/2222c2b6-8aaf-44f5-b340-28c2c7bf20bc.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/2222c2b6-8aaf-44f5-b340-28c2c7bf20bc.jpg"},"name":"Jepe","slug":"jepe","url":"https://api-internal.beatportprod.com/v4/catalog/artists/345137/"}],"bpm_range":{"min":125,"max":127},"catalog_number":"MOOD295","desc":"Jepe makes a triumphant return to the Mothership label, delivering two distinctive versions of a compelling new theme. The release, titled \"Jive on Wednesdays,\" showcases his ability to seamlessly blend the nostalgic essence of early 2000s electronic music with sleek, contemporary production techniques. Through this release, Jepe continues his signature approach of bridging musical eras—melding retro-inspired grooves with modern textures to create a sound that is both timeless and forward-thinking. Each version offers a unique interpretation, reinforcing his versatility and deep understanding of electronic music's evolving landscape.","enabled":true,"encoded_date":"2025-07-09T23:01:50-06:00","exclusive":false,"id":5171034,"image":{"id":55693836,"uri":"https://geo-media.beatport.com/image_size/1400x1400/6a5f4514-cc40-41d6-b667-93930238eb77.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/6a5f4514-cc40-41d6-b667-93930238eb77.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":1181,"name":"Moodmusic","image":{"id":28522273,"uri":"https://geo-media.beatport.com/image_size/500x500/ae4d910d-6c48-48e2-8492-21390741c146.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/ae4d910d-6c48-48e2-8492-21390741c146.jpg"},"slug":"moodmusic"},"name":"Jive On Wednesdays","new_release_date":"2025-08-15","override_price":null,"pre_order":false,"pre_order_date":"2025-08-01","price":{"code":"USD","symbol":"$","value":2.98,"display":"$2.98"},"price_override_firm":false,"publish_date":"2025-08-15","remixers":[],"slug":"jive-on-wednesdays","track_count":2,"upc":"4255785361471","updated":"2026-06-01T00:45:57-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/5171034/","is_hype":false},{"artists":[{"id":9958,"image":{"id":412634,"uri":"https://geo-media.beatport.com/image_size/590x405/ec763988-b9e5-4165-9043-3f6af535cf21.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/ec763988-b9e5-4165-9043-3f6af535cf21.jpg"},"name":"Fort Knox Five","slug":"fort-knox-five","url":"https://api-internal.beatportprod.com/v4/catalog/artists/9958/"}],"bpm_range":{"min":127,"max":127},"catalog_number":"FKX167","desc":"Fort Knox Recordings celebrated 20 years of releasing funky music In 2023, opening the vaults and inviting a new wave of producers to remix some of their classic catalog tracks. The response was overwhelming, and with continued interest, weve reopened those vaults once again. Next up in the remix series is a surefire dance floor burner: Takimba \u0026 Maxwell Cuttys fresh take on the Fort Knox Five classic, The Spirit of 75.\n\nThe Portland, Oregon-based duo, Takimba \u0026 Maxwell Cutty, have been making waves with their bumping, funk-fueled house tracks—including last years standout release, Kickin It. Takimba is known for his genre-blending sets that fuse funk, soul, hip-hop, and global rhythms, while Maxwell Cutty crafts genre-defying sonic hybrids that merge house, techno, funk, and experimental sounds. Together, theyve combined their distinct styles to flip the retro breakbeat energy of The Spirit of 75 into a funky tech-house monster.\n\nFort Knox Fives music has always been timeless and incredibly funky—one foot in the past and another in the future, says Jo Takimba. This is one of the first tracks we fell in love with over a decade ago. It came out in 2008 but pays homage to vibes and esthetic from 1970s soundtracks and chase scenes. We wanted to take things even further into the future bringing it to the dance floors of 2025 and beyond with a focus on the powerful message that is more relevant today than ever!\n\nThe T\u0026MC remix incorporates the high-energy groove, tight breakbeats, funky bass lines, and vibrant horn sections of the original—but turns up the heat with driving four-on-the-floor beats and modern production flair. Its a bold tribute to the classic track, reimagined through a contemporary electronic lens. Expect this one to be booming across festival stages all summer long.\n\nRadio mix and instrumental included.","enabled":true,"encoded_date":"2025-06-19T15:01:02-06:00","exclusive":false,"id":5140403,"image":{"id":42890928,"uri":"https://geo-media.beatport.com/image_size/1400x1400/281f71b8-5439-46c1-bde0-9ee66fb7e16b.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/281f71b8-5439-46c1-bde0-9ee66fb7e16b.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":4963,"name":"Fort Knox Recordings","image":{"id":84131,"uri":"https://geo-media.beatport.com/image_size/60x60/44a3966c-4a9e-4ae9-9acc-46bd438aa0c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/44a3966c-4a9e-4ae9-9acc-46bd438aa0c7.jpg"},"slug":"fort-knox-recordings"},"name":"The Spirit of '75 (Takimba \u0026 Maxwell Cutty Remix)","new_release_date":"2025-07-24","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":4.47,"display":"$4.47"},"price_override_firm":false,"publish_date":"2025-07-24","remixers":[{"id":1069733,"image":{"id":32766706,"uri":"https://geo-media.beatport.com/image_size/590x404/ca66228c-ef31-4252-ac52-7a2c29866f5c.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/ca66228c-ef31-4252-ac52-7a2c29866f5c.jpg"},"name":"Maxwell Cutty","slug":"maxwell-cutty","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1069733/"},{"id":1165200,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Takimba","slug":"takimba","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1165200/"}],"slug":"the-spirit-of-75-takimba-maxwell-cutty-remix","track_count":3,"upc":"855894016701","updated":"2025-07-24T00:32:51-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/5140403/","is_hype":false},{"artists":[{"id":96307,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Carli","slug":"carli","url":"https://api-internal.beatportprod.com/v4/catalog/artists/96307/"}],"bpm_range":{"min":128,"max":129},"catalog_number":"FGR081","desc":null,"enabled":true,"encoded_date":"2025-04-23T17:33:17-06:00","exclusive":false,"id":5053567,"image":{"id":42455655,"uri":"https://geo-media.beatport.com/image_size/1400x1400/c8b4242d-8860-4c19-9948-d4bc4eea3482.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/c8b4242d-8860-4c19-9948-d4bc4eea3482.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":69555,"name":"Fool's Gold Records","image":{"id":23124473,"uri":"https://geo-media.beatport.com/image_size/500x500/2d85b923-fbc9-4cae-9ed3-26aac0d6aba2.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/2d85b923-fbc9-4cae-9ed3-26aac0d6aba2.jpg"},"slug":"fools-gold-records"},"name":"Look Up","new_release_date":"2013-02-12","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":2.98,"display":"$2.98"},"price_override_firm":false,"publish_date":"2013-02-12","remixers":[],"slug":"look-up","track_count":2,"upc":"856730003633","updated":"2025-06-05T15:09:57-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/5053567/","is_hype":false},{"artists":[{"id":9267,"image":{"id":4650758,"uri":"https://geo-media.beatport.com/image_size/590x404/0b605ad5-1c75-47ed-90f9-52a3ebc3489d.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0b605ad5-1c75-47ed-90f9-52a3ebc3489d.jpg"},"name":"Sinden","slug":"sinden","url":"https://api-internal.beatportprod.com/v4/catalog/artists/9267/"},{"id":101231,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"The Count","slug":"the-count","url":"https://api-internal.beatportprod.com/v4/catalog/artists/101231/"}],"bpm_range":{"min":122,"max":127},"catalog_number":"FGR023","desc":null,"enabled":true,"encoded_date":"2025-04-23T10:55:32-06:00","exclusive":false,"id":5052869,"image":{"id":55277811,"uri":"https://geo-media.beatport.com/image_size/1400x1400/c0334e82-046d-4b1b-977f-f0d86517511a.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/c0334e82-046d-4b1b-977f-f0d86517511a.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":69555,"name":"Fool's Gold Records","image":{"id":23124473,"uri":"https://geo-media.beatport.com/image_size/500x500/2d85b923-fbc9-4cae-9ed3-26aac0d6aba2.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/2d85b923-fbc9-4cae-9ed3-26aac0d6aba2.jpg"},"slug":"fools-gold-records"},"name":"Mega","new_release_date":"2025-04-25","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":5.99,"display":"$5.99"},"price_override_firm":false,"publish_date":"2025-04-25","remixers":[{"id":67354,"image":{"id":9713523,"uri":"https://geo-media.beatport.com/image_size/590x404/8b7b1004-1c34-4796-bd1b-db446f73ce31.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/8b7b1004-1c34-4796-bd1b-db446f73ce31.jpg"},"name":"Jokers Of The Scene","slug":"jokers-of-the-scene","url":"https://api-internal.beatportprod.com/v4/catalog/artists/67354/"},{"id":99846,"image":{"id":8743865,"uri":"https://geo-media.beatport.com/image_size/590x404/6cb5759e-c6a2-4721-8ecc-6d84ac3e246c.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/6cb5759e-c6a2-4721-8ecc-6d84ac3e246c.jpg"},"name":"Harvard Bass","slug":"harvard-bass","url":"https://api-internal.beatportprod.com/v4/catalog/artists/99846/"}],"slug":"mega","track_count":4,"upc":"810523014930","updated":"2026-05-14T10:13:58-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/5052869/","is_hype":false},{"artists":[{"id":25041,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Cubic","slug":"cubic","url":"https://api-internal.beatportprod.com/v4/catalog/artists/25041/"}],"bpm_range":{"min":126,"max":134},"catalog_number":"AM1327CD","desc":null,"enabled":true,"encoded_date":"2024-03-25T18:05:22-06:00","exclusive":false,"id":4507962,"image":{"id":38539836,"uri":"https://geo-media.beatport.com/image_size/1400x1400/42c78e42-6f52-4b34-93b1-5a51f0c31d3b.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/42c78e42-6f52-4b34-93b1-5a51f0c31d3b.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":5055,"name":"Alfa Matrix","image":{"id":5130873,"uri":"https://geo-media.beatport.com/image_size/500x500/9587733d-9366-47b5-a633-8bc48807204d.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/9587733d-9366-47b5-a633-8bc48807204d.jpg"},"slug":"alfa-matrix"},"name":"Back To Basic","new_release_date":"2024-05-24","override_price":null,"pre_order":false,"pre_order_date":"2024-04-25","price":{"code":"USD","symbol":"$","value":17.88,"display":"$17.88"},"price_override_firm":false,"publish_date":"2024-05-24","remixers":[],"slug":"back-to-basic","track_count":12,"upc":"882951032725","updated":"2024-04-25T00:11:11-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/4507962/","is_hype":false},{"artists":[{"id":16885,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Rotersand","slug":"rotersand","url":"https://api-internal.beatportprod.com/v4/catalog/artists/16885/"},{"id":368763,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Centhron","slug":"centhron","url":"https://api-internal.beatportprod.com/v4/catalog/artists/368763/"}],"bpm_range":{"min":130,"max":130},"catalog_number":"41697","desc":null,"enabled":true,"encoded_date":"2023-12-11T06:23:04-07:00","exclusive":false,"id":4372689,"image":{"id":36920097,"uri":"https://geo-media.beatport.com/image_size/1400x1400/00006bbd-1a50-42fd-8ad9-8ac918dd7225.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/00006bbd-1a50-42fd-8ad9-8ac918dd7225.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":91131,"name":"Scanner","image":{"id":26910232,"uri":"https://geo-media.beatport.com/image_size/500x500/236b35e0-dace-4f5f-ad13-ddc287687a32.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/236b35e0-dace-4f5f-ad13-ddc287687a32.jpg"},"slug":"scanner"},"name":"Krampus (Rotersand 2023 Remix)","new_release_date":"2023-12-22","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2023-12-22","remixers":[{"id":16885,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Rotersand","slug":"rotersand","url":"https://api-internal.beatportprod.com/v4/catalog/artists/16885/"}],"slug":"krampus-rotersand-2023-remix","track_count":1,"upc":"197190618563","updated":"2023-12-22T00:35:34-07:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/4372689/","is_hype":false},{"artists":[{"id":1972,"image":{"id":47188473,"uri":"https://geo-media.beatport.com/image_size/590x404/11569f19-f5c2-467a-ab0b-873c341bb5ce.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/11569f19-f5c2-467a-ab0b-873c341bb5ce.jpg"},"name":"Roland Clark","slug":"roland-clark","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1972/"},{"id":405820,"image":{"id":26899034,"uri":"https://geo-media.beatport.com/image_size/590x404/996a8bf6-429c-459c-95bb-22a7600e813c.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/996a8bf6-429c-459c-95bb-22a7600e813c.jpg"},"name":"Ant LaRock","slug":"ant-larock","url":"https://api-internal.beatportprod.com/v4/catalog/artists/405820/"}],"bpm_range":{"min":127,"max":127},"catalog_number":"BHD360","desc":"Written \u0026 Produced By Roland Clark \u0026 Ant LaRock\nBlockhead Recordings (P) \u0026 (C)\nAdditional Production By The Deepshakerz\n\nAnt LaRock: ASCAP\nIPI Name Number\n816822923\n\nPublishing:\nANT LAROCK PRODUCTIONS\nASCAP\nIPI Name Number:\n798888334\n\nWriter Roland Clark:\nASCAP\n127328679\n\nRoland Clark Publishing:\nNash Media Services ASCAP\nIPI Name Number:\n818647408\n\nRoland Clark \u0026 Ant LaRock - I'm Not A Plugin (The Deepshakerz Remix) - ISRC # QMUDV2300646\nRoland Clark \u0026 Ant LaRock - I'm Not A Plugin (The Deepshakerz Dub Mix) - ISRC # QMUDV23006467","enabled":true,"encoded_date":"2023-08-23T12:03:51-06:00","exclusive":false,"id":4242386,"image":{"id":35469106,"uri":"https://geo-media.beatport.com/image_size/1400x1400/7930eb8f-8668-49c2-ad54-bca7b1ecc2b5.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/7930eb8f-8668-49c2-ad54-bca7b1ecc2b5.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":1781,"name":"Blockhead Recordings","image":{"id":5335694,"uri":"https://geo-media.beatport.com/image_size/500x500/f0f7d037-6467-493f-910f-1202bb718aa9.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/f0f7d037-6467-493f-910f-1202bb718aa9.jpg"},"slug":"blockhead-recordings"},"name":"I'm Not A Plugin","new_release_date":"2023-09-08","override_price":null,"pre_order":false,"pre_order_date":"2023-08-11","price":{"code":"USD","symbol":"$","value":2.98,"display":"$2.98"},"price_override_firm":false,"publish_date":"2023-09-08","remixers":[{"id":144401,"image":{"id":48761994,"uri":"https://geo-media.beatport.com/image_size/590x404/bb5b9877-a48f-4a9f-8799-7811c82651cb.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb5b9877-a48f-4a9f-8799-7811c82651cb.jpg"},"name":"The Deepshakerz","slug":"the-deepshakerz","url":"https://api-internal.beatportprod.com/v4/catalog/artists/144401/"}],"slug":"im-not-a-plugin","track_count":2,"upc":"5054287627912","updated":"2023-08-24T00:10:10-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/4242386/","is_hype":false},{"artists":[{"id":114805,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Fire Flowerz","slug":"fire-flowerz","url":"https://api-internal.beatportprod.com/v4/catalog/artists/114805/"},{"id":137104,"image":{"id":16279870,"uri":"https://geo-media.beatport.com/image_size/590x404/fc9053a0-0b6e-4643-a8ce-58221c184e13.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/fc9053a0-0b6e-4643-a8ce-58221c184e13.jpg"},"name":"Birdee","slug":"birdee","url":"https://api-internal.beatportprod.com/v4/catalog/artists/137104/"}],"bpm_range":{"min":128,"max":128},"catalog_number":"MFH128","desc":null,"enabled":true,"encoded_date":"2023-06-09T05:23:27-06:00","exclusive":false,"id":4158480,"image":{"id":34585510,"uri":"https://geo-media.beatport.com/image_size/1400x1400/2e2d3dbb-3474-4a8d-85bc-8b61206bb33d.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/2e2d3dbb-3474-4a8d-85bc-8b61206bb33d.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":2260,"name":"MofoHifi Records","image":{"id":5274147,"uri":"https://geo-media.beatport.com/image_size/500x500/d33c73e1-14b3-4724-a3fb-484d28aa8114.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/d33c73e1-14b3-4724-a3fb-484d28aa8114.jpg"},"slug":"mofohifi-records"},"name":"When The Evening Comes","new_release_date":"2023-06-16","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":2.98,"display":"$2.98"},"price_override_firm":false,"publish_date":"2023-06-16","remixers":[{"id":1104395,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"MofoHifi","slug":"mofohifi","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1104395/"}],"slug":"when-the-evening-comes","track_count":2,"upc":"3617223046332","updated":"2023-06-16T00:48:52-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/4158480/","is_hype":false},{"artists":[{"id":1087037,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"VON BON","slug":"von-bon","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1087037/"}],"bpm_range":{"min":128,"max":128},"catalog_number":"CAT694773","desc":null,"enabled":true,"encoded_date":"2022-10-12T14:36:03-06:00","exclusive":false,"id":3900717,"image":{"id":32349893,"uri":"https://geo-media.beatport.com/image_size/1400x1400/6e6fa7e3-441e-4952-bc28-50f8dc367a97.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/6e6fa7e3-441e-4952-bc28-50f8dc367a97.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":32248,"name":"Gurl Tok Recordings","image":{"id":11999604,"uri":"https://geo-media.beatport.com/image_size/500x500/c2a7e4f6-c967-4cce-9401-f837ab0722a6.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/c2a7e4f6-c967-4cce-9401-f837ab0722a6.jpg"},"slug":"gurl-tok-recordings"},"name":"Squishi","new_release_date":"2022-11-12","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2022-11-12","remixers":[],"slug":"squishi","track_count":1,"upc":"197077431759","updated":"2022-11-12T00:08:18-07:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/3900717/","is_hype":false},{"artists":[{"id":917469,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"VOLTRVX","slug":"voltrvx","url":"https://api-internal.beatportprod.com/v4/catalog/artists/917469/"}],"bpm_range":{"min":128,"max":128},"catalog_number":"CAT630828","desc":"","enabled":true,"encoded_date":"2022-04-27T14:52:35-06:00","exclusive":false,"id":3732144,"image":{"id":31179687,"uri":"https://geo-media.beatport.com/image_size/1400x1400/22a6b3cf-aa8d-4eec-bc4e-a5b3da6118cc.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/22a6b3cf-aa8d-4eec-bc4e-a5b3da6118cc.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":32248,"name":"Gurl Tok Recordings","image":{"id":11999604,"uri":"https://geo-media.beatport.com/image_size/500x500/c2a7e4f6-c967-4cce-9401-f837ab0722a6.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/c2a7e4f6-c967-4cce-9401-f837ab0722a6.jpg"},"slug":"gurl-tok-recordings"},"name":"SHOW ME LOVE","new_release_date":"2022-07-01","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2022-07-01","remixers":[],"slug":"show-me-love","track_count":1,"upc":"195729684195","updated":"2022-07-01T01:04:30-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/3732144/","is_hype":false},{"artists":[{"id":668702,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Taradu","slug":"taradu","url":"https://api-internal.beatportprod.com/v4/catalog/artists/668702/"}],"bpm_range":{"min":122,"max":128},"catalog_number":"BLV9997050","desc":null,"enabled":true,"encoded_date":"2022-01-08T21:17:56-07:00","exclusive":false,"id":3617828,"image":{"id":30270454,"uri":"https://geo-media.beatport.com/image_size/1400x1400/55ea8e0f-8af6-4a2d-b448-3fe102c4c5be.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/55ea8e0f-8af6-4a2d-b448-3fe102c4c5be.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":53101,"name":"Sound Designer","image":{"id":12650079,"uri":"https://geo-media.beatport.com/image_size/500x500/c18fb682-0ed2-4be1-8340-78df13c7b167.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/c18fb682-0ed2-4be1-8340-78df13c7b167.jpg"},"slug":"sound-designer"},"name":"Spooky Scary Skeletons","new_release_date":"2022-02-04","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":8.99,"display":"$8.99"},"price_override_firm":false,"publish_date":"2022-02-04","remixers":[],"slug":"spooky-scary-skeletons","track_count":10,"upc":"3616843334713","updated":"2026-06-08T22:53:53-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/3617828/","is_hype":false},{"artists":[{"id":920078,"image":{"id":42738007,"uri":"https://geo-media.beatport.com/image_size/590x404/738e2144-9667-470e-8392-4af10ef039a9.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/738e2144-9667-470e-8392-4af10ef039a9.jpg"},"name":"FunkyBitz","slug":"funkybitz","url":"https://api-internal.beatportprod.com/v4/catalog/artists/920078/"},{"id":1008780,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"FUNKKILLER","slug":"funkkiller","url":"https://api-internal.beatportprod.com/v4/catalog/artists/1008780/"}],"bpm_range":{"min":135,"max":135},"catalog_number":"DLR295","desc":"DIABLO LOCO RECORDS THE TRUTH BEHIND THE MASK\n\nhttp://soundcloud.com/diablo-loco-records\nhttp://www.discodistribution.com","enabled":true,"encoded_date":"2021-08-31T03:31:59-06:00","exclusive":false,"id":3494945,"image":{"id":29328941,"uri":"https://geo-media.beatport.com/image_size/1400x1400/a60bef35-5570-461c-a7c5-64659322c05f.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/a60bef35-5570-461c-a7c5-64659322c05f.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":18788,"name":"Diablo Loco","image":{"id":10563260,"uri":"https://geo-media.beatport.com/image_size/500x500/fa949d77-2dbc-443a-8fa9-5d7e7a9a82c4.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/fa949d77-2dbc-443a-8fa9-5d7e7a9a82c4.jpg"},"slug":"diablo-loco"},"name":"The Bitches","new_release_date":"2021-09-03","override_price":null,"pre_order":false,"pre_order_date":"2021-08-06","price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2021-09-03","remixers":[],"slug":"the-bitches","track_count":1,"upc":"0794020060617","updated":"2021-09-17T01:02:37-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/3494945/","is_hype":false},{"artists":[{"id":486835,"image":{"id":28688689,"uri":"https://geo-media.beatport.com/image_size/590x404/6ea9d626-a572-45a6-835f-708c64fb77ac.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/6ea9d626-a572-45a6-835f-708c64fb77ac.jpg"},"name":"The Golden Pony","slug":"the-golden-pony","url":"https://api-internal.beatportprod.com/v4/catalog/artists/486835/"}],"bpm_range":{"min":124,"max":124},"catalog_number":"NN158","desc":null,"enabled":true,"encoded_date":"2021-05-03T16:46:23-06:00","exclusive":false,"id":3382871,"image":{"id":28518145,"uri":"https://geo-media.beatport.com/image_size/1400x1400/6e4aed7e-7813-4096-8c19-9e7e9b502ee4.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/6e4aed7e-7813-4096-8c19-9e7e9b502ee4.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":11919,"name":"Dim Mak Records","image":{"id":24207715,"uri":"https://geo-media.beatport.com/image_size/500x500/8cfc69d2-af86-4e18-afaa-2d10f8e1f438.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/8cfc69d2-af86-4e18-afaa-2d10f8e1f438.jpg"},"slug":"dim-mak-records"},"name":"Say Wuttt?!","new_release_date":"2021-05-11","override_price":null,"pre_order":false,"pre_order_date":"2021-05-04","price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2021-05-11","remixers":[],"slug":"say-wuttt","track_count":1,"upc":"810012539951","updated":"2021-05-07T12:04:35-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/3382871/","is_hype":false},{"artists":[{"id":440381,"image":{"id":19950025,"uri":"https://geo-media.beatport.com/image_size/590x404/b5141dc5-2fd2-4731-bd3c-11f25849b415.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/b5141dc5-2fd2-4731-bd3c-11f25849b415.jpg"},"name":"United States Beat Squad","slug":"united-states-beat-squad","url":"https://api-internal.beatportprod.com/v4/catalog/artists/440381/"}],"bpm_range":{"min":128,"max":128},"catalog_number":"DLR240","desc":"DIABLO LOCO RECORDS is the new quality label focused on Tech-Funk, Electro-House, Tech-Breaks sound by top artists of the international scene. Inspired by the traditional Mexican wrestling culture and the famous Luchadores the label aim to deliver top class singles, remixes, compilations and design!\n\nUNITED STATES BEAT SQUAD aka \"El Magnifico Grande\" on fire! The mighty wrestler was born in a mysterious village deep in the Amazon forest but he was taken by force from there and arrived to USA as a small child. He learned Lucha Libre fighting by a Mexican teacher name \"Loco Pequeno\" and since then he never looked back. He's a mean funk machine and his beats are really tight and awesome funky. This is another dancefloor destroyer single for our label and is full power and Lucha energy all around. Stunning Lucha Breaks style in ya face! Press, play and enjoy the magic of \"This Is Noise\"!!!\n\n\n1.UNITED STATES BEAT SQUAD \"This Is Noise\"\n\nDIABLO LOCO RECORDS \"THE TRUTH BEHIND THE MASK\"\nhttps://www.beatport.com/label/diablo-loco/18788 \nhttp://soundcloud.com/diablo-loco-records\nhttp://www.discodistribution.com\nhttps://www.beatport.com/artist/united-states-beat-squad/440381\n","enabled":true,"encoded_date":"2020-02-20T14:55:28-07:00","exclusive":false,"id":2867333,"image":{"id":24315211,"uri":"https://geo-media.beatport.com/image_size/1400x1400/a1862f32-2050-462d-be87-674f75eb5929.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/a1862f32-2050-462d-be87-674f75eb5929.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":18788,"name":"Diablo Loco","image":{"id":10563260,"uri":"https://geo-media.beatport.com/image_size/500x500/fa949d77-2dbc-443a-8fa9-5d7e7a9a82c4.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/fa949d77-2dbc-443a-8fa9-5d7e7a9a82c4.jpg"},"slug":"diablo-loco"},"name":"This Is Noise","new_release_date":"2020-03-02","override_price":"0.00","pre_order":false,"pre_order_date":"2020-02-17","price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2020-03-02","remixers":[],"slug":"this-is-noise","track_count":1,"upc":"0794020056375","updated":"2020-03-16T00:13:01-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/2867333/","is_hype":false},{"artists":[{"id":747949,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"StunBreaks","slug":"stunbreaks","url":"https://api-internal.beatportprod.com/v4/catalog/artists/747949/"}],"bpm_range":{"min":134,"max":134},"catalog_number":"DLR234","desc":"DIABLO LOCO RECORDS is the new quality label focused on Tech-Funk, Electro-House, Tech-Breaks sound by top artists of the international scene. Inspired by the traditional Mexican wrestling culture and the famous Luchadores the label aim to deliver top class singles, remixes, compilations and design!\n\nSTUNBREAKS aka Demonio Rojo is a proud member of the Luchadores League Of The Extraordinary Gentlemen. He's the league's token smooth operator, he is the most stylish of the bunch and has no trouble picking up women despite always wearing a dorky mask. He claims to have developed a technique that allows him to date three women at once, without making any of them question his fidelity. Has trouble maintaining a relationship over long periods of time but his beatz n' pieces are so tight, broken and solid that all beautiful senoritas love him to death!! This is his second single for Diablo Loco Records and he's ready to set all Lucha Libre community on fire once again!\n\nDIABLO LOCO RECORDS \"THE TRUTH BEHIND THE MASK\"\nPLEASE SEND US YOUR FEEDBACK…..\nhttps://www.beatport.com/label/diablo-loco/18788 \nhttp://soundcloud.com/diablo-loco-records\nhttp://www.discodistribution.com\nhttps://www.beatport.com/artist/stunbreaks/747949 \n","enabled":true,"encoded_date":"2019-12-13T16:33:36-07:00","exclusive":false,"id":2802469,"image":{"id":23706054,"uri":"https://geo-media.beatport.com/image_size/1400x1400/38851708-02e0-4fc9-a2e7-68913eeeccec.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/38851708-02e0-4fc9-a2e7-68913eeeccec.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":18788,"name":"Diablo Loco","image":{"id":10563260,"uri":"https://geo-media.beatport.com/image_size/500x500/fa949d77-2dbc-443a-8fa9-5d7e7a9a82c4.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/fa949d77-2dbc-443a-8fa9-5d7e7a9a82c4.jpg"},"slug":"diablo-loco"},"name":"Tik Tak Boom","new_release_date":"2019-12-30","override_price":"0.00","pre_order":false,"pre_order_date":"2019-12-16","price":{"code":"USD","symbol":"$","value":1.49,"display":"$1.49"},"price_override_firm":false,"publish_date":"2019-12-30","remixers":[],"slug":"tik-tak-boom","track_count":1,"upc":"0794020055910","updated":"2020-01-13T00:11:36-07:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/2802469/","is_hype":false},{"artists":[{"id":241813,"image":{"id":6122844,"uri":"https://geo-media.beatport.com/image_size/590x404/011b1e82-41fb-435f-a961-a1fec6e528bd.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/011b1e82-41fb-435f-a961-a1fec6e528bd.jpg"},"name":"Pegboard Nerds","slug":"pegboard-nerds","url":"https://api-internal.beatportprod.com/v4/catalog/artists/241813/"},{"id":196731,"image":{"id":7571648,"uri":"https://geo-media.beatport.com/image_size/590x404/9632b1c1-ddf6-4e88-a092-50a3eead8a35.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/9632b1c1-ddf6-4e88-a092-50a3eead8a35.jpg"},"name":"Stereotronique","slug":"stereotronique","url":"https://api-internal.beatportprod.com/v4/catalog/artists/196731/"},{"id":254381,"image":{"id":18138157,"uri":"https://geo-media.beatport.com/image_size/590x404/eceb2ca0-9429-4040-ad9a-cc48301c7973.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/eceb2ca0-9429-4040-ad9a-cc48301c7973.jpg"},"name":"Throttle","slug":"throttle","url":"https://api-internal.beatportprod.com/v4/catalog/artists/254381/"},{"id":263147,"image":{"id":5921789,"uri":"https://geo-media.beatport.com/image_size/590x404/c4a06aa8-6d02-45b8-a606-bb5597c8a361.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/c4a06aa8-6d02-45b8-a606-bb5597c8a361.jpg"},"name":"Stephen Walking","slug":"stephen-walking","url":"https://api-internal.beatportprod.com/v4/catalog/artists/263147/"},{"id":269576,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Soulero","slug":"soulero","url":"https://api-internal.beatportprod.com/v4/catalog/artists/269576/"},{"id":243370,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Noisestorm","slug":"noisestorm","url":"https://api-internal.beatportprod.com/v4/catalog/artists/243370/"},{"id":182191,"image":{"id":9646733,"uri":"https://geo-media.beatport.com/image_size/590x404/50fed937-fc43-4bd2-9764-17ce2d873339.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/50fed937-fc43-4bd2-9764-17ce2d873339.jpg"},"name":"Insan3lik3","slug":"insan3lik3","url":"https://api-internal.beatportprod.com/v4/catalog/artists/182191/"},{"id":214036,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Rezonate","slug":"rezonate","url":"https://api-internal.beatportprod.com/v4/catalog/artists/214036/"},{"id":786390,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"KayoszX","slug":"kayoszx","url":"https://api-internal.beatportprod.com/v4/catalog/artists/786390/"},{"id":20213,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Televisor","slug":"televisor","url":"https://api-internal.beatportprod.com/v4/catalog/artists/20213/"},{"id":245194,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Arion","slug":"arion","url":"https://api-internal.beatportprod.com/v4/catalog/artists/245194/"},{"id":153587,"image":{"id":5851308,"uri":"https://geo-media.beatport.com/image_size/590x404/b0307aa6-5021-49cd-a16e-8e569987e5a9.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/b0307aa6-5021-49cd-a16e-8e569987e5a9.jpg"},"name":"Matduke","slug":"matduke","url":"https://api-internal.beatportprod.com/v4/catalog/artists/153587/"}],"bpm_range":{"min":125,"max":130},"catalog_number":"MCB002","desc":"","enabled":true,"encoded_date":"2019-06-25T13:13:05-06:00","exclusive":false,"id":2640537,"image":{"id":23169953,"uri":"https://geo-media.beatport.com/image_size/1400x1400/88ee42f1-bce8-41d2-85dc-c153705de000.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/88ee42f1-bce8-41d2-85dc-c153705de000.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":23412,"name":"Monstercat","image":{"id":7380940,"uri":"https://geo-media.beatport.com/image_size/500x500/dce9e06d-3199-4aac-8644-441ba1b3b0b9.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/dce9e06d-3199-4aac-8644-441ba1b3b0b9.jpg"},"slug":"monstercat"},"name":"Monstercat - Best of Electro Vol. 1","new_release_date":"2012-05-29","override_price":"9.99","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":9.99,"display":"$9.99"},"price_override_firm":true,"publish_date":"2012-05-29","remixers":[],"slug":"monstercat-best-of-electro-vol-1","track_count":15,"upc":"859708332285","updated":"2019-10-25T18:53:57-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/2640537/","is_hype":false},{"artists":[{"id":33938,"image":{"id":5046383,"uri":"https://geo-media.beatport.com/image_size/590x404/2741933e-e715-4331-9375-690eeb6fd3bc.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/2741933e-e715-4331-9375-690eeb6fd3bc.jpg"},"name":"Electric Soulside","slug":"electric-soulside","url":"https://api-internal.beatportprod.com/v4/catalog/artists/33938/"}],"bpm_range":{"min":128,"max":128},"catalog_number":"BA057","desc":"Electric Soulside need no introduction, for a long time this duo hailing out of Belgium has been at the forefront of the Electro House movement and their versatile approach to producing makes them one of those producers you cant quiet put a finger on.\n\nThis time around they mix funky sounds, heavy basslines and hard hitting drums to create a pair of Electro House gems that will sure captivate clubs and fans alike. \n\nBoth, Trisco and Speed Up need to be included in your favorite collections, there is no logical reason why you would miss on this tracks!","enabled":true,"encoded_date":"2011-05-10T20:22:52-06:00","exclusive":false,"id":369900,"image":{"id":2829422,"uri":"https://geo-media.beatport.com/image_size/500x500/0eb652ae-8d82-418b-8e1b-8c0353cc5cf5.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0eb652ae-8d82-418b-8e1b-8c0353cc5cf5.jpg"},"is_explicit":false,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":14128,"name":"Big Alliance Records","image":{"id":6029544,"uri":"https://geo-media.beatport.com/image_size/500x500/c42de106-9bd5-4526-a54f-a12819b374ca.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/c42de106-9bd5-4526-a54f-a12819b374ca.jpg"},"slug":"big-alliance-records"},"name":"Trisco EP","new_release_date":"2011-05-23","override_price":"0.00","pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":2.98,"display":"$2.98"},"price_override_firm":false,"publish_date":"2011-05-23","remixers":[],"slug":"trisco-ep","track_count":2,"upc":"5052653066846","updated":"2015-04-12T20:51:43-06:00","url":"https://api-internal.beatportprod.com/v4/catalog/releases/369900/","is_hype":false}],"next":null,"previous":null,"count":32,"page":"1/1","per_page":50},"dataUpdateCount":1,"dataUpdatedAt":1789956528268,"error":null,"errorUpdateCount":0,"errorUpdatedAt":0,"fetchFailureCount":0,"fetchFailureReason":null,"fetchMeta":null,"isInvalidated":false,"status":"success","fetchStatus":"idle"},"queryKey":["release-7059114-recommendations"],"queryHash":"[\"release-7059114-recommendations\"]"}]},"anonSession":{"access_token":"eyJ0eXAiOiAiSldUIiwgImFsZyI6ICJSUzI1NiIsICJraWQiOiAiYldZY2FnNk1ERTdreTFteDgxTUdpbjd5OGJheWdLRWFwQ2hWWlJpcjkwQSJ9.eyJqdGkiOiAiZTBhNTliOTEtNDNiYS00NDQwLTlhMTktNDA2YTM4NjQ0OTA3IiwgInN1YiI6ICJlSFRvTkQzbHN2MVhkcGE2NDVEZEY0d3dCVWNlQm5pdUtQVDJkVUIxIiwgImNsaWVudF9pZCI6ICJlSFRvTkQzbHN2MVhkcGE2NDVEZEY0d3dCVWNlQm5pdUtQVDJkVUIxIiwgImF1ZCI6ICJ1cm46YnA6aWRlbnRpdHktc2VydmljZSIsICJpc3MiOiAidXJuOmJwOmlkZW50aXR5LXNlcnZpY2UiLCAiaWF0IjogMTc4OTk1NTk5MCwgImV4cCI6IDE3ODk5NTY1OTAsICJzY29wZSI6ICJhcHA6cHJvc3RvcmUgdXNlcjphbm9uIn0.yzQACeD4pWd7Nii-xeDHK8ZF-V-VA4EyyDTtV2q3XTI5B2JtcMLtg_kzXioldEGVd82IEygMQ6orMtsdR3iNnZlYvq1fVOZ2fw5xHKdjAxnMoFGR3TPyUxPKlw12eW24SEI0w-Wg3X6ffCUW4ZGe2NFUpruQjcX1dZX20mUOAfzUZEG89T2azhEZSqD1O-WpKYPSlccGD8VPFkO33c93jlC-raezdFGq_tRu76Y59byJO_dLjNG69MPNaqpYGlgARmMb0YeHXWgIs9BsY62pXrOaKr1KqdF4DBhUNm-bS6R6Vco34IOPLnaLUmaVYZ1_iOSkIDAhXn3iuIyOy6_9QYM5jtCR011M04FAt7fmeTGmsuOTtTZrQxpviiazJlM8GTNr_7kpKM_wqCu3jc6wN33sJKNd1W_45COYhBsuONJ-oPiUpUFQugTWXVM4dKxaNILBns21rwLEwaqDRFNrGitzYte7uWmngGI4LaqizMupHEYvMohnJc5xBDM3s-ekUaBbtkqpIHoephP1E_rSv4eFufKJOcemFqwAp_jJN6hjEBan9NkK4v-fUv42-7ok_ApiQkBxgAbNFGjRXcOWl-MVhCAOGWpTpHrPwfjkWozcWcCzS5pcF5YrNTeqRYyK8cYz4-p3nekySUALlmxlRTotbMd6ppoepA_QcH8DOGY","expires_in":600,"token_type":"Bearer","scope":"app:prostore user:anon","create_date":"Mon Sep 21 2026 01:59:50 GMT+0000 (Coordinated Universal Time)","expirationTime":1789956590698},"release":{"artists":[{"id":141373,"image":{"id":5867376,"uri":"https://geo-media.beatport.com/image_size/590x404/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/396ac0d0-7bb0-44f4-a62c-ccae3bfa3355.jpg"},"name":"Haezer","slug":"haezer","url":"https://api-internal.beatportprod.com/v4/catalog/artists/141373/"},{"id":678893,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Circe Electro","slug":"circe-electro","url":"https://api-internal.beatportprod.com/v4/catalog/artists/678893/"},{"id":2397497,"image":{"id":5539565,"uri":"https://geo-media.beatport.com/image_size/590x404/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/0dc61986-bccf-49d4-8fad-6b147ea8f327.jpg"},"name":"Jax Panik","slug":"jax-panik","url":"https://api-internal.beatportprod.com/v4/catalog/artists/2397497/"}],"bpm_range":{"min":74,"max":144},"catalog_number":"CNSLR018","desc":null,"enabled":true,"encoded_date":"2026-06-12T15:19:23-06:00","exclusive":false,"grid":null,"id":7059114,"image":{"id":55999350,"uri":"https://geo-media.beatport.com/image_size/1400x1400/bb7f6646-3825-407e-9c7f-9319559230c7.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/bb7f6646-3825-407e-9c7f-9319559230c7.jpg"},"is_available_for_streaming":true,"is_explicit":true,"is_ugc_remix":false,"is_dj_edit":false,"is_dj_version":false,"label":{"id":71710,"name":"CNSLR Recordings","image":{"id":19628885,"uri":"https://geo-media.beatport.com/image_size/500x500/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/65bd2542-fc7f-485c-8571-14cf5c3ab0ed.jpg"},"slug":"cnslr-recordings"},"name":"Little Grunts","new_release_date":"2026-06-29","override_price":null,"pre_order":false,"pre_order_date":null,"price":{"code":"USD","symbol":"$","value":8.99,"display":"$8.99"},"price_override_firm":false,"publish_date":"2026-06-29","remixers":[{"id":24895,"image":{"id":56601932,"uri":"https://geo-media.beatport.com/image_size/590x404/20b1c07d-fc9c-44c2-a84f-0da041d0987a.jpg","dynamic_uri":"https://geo-media.beatport.com/image_size/{w}x{h}/20b1c07d-fc9c-44c2-a84f-0da041d0987a.jpg"},"name":"Cyberpunkers","slug":"cyberpunkers","url":"https://api-internal.beatportprod.com/v4/catalog/artists/24895/"}],"slug":"little-grunts","tracks":["https://api-internal.beatportprod.com/v4/catalog/tracks/29313851/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313850/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313849/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313848/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313847/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313846/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313845/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313844/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313843/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313842/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313841/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313840/","https://api-internal.beatportprod.com/v4/catalog/tracks/29313839/"],"track_count":13,"type":{"id":2,"name":"Album"},"upc":"824296930656","updated":"2026-06-29T00:33:08-06:00","is_hype":false},"chartPosition":null,"_nextI18Next":{"initialI18nStore":{"en":{"translation":{"Account":{"AlreadyHaveAccount":"Already have an account?","BeatportProfile":"Beatport Profile","BillingPreferences":"Billing Preferences","CreateAccount":"Create Account","CreateAccountOrLogIn":"Create Account or Log In to continue","DownloadPreferences":"Download Preferences","Email":{"EmailAddress":"Email Address","Options":{"Beatport":{"description":"A bi-weekly rundown on the electronic music industry from our online publication."},"Content":{"description":"Weekly personalized and professionally curated store content just for you.","label":"Content"},"ExclusiveOffers":{"description":"Join to receive regular special offers on all of our products.","label":"Exclusive Offers"},"Happenings":{"description":"Occasional company announcements, DJ contests and events.","label":"Happenings"},"LoopmastsersPluginBoutique":{"description":"Monthly offerings of the hottest sample packs, plugins and producer contests."},"Snooze":{"description":"Need a break but don't want to miss out completely? Snooze our communication from a choice of 2 weeks, one month and two months.","label":"Snooze"},"SubscriptionSettings":{"description":"Unsubscribe from all lists. Hope you come back soon!","label":"Unsubscribe all"}},"Preferences":"Notification Preferences","Update":"Update: Edit your email address and notification preferences here."},"FavouriteGenres":"Favorite Genres","FirstName":"First name","FirstNamePlaceholder":"Enter your first name","GenrePreferences":"Genre Preferences","Genres":{"Subtitle":"We'll use your selections to personalize your experience.","Title":"Select your favorite genres"},"Language":{"ChangeTo":"Change language to {{language}}","Updated":"Language preferences updated."},"LastName":"Last name","LastNamePlaceholder":"Enter your last name","Login":"Login","ManageAccount":"Manage Account","Password":{"IdentityPassword":"Identity and Password","Title":"Password"},"Preferences":"Preferences","PreferencesUpdatedSuccess":"Your preferences were updated successfully","Profile":"Profile","ProfilePreferences":"Profile Preferences","ProfilePreferencesUpdatedSuccess":"Your profile preferences were updated successfully","Settings":"Account Settings","Streaming":{"FormatDescriptions":{"High":"Higher bitrate, better quality playback","Lossless":"Best quality, no audio compression","Standard":"Most efficient, best for limited internet connections"},"LearnMore":{"About":"About Streaming Quality","OnlyApply":"This selection will only apply to DJ platform integrations and will not affect the streaming quality on Beatport.com, the Beatport Mobile App, or the Beatport DJ App, all of which stream at 128aac.","UseSetting":"Use this setting if the ability to change streaming quality has not been implemented in your chosen DJ platform."},"StreamingQuality":"Streaming quality","StreamingQualityDescription":"This selection only applies to DJ platform integrations and will not affect Beatport.com, the Beatport DJ App, or the Beatport Mobile App."},"StreamingPreferences":"Streaming Preferences","Title":"Account","Username":"Username"},"Actions":{"Add":"Add","AddDuplicate":"Add duplicate","AddToCart":"Add to cart","AddToPlaylist":"Add to playlist","AddTracks":"Add Tracks","Back":"Back","BackToTop":"Back to top","Browse":"Browse","Cancel":"Cancel","Close":"Close","Continue":"Continue","ContinueAndSubscribe":"Continue and Subscribe","Delete":"Delete","DownloadAll":"Download All","DowngradePlan":"Downgrade Plan","Edit":"Edit","End":"End","Finish":"Finish","GetStarted":"Get started","GiveFeedback":"Give Feedback","GoBack":"Go Back","KeepCurrentPlan":"Keep Current Plan","Loading":"Loading","Login":"Log In","Logout":"Log Out","MixOnly":"Mix Only","Next":"Next","Off":"Off","On":"On","Play":"Play","PreviewOnly":"Preview Only","Previous":"Previous","Publish":"Publish","ReleaseOnly":"Release Only","Remove":"Remove","Save":"Save","SaveAndContinue":"Save And Continue","SaveChanges":"Save Changes","SelectAll":"Select All","Showing":"Showing","SignUp":"Sign Up","SkipTheDeals":"Skip the deals","Start":"Start","StreamOnly":"Stream Only","Subscribe":"Subscribe","View":"View","ViewAll":"View all"},"AddPromoCode":"Add Promo Code","AddStreaming":"Add Streaming","AllDJCharts":"All DJ Charts","And":"and","AppearsOn":"Appears On","Apply":"Apply","AriaLabels":{"Account":{"Menu":"Account menu","OpenMenu":"Profile image - open account settings"},"AddToCart":{"AddChart":"Add chart '{{name}}' to cart","AddPlaylist":"Add all tracks from playlist '{{name}}' to cart","AddRelease":"Add release '{{name}}' to cart","AddTrack":"Add track '{{name}}' ({{mix}}) by {{artists}} to cart","AddUpgradeToCart":"Add upgrade to cart","CloseCartSelector":"Close cart selector","InCart":"{{itemType}} '{{name}}' is already in your cart","ItemPrice":"Price: {{price}}","OpenCartPicker":"Choose a cart for this item","OpenUpgradePicker":"Open upgrade selector","Types":{"chart":"Chart","playlist":"Playlist","release":"Release","track":"Track"},"UpgradeInCart":"Upgrade in cart"},"Bio":{"CollapseBio":"Collapse bio","ExpandBio":"Expand bio"},"Carousel":{"ActiveSlide":", this slide is active","ActiveSlideDots":"Current active slide, slide {{slideNumber}}","Carousel":"Carousel","CurrentSlide":"Current Slide","Next":"Next slide","NonActiveSlideDots":"Go to slide {{slideNumber}} of {{sliderSize}}","Previous":"Previous slide","SlideDots":"Carousel slide navigation","SlideOfSlides":"Slide {{slideNumber}} of {{sliderSize}}"},"Cart":{"CartPreferences":"Cart preferences","CartWithCount":"Open cart, {{count}} items","OpenNamedCart":"Open {{name}}, {{count}} items","Close":"Close cart","Open":"Open cart","OpenCartMenu":"Open cart menu"},"ExternalLink":{"VisitSite":"Visit {{name}}","VisitSiteNewTab":"Visit {{name}} (opens in new tab)"},"Logo":{"GoToHomepage":"Go to the homepage"},"Menu":{"CloseMenu":"Close menu","OpenMenu":"Open menu"},"Playlist":{"RemoveFromPlaylist":"Remove from playlist"},"Navigation":{"Main":"Main navigation"},"Player":{"GoToArtist":"Go to artist page","GoToLabel":"Go to label page","GoToTrack":"Go to track page","NextTrack":"Next track","Pause":"Pause","Play":"Play","PreviousTrack":"Previous track","RemoveFromQueue":"Remove from queue","ZoomIn":"Zoom in","ZoomOut":"Zoom out"},"Search":{"CloseSearch":"Close search","OpenSearch":"Open search"},"SkipToMainContent":"Skip to main content"},"Artist":"Artist","Artists":"Artists","ArtistsRemixers":"Artists/Remixers","Beatbot":{"BetterRecommendations":{"CartPage":{"Body":"We've fine-tuned our recommendations engine using behavior from your playlists, cart activity, and collection – alongside picks from our global DJ community and expert curators. Your recommendations are tailored to the tracks in your cart. They refresh weekly and get smarter the more you dig.\n\nWe're just getting started, let us know what you think.","Title":"Smarter Cart Recommendations"},"MyRecommendations":{"Body":"We've fine-tuned our recommendations engine using behavior from your playlists, cart activity, and collection – alongside picks from our global DJ community and expert curators. Your recommendations refresh daily and get smarter the more you dig.\n\nWe're just getting started, let us know what you think.","Title":"Smarter Daily Recommendations"},"TrackPage":{"Body":"We've fine-tuned our recommendations engine using behavior from your playlists, cart activity, and collection – alongside picks from our global DJ community and expert curators. Your recommendations are tailored to the track you're viewing. They refresh weekly and get smarter the more you dig.\n\nWe're just getting started, let us know what you think.","Title":"Smarter Track Recommendations"}}},"Billing":{"BillingInformation":"Billing Information","CVV":"CVV","CardDetails":"Card Details","CardNumber":"Card number","CardType":"Card type","City":"City","ContinuePaypal":"Continue to PayPal","Country":"Country","EditPaymentMethod":"Edit Payment Method","Error":{"CurrencyChange":"An error occurred while updating the cart summary with the currency and values based on the selected country."},"ExpirationDate":"Expiration date","FinishSubscription":"To finish the subscription process, click the button and log into your account.","Label":"Billing","Microform":{"FailedToLoad":"There was a problem loading the form. Please try again","Rejected":"There was a problem processing your billing information, please check try again.","ValidationError":"We could not validate your billing information, please check and try again."},"OptInStream":"I want to receive important email updates about my subscription, new features and tips.","PaymentMethodUseCard":"Pay using credit card","PaymentMethodUsePaypal":"Pay using PayPal","Price":"Price","Save":"Save Billing","SaveForSubscription":"Save Billing information for your subscription.","SaveSuccess":"Billing information saved successfully.","SelectCountry":"Select a country","SelectState":"Select a state","SelectingPaypal":"By selecting PayPal, you will leave Beatport to complete the order process with PayPal's Site. You will be returned to Beatport with completion of payment.","State":"State","StateProvince":"State/Province","StreetAddress":"Street address","StreetAddressPlaceholder":"Enter your address","UnitSuite":"Unit/Suite","UnitSuitePlaceholder":"Enter Unit/Suite","Update":"Update Billing","UpdatePayment":"Payment Method","Validation":{"BrazilWarning":"AMEX and Discover cards are not accepted in your country.","CardInvalid":"Please ensure your card information is correct.","ExpirationInPast":"Expiration date cannot be in the past.","NameFormat":"Only letters, spaces, apostrophes, and hyphens are allowed.","PostalCode":"Please enter a valid postal code.","Required":"This field is required!"},"WithPurchase":"With this purchase, I accept","ZipPostal":"Zip/Postal code"},"BuyAll":"Buy All","Cart":{"AddedToCart":"added to cart","BackToCart":"Back to Cart","Create":"Create new Cart","CreateSuccess":"Cart Successfully created.","CreditBalance":"Credit Balance:","CreditCardNumber":"Credit card number","Credits":"Credits:","DeleteConfirmation":"Delete Cart confirmation","DeleteSuccess":"Cart Successfully deleted.","DeleteWarning":"You are about to delete a cart. The contents of this cart will be unrecoverable after this action.","Discount":"Discount:","FAQ":"FAQ page","GrandTotal":"Total:","HoldBin":"Hold Bin","InCart":"In cart","ItemChanged":"{{item}} Audio Format changed to {{audioFormat}}.","ItemMoved":"{{item}} moved to {{cart}}.","ItemRemoved":"{{item}} removed from Cart.","ItemSuccess":"Items successfully added to cart.","LosslessUpgrade":"Lossless Upgrade","MainCart":"Main Cart","MoveToCart":"Move to Cart","Multiple":{"CreateNew":"Create new carts","DefaultCart":"Your default cart is where items are automatically added when you click a buy button.","Description":"Having multiple carts allows you to organize the music you're purchasing however you would like.","RenameDelete":"Rename or delete existing carts","SelectChangeDefault":"Select or change your default cart","StillHaveQuestions":"If you still have questions, please click here for our","Title":"Multiple Carts","Use":"To use the multiple cart feature, click the down arrow next to any buy button. You will then see a dropdown that lets you create a cart or select an existing cart to add to.","UsePageTo":"Use this page to:"},"MyCarts":"My Carts","NewCart":"New Cart","NotExist":"Selected Cart does not exist","NotFound":"Cart Not Found","Preferences":"Cart Preferences","ReleasesSubtotal":"Releases subtotal:","ReleasesTotal":"{{length}} Releases","RemovedFromCart":"removed from cart.","ReservedNames":"{{cart}}, {{holdbin}}, {{upperHoldBin}} or {{MainCart}} names are reserved. Please choose another name.","SeeItems":"See items you`ve saved in your","SelectCart":"Select cart","SelectedItemsChanged":"Selected Items Audio Format changed to {{audioFormat}}.","SelectedItemsMoved":"Selected Items moved to {{cart}}.","SelectedItemsRemoved":"Selected Items removed from cart.","Settings":"Cart Settings","ShoppingCart":"Shopping Cart","ShoppingCarts":"Shopping Carts","SomeTracksAreStreamingOnly":"Some tracks in this list are licensed for streaming only, and were not added","StartShopping":"Start shopping from the","Subtotal":"Subtotal:","SuccessAddedToCart":"successfully added to cart.","Taxes":"Taxes:","TracksSubtotal":"Tracks subtotal:","TracksTotal":"{{length}} Tracks","UnsupportedItem":"Unsupported Cart Item","UpdateSuccess":"Cart Successfully updated.","UpgradedItemsCantBeDowngraded":"Format upgrades cannot be downgraded to MP3.","UseHoldBin":"Use your hold bin to save items you'd like to purchase later. You can move any item from your cart to your hold bin. Items can easily be re-added to your cart at later time.","UseShoppingCart":"Your shopping cart is ready and waiting. Click any of the pink buy buttons throughout the site to add items to your cart. Come back here when you're ready to check out."},"CartActions":"Cart Actions","Catalog":"Catalog","Chart":"Chart","ChartPublished":"Congrats! Your Chart has now been published","Charts":{"":"Charts","AllowToCompile":"Charts allow you to compile and share music with the world.","CreateDJProfile":"Create your DJ Profile","FeaturedCrates":"Featured Crates","GetStarted":"To get started, click on the \"New Chart\" button and start creating your first chart.","GetStartedCreating":"To get started creating charts, create a DJ profile in the account settings.","MyDjCharts":{"Modal":{"DeleteConfirm":"Are you sure you want to delete this chart?","DeleteHeader":"Delete Chart","DeleteTrackConfirm":"Are you sure you want to delete this track?","DeleteTrackHeader":"Delete Chart Track"},"Toast":{"Error":"Failed to add track to your chart","MaxLength":"Maximum of 100 tracks allowed","Success":"Successfully added track to your chart"}},"NoCharts":"You currently have no charts created.","NoTracks":"In order to publish your chart, you must add a minimum of 10 tracks.","RemixerCrates":"Remixer Crates","label":"Charts"},"Checkout":{"Error":"Sorry, your transaction was declined. If you need help, please contact our customer support team by emailing support@beatport.com","PurchasesReady":"Your purchases are now available in your \u003c0\u003eCollection\u003c/0\u003e.","Success":"Checkout Success","ThankYou":"Thank You","Title":"Checkout"},"Collection":{"":"Collection","AddToDownloads":"Add to Downloads","AddedToDownloads":"Added to Downloads","AddedToDownloadsToast":{"Success":"Your track has been added to Downloads"},"FinalDownload":"This is your final download","LimitReached":"{{downloads}} track download limit reached","NotAvailableStreaming":"This track is not licensed for streaming","Preorder":"Preorders are only available on their release date","Unavailable":"This track is currently unavailable","Unfollow":"Unfollow","UpgradeToDownloadMore":"Free accounts are limited to {{maxDownloads}} downloads per track. Upgrade to \u003c0\u003eBeatport Streaming\u003c/0\u003e to unlock unlimited re-downloads.","label":"Collection"},"Company":"Company","Dates":{"EndDate":"End date","LastDays":"Last {{number}} days","PleasePick":"Please pick the {{textValue}} date","StartDate":"Start date","Today":"Today","Yesterday":"Yesterday"},"Days":"Days","DjCharts":"DJ Charts","DjChartsGenre":"DJ Charts by Genre","DownloadDay":"Download Day","DownloadMonth":"Download Month","DownloadYear":"Download Year","Downloads":{"CustomFileNaming":"Custom File Name","Help":"Help Downloading","NoTracksQueued":"You do not have any tracks queued for download.","Title":"Downloads"},"DragDropImage":"Drag \u0026 Drop Image Here","DropIt":"Drop It","EnterCoupon":"Enter Coupon","Error":{"Billing":"Something went wrong saving your billing information","Download":"There was an error with your download","EncodingError":"Encoding error, please contact support","ErrorOccurred":"An error occurred","General":{"Title":"Something went wrong.","Description":"It's not you, it's on us. Please try again, or \u003c0\u003econtact support\u003c/0\u003e for help."},"Maintenance":{"Title":"We're upgrading the booth.","Description":"Beatport is currently performing updates, we'll be back soon!"},"NotFound":{"Title":"404 Error","Description":"We can't find the page you are looking for."},"ServerError":{"Title":"500 Error","Description":"We're experiencing an internal server problem.\nPlease try again later."},"PleaseTryAgain":"Please Try Again","PublishingChart":"There was an error while publishing your chart","ReturnToHomepage":"Return to Homepage","SavingChart":"There was an error trying to save your chart","SavingImage":"An error occurred saving your image","ServiceStatus":"Service Status","SorryNotAvailableRegion":"Sorry, but this content is not available in your region. Please use the navigation above to continue browsing, or return to the homepage.","StrongAuthentication":"Strong Customer Authentication required","TerritoryRestriction":"Territory Restriction","TrackNotFound":"Track not found","UnableAddChartTracks":"Unable to add chart tracks to cart","UnableAddPlaylistTracks":"Unable to add playlist tracks to cart","UnableAddTracks":"Unable to add tracks to playlist","UnableSubscribe":"Unable to subscribe.","UnableToLoad":"Unable to load {{type}} Tracks","UnableToProcessCard":"Unable to process your card. Please try again later...","UnknownAction":"Unknown Action"},"Events":{"UpcomingEvents":"Upcoming Events","GetTickets":"Tickets","Months":{"January":"JAN","February":"FEB","March":"MAR","April":"APR","May":"MAY","June":"JUN","July":"JUL","August":"AUG","September":"SEP","October":"OCT","November":"NOV","December":"DEC"}},"Exclusive":"Exclusive","ExclusiveOffers":"Exclusive Offers","ExplicitContentWarning":"This media contains explicit material.","Explore":"Exploring the artists and music of {{name}}? Find the newest, exclusive music here on Beatport.","ExploreComplexCharts":"Exploring the complex melodies and beats of {{name}}? Find the newest, exclusive charts here on Beatport.","ExploreComplexReleases":"Exploring the complex melodies and beats of {{name}}? Find the newest, exclusive releases here on Beatport.","ExploreComplexTracks":"Exploring the complex melodies and beats of {{name}}? Find the newest, exclusive tracks here on Beatport.","Featured":"Featured","FeaturedCharts":"Featured Charts","Feedback":"Feedback","FindAtBeatport":"Find {{name}} Downloads \u0026 Songs at Beatport","Follow":"Follow","Following":"Following","Footer":{"AboutBeatport":"About Beatport","Careers":"Careers","ContactUs":"Contact Us","CopyrightInfringement":"Report Copyright Infringement","CustomerSupport":"Customer Support","LogosAndImages":"Logos And Images","ManageCookiePreferences":"Manage Cookie Preferences","PrivacyPolicy":"Privacy and Cookie Policy","TermsAndConditions":"Terms and Conditions","DJEditsProgram":"DJ Edits Program"},"Format":"Format","Formats":{"Electronic":"Electronic","OpenFormat":"Open Format"},"Forms":{"AudioFormat":{"AudioQuality":"Audio quality","ChooseAudioQuality":"Choose your preferred audio quality for purchases.","CustomizeNaming":"Customize your naming structure for downloads.","Features":{"AIFF":{"1":"Uncompressed audio","2":"Supports cover and metadata tags","3":"Best for professional use and high-quality playback"},"FLAC":{"1":"Lossless compressed audio","2":"Supports cover and metadata tags","3":"Best for audiophiles who want high-quality sound with smaller file sizes than WAV or AIFF"},"MP3":{"1":"High-quality compressed audio","2":"Supports cover and metadata tags","3":"Best for standard use and saving space on devices"},"WAV":{"1":"Uncompressed audio","2":"Does \u003c0\u003enot\u003c/0\u003e support cover or metadata tags","3":"Best for professional use and high-quality playback"}},"FileNaming":"File naming","ReplaceWhitespace":"Replace whitespace"},"DefaultCart":"Set as default cart","Email":"Email","Example":"Example","Keyword":"Keyword","Name":"Name","Signup":{"AMobileApp":"A mobile app made to find music on the go","AnExpandedCatalog":"An expanded catalog including new genres","GetExclusiveOffers":"Get Exclusive Offers","MoreDJPlatformIntegrations":"More DJ platform integrations","NowYouGetMore":"Now you get more of everything you love, plus:","OptInBenefits":"Promo codes. Limited-time discounts. Email-only offers. Plus new music and product updates you won't want to miss. Unsubscribe anytime.","OptInNotice":"By opting in you are consenting to receive music updates, exclusive offers, and product news from Beatport. You can opt out at any time.","SubscribeToBeatportNews":"Subscribe to Beatport news and updates","TermsOfUse":"Terms of Use","WelcomeIntro":"Your journey into the world's best electronic music starts here. Discover the latest releases, exclusive tracks, and the sounds that shape dance floors. Whether you need downloads for your next gig or seamless streaming in your favorite DJ software and hardware – we've got you covered.","WelcomeToBeatport":"Welcome to Beatport"}},"Genre":{"DJEdit":"DJ Edit","DJEdits":"DJ Edits","Exclusive":"Exclusive","Exclusives":"Exclusives","Genre":"Genre","Genres":"Genres","LatestMusicReleases":"Latest {{genre}} Music Releases","Subgenre":"Subgenre","Subgenres":"Subgenres"},"Header":{"Events":{"ForPromoters":"For Promoters","UpcomingEvents":"Upcoming Events"}},"HypePicks":"Hype Picks","ImageCoverArtAlt":"Cover art for {{name}}","ImageCoverArtAltFallback":"Cover art for track","Key":"Key","Label":{"ArtistMusicDownload":"{{label}} artists \u0026 music download","Labels":"Labels","Title":"Label"},"LabelName":"Label Name","Languages":"Languages","LatestReleases":"Latest Releases","Length":"Length","Menu":{"Beatportal":"Beatportal","DigDeeper":"Dig Deeper","DJApp":"DJ App","Events":"Events","ForArtistsAndLabels":"For Artists \u0026 Labels"},"Meta":{"Genre":{"Title":"Buy {{genre}} Music Tracks"},"Home":{"Title":"Beatport | DJ \u0026 Electronic Dance Music, Tracks \u0026 Mixes","Description":"Beatport is the world's largest DJ store: download and stream electronic dance music. Explore the new and exclusive music tracks out of the best electronic dance music."},"OpenFormat":{"Title":"Open Format DJ Music - Pop, R\u0026B, Hip-Hop and More | Beatport","Description":"Get open format hits on Beatport. Pop, R\u0026B, Hip-Hop, and more genres curated for multi-genre sets, high-quality audio, and any party atmosphere"},"OpenFormatTop100Classics":{"Title":"Essential DJ Classics | Pop, R\u0026B, Hip-Hop \u0026 More | Beatport","Description":"Best commercial throwbacks on Beatport: Pop, R\u0026B, Hip-Hop, and Rock. High-quality classics curated for multi-genre sets and packed dance floors."},"OpenFormatTop100NewTracks":{"Title":"Top New Open Format Tracks: Pop, R\u0026B \u0026 Hip-Hop | Beatport","Description":"Download the latest commercial open format hits on Beatport. Fresh Pop, R\u0026B, and Hip-Hop curated for genre-fluid sets and complete multi-genre versatility"},"OpenFormatTop100RecentHits":{"Title":"Recent DJ Hits: Commercial Pop, R\u0026B, Hip-Hop \u0026 More | Beatport","Description":"Secure the latest essentials for your crate. Download recent open format hits curated for high-quality genre-fluid sets and dynamic energy shifts."}},"MixName":"Mix Name","Month":"Month","Monthly":"Monthly","MoreFromThisLabel":"More From This Label","MusicDownload":"{{name}} Music download","MusicalKey":"Musical Key","MyBeatport":"My Beatport","MyBeatportNotFollowing":{"Artists":{"description":"My Beatport lets you follow your favorite artists so you can find out when they release new tracks.","header":"You're not following any artists yet!"},"General":{"description":"My Beatport lets you follow your favorite DJs and labels so you can find out when they release new tracks. So go follow someone!","header":"You're not following anyone yet!"},"Labels":{"description":"My Beatport lets you follow your favorite labels so you can find out when they release new tracks.","header":"You're not following any labels yet!"},"NoNewTracks":{"description":"None of the artists or labels you follow have any new releases.","header":"No new releases at this time!"},"TrackFilters":{"description":"Please reset selected search filters","header":"No results found."}},"MyCharts":"My Charts","Network":"Network","NewChart":"New Chart","NewCharts":"New Charts","NewOnBeatport":"New on Beatport","NewReleases":"New Releases","No":"No","NoPurchasedTracks":"You have no purchased tracks","NoThanks":"No, Thanks","Of":"of","OnBeatport":"on Beatport","OnboardingTour":{"Homepage":{"Buttons":{"Finish":"Finish","LetsGo":"Let's Go","Next":"Next","NoThanks":"No Thanks"},"StepFive":{"Content":"Adjust your profile, streaming subscription, download preferences and audio settings.","Title":"Your account"},"StepFour":{"Content":"Go beyond the charts to explore underground releases and fresh talent, handpicked by our team of expert curators.","Title":"Discover hidden gems"},"StepIntro":{"Content":"Get to know the features that help you discover, organize, and download the music you love.","Title":"Take a quick tour?"},"StepOne":{"Content":"Get personalized recommendations and new release updates based on your favorite artists and labels.","Title":"My Beatport"},"StepSeven":{"Content":"Check out curated charts from top DJs and labels, and stay in sync with dance floors worldwide.","Title":"Listen to what the pros play"},"StepThree":{"Content":"Create, manage, and share playlists – perfect for your next gig or your daily soundtrack.","Title":"Build and organize"}}},"OpenFormatHomepage":{"StaffPicks":"Staff Picks","WeThinkYoullLove":"We think you'll love","FeaturedPlaylists":"Featured Playlists"},"OpenFormatSubPages":{"Top100NewTracksTitle":"Top New Tracks","Top100RecentHitsTitle":"Top Recent Hits","Top100ClassicsTitle":"Top Classics","TopClassicsSubHeading":"Top Classics","TopNewTracksSubHeading":"Top New Tracks","TopRecentHitsSubHeading":"Top Recent Hits","ViewNewTracksLink":"View Open Format top new tracks","ViewRecentHitsLink":"View Open Format top recent hits","ViewClassicsLink":"View Open Format top classics"},"Or":"or","PeopleAlsoBought":"People Also Bought","Player":{"ClearQueue":"Clear queue","CloseQueue":"Close queue","KeyboardControls":"Keyboard controls","OpenQueue":"Open queue","Volume":"Volume","ErrorPlayingGeneric":"Sorry, there was an error playing this track","ErrorPlaying":"Sorry, there was an error playing {{name}}"},"Playlist":"Playlist","Playlists":{"AddMulti":"Add to Playlists","AddTo":"Add to Playlist","AddedMulti":"added to {{number}} Playlists","AddedTo":"added to Playlist","ConfirmDelete":"Are you sure you want to delete playlist(s)?","Create":"Create playlist","Delete":"Delete playlists?","DuplicateTracks":{"DuplicateDetected":"Duplicate detected","SomeExist":"Some of the tracks exist in the following playlists:","TrackInFollowing":"Track {{track}} is already in the following playlists:","TracksExist":"Some of the tracks exist in {{playlist}} playlist."},"Edit":"Edit Playlist","MissingTracks":"Missing tracks from Beatsource?","Name":"Playlist Name","NoPlaylistsFound":"No playlists found. To create a new playlist, click the \"Create Playlist\" button.","ReorderError":"Unable to reorder Playlists","Reordered":"Playlists Reordered","SaveSuccess":"Playlist saved successfully","Select":"Select playlist","Title":"Playlists","TrackRemoveError":"Unable to remove track from Playlist","TrackRemoved":"Track Removed from Playlist","TracksReordered":"Playlist Tracks Reordered","Warning":"Some tracks may be disabled due to metadata differences. Try searching by title and artist to find and replace missing tracks. \u003c0\u003eMore support here\u003c/0\u003e"},"PleaseNote":"Note:","PopularReleases":"Popular Releases","PreOrder":"Preorder","PreOrders":"Preorders","Processing":"Processing","Public":"Public","PublishDate":"Publish Date","Published":"Published","Purchase":{"ConfirmRepurchase":"Are you sure you'd like to repurchase it again?","GetBeatportProPlus":"Get Professional+","PreviouslyPurchased":"You've previously purchased","PreviouslyPurchasedItems":"Previously Purchased Items","Repurchase":"It looks like you've previously purchased the following items. Are you sure you'd like to repurchase them?","Upgrade":{"ToProPlus":"Upgrade to Professional+","UnlockEditsAndVersionsWithProPlus":"Unlock full track playback for DJ Edits and Versions with Beatport Streaming Professional+"}},"PurchaseDate":"Purchase Date","PurchaseDay":"Purchase Day","PurchaseMonth":"Purchase Month","PurchaseYear":"Purchase Year","Queue":{"Add":"Add to queue","Added":"added to queue"},"Recommendations":"Recommendations","Release":"Release","ReleaseDate":"Release Date","ReleaseDay":"Release Day","ReleaseMonth":"Release Month","ReleaseYear":"Release Year","Released":"Released","Releases":"Releases","Remixers":"Remixers","Reset":"Reset","ResetAll":"Reset All","Results":"Results","Search":"Search","SearchBeatport":"Search Beatport","Share":{"CopyClipboard":"Copy to clipboard","CopyFailed":"Failed to copy to clipboard","Embed":"Embed","EmbedLink":"Embed link copied to clipboard","Link":"Link","ShareLink":"Share link copied to clipboard","ShareOn":"Share on {{brand}}"},"Shortcuts":{"AddTrackToShoppingCart":"Add Track to Shopping Cart","LeftArrow":"Left Arrow","NextTrack":"Next Track in Queue","PreviousTrack":"Previous Track in Queue","RightArrow":"Right Arrow","SeekBackwards":"Seek Backwards","SeekForwards":"Seek Forward","ToggleOpenPlaylist":"Toggle Open Queue","TogglePlayPause":"Toggle Play / Pause","ToggleShortcuts":"Toggle Shortcuts","ToggleWaveformZoom":"Toggle Waveform Zoom"},"SkipFinish":"No, Thanks","SortBy":"Sort By:","SortOptions":{"GenreAZ":"Genre A-Z","GenreZA":"Genre Z-A","LabelAZ":"Label A-Z","LabelZA":"Label Z-A","NewestOldest":"Newest to Oldest","OldestNewest":"Oldest to Newest","TitleAZ":"Title A-Z","TitleZA":"Title Z-A"},"Subscriptions":{"ActivePlan":"Active plan","AddStreaming":"Add Beatport Streaming","AnnualDiscount":"Save {{discountAmount}}%","Badge":{"New":"New"},"Billing":"{{billingDate}}, you will be charged {{symbol}}{{planPrice}} +applicable taxes","BillingComplimentary":"Your complimentary plan expires {{billingDate}}","BillingEmployee":"Complimentary employee plan","BillingStarts":"Billing Starts","ByDowngrading":"By downgrading from {{currentPlan}} to {{newPlan}} you will lose the following features:","Cancel":"Cancel Plan","CancelConfirm":"Yes, Cancel","CancellationPageTitle":"Confirm cancellation","CancelWarning":"Your plan benefits will expire at the end of your current billing period on {{billingEndDate}}","ChangePlan":"Change Plan","ChangeSubscription":"Change Subscription","CheckoutAvailable":"Check out the available subscriptions.","Complete":"Complete your subscription","ContinueCancellation":"Continue Cancellation","CouponWarning":"Price shown does not include coupon saving.","CurrentPlan":"Current plan","Description":"Download and listen to new, exclusive, electronic dance music and house tracks. Available on mp3 and wav at the world's largest store for DJs.","DowngradePlan":"Downgrade Plan","DowngradePlanConfirm":"Are you sure you want to downgrade?","DowngradePlanQuestion":"Downgrade Plan?","DowngradePlanWarning":"You will lose these features:","DowngradeToPlan":"Downgrade to {{planName}} and keep:","DownloadLimitWarning":"Free accounts can only download tracks up to {{maxDownloads}} times, For unlimited re-downloads subscribe to \u003c0\u003eBeatport Streaming\u003c/0\u003e","DueToday":"Due Today","EverythingInThisPlan":"Everything in {{plan}}, plus","Expires":"{{billingDate}} your subscription will expire, reactivate to keep your benefits.","ExpiringPlan":"Expiring plan","Feedback":"Continuing to enhance Beatport and our subscription service is a priority for us. We value your insights and would be grateful if you could share your feedback with us. The survey should take no more than 5 minutes to complete.","FreeTrial":"Free Trial","FreeTrialExpires":"Free trial expires on {{nextDate}}, you will then be charged {{symbol}}{{planPrice}} / {{planBilingPeriod}} unless you cancel your subscription. A reminder email will be sent 6 days before your trial expires.","LearnMoreStreaming":"Learn More","Migration":{"Beatport":{"Redownloads":"Unlimited purchase re-downloads","AdditionalIntegrations":"Additional DJ platform integrations","DJAcademy":"Free Pete Tong DJ Course","Stem":"Stem separation","Plus":"Everything from Beatsource, plus:","MonthPromotion":"/mo after 3-month promotion.","YearPromotion":"/yr next billing period.","Traktor":"Free Traktor DJ software"},"Beatsource":{"Features":"Features:","Mix":"Mix on DJ Gear","Playback":"Full-track playback","DJApp":"DJ web app","Standard":"Standard quality streaming","Lossless":"Lossless FLAC audio streaming","Offline":"1000 tracks offline storage","Edits":"Open format DJ edits"},"Owed":"Nothing is owed today, on {{billingDate}} you will be charged for your new plan. You can adjust your active streaming plan in account settings.","Year":"year","NewSubscription":"Your new subscription","Month":"month"},"MostPopular":"Most Popular","MySubscription":"My Subscription","MySubscriptions":"My Subscriptions","NoPlan":"You will no longer have high quality streaming, curated and custom playlists or your purchase history.","PayMonthly":"Pay Monthly","PayYearly":"Pay Yearly","PlanDetails":"Plan Details","Plans":{"AltNames":{"AnyPartner":"Partner","Ambassador":"Ambassador","EmployeeVIP":"VIP"},"Descriptions":{"Essential":"Best for music discovery","Advanced":"Best value for DJ platform integrations","Professional":"Best for mixing without Wi-Fi","ProfessionalPlus":"Best for edits and remixes"},"EverythingInAdvanced":"Everything in Advanced","EverythingInEssenstial":"Everything in Essential","EverythingInProfessional":"Everything in Professional","Features":{"CleanVersions":"Clean versions","DJAcademy":"Free Pete Tong DJ course","ExtendedIntrosOutros":"Extended intros / outros","FreeTraktor":"Free Traktor Play DJ license","FullTrackPlayback":"Full-track playback","HighQualityAudioStreaming":"High-quality audio streaming","Integrations":"DJ software and hardware","LosslessQualityStreaming":"Lossless FLAC audio streaming","MixOnDJGear":"Mix on DJ gear + Stem separation","OfflinePlayback":"1000 tracks offline storage","OpenFormatDjEdits":"Open format DJ Edits","ReDownload":"Unlimited purchase re-downloads","RemixesProducedByDjs":"Remixes produced by DJs","TransitionTools":"Transition tools"},"Footnotes":{"AvailableIntegrations":"DJ integrations supported: CDJ-3000/X, DEX, djay Pro, DJ.Studio, DJUCED, edjing Mix, Engine DJ OS, future.dj.pro, OMNIS-DUO, OPUS-QUAD, rekordbox, Serato, Traktor, Tribe XR, VirtualDJ, WeDJ, XDJ-AZ. The Beatport catalog is ready for stem separation, although this capability depends on whether your chosen DJ integration supports real-time stem separation.","FreeAcademyAccess":"Free 1-month access to \u003clearnMore\u003ePete Tong DJ Academy Pro\u003c/learnMore\u003e, with exclusive content from world-class DJs and producers.","LosslessAudioSupport":"Supported on all DJ software integrations. Not supported on: CDJ-3000/X, OPUS-QUAD, OMNIS-DUO, XDJ-AZ, Beatport.com, Beatport Mobile app, Beatport DJ.","NoDownloadLimits":"Purchased tracks in your Collection have no download limits. Free downloads of unpurchased tracks are not included.","OfflineLibrarySupport":"Supported on all DJ software integrations. Not supported on: CDJ-3000/X, Engine DJ OS, OPUS-QUAD, OMNIS-DUO, XDJ-AZ, Beatport.com, Beatport Mobile app, Beatport DJ.","OpenFormatAvailability":"DJ Edits and Versions are only available for streaming with a Professional+ plan and cannot be purchased or downloaded.","StreamingQuality":"Full-track \u003clearnMore\u003ehigh-quality playback\u003c/learnMore\u003e (no more lo-fi previews). Supported on: Beatport.com, Beatport Mobile app, Beatport DJ.","TracktorPlayDJ":"Free perpetual license for \u003clearnMore\u003eTraktor Play DJ\u003c/learnMore\u003e software by Native Instruments."},"Names":{"Advanced":"Advanced","AdvancedPartner":"Advanced Partner","Essential":"Essential","Professional":"Professional","ProfessionalPartner":"Professional Partner","ProfessionalPlus":"Professional+","ProfessionalPlusAmbassador":"Professional+ Ambassador","ProfessionalPlusEmployee":"Professional+ Employee","ProfessionalPlusPartner":"Professional+ Partner"}},"PleaseLetUsKnowHowWeCanImprove":"Please let us know how we can improve.","Proration":"\u003cspan\u003eWhen upgrading:\u003c/span\u003e The final amount for your first bill could be less based on the days remaining in your current billing cycle.","ReactivateCanceledPlan":"Reactivate Plan","ReactivateDefaultErrorMessage":"An error occurred while attempting to reactivate subscription plan","ReactivateMyPlan":"Reactivate My Plan","SaveOnAnotherPlan":"Save on another plan?","Start":"Start Subscription","StreamingCTA":"Mix and stream millions of tracks on leading DJ gear and across Beatport. Play every track in full, high-quality audio.","SwitchPlan":"You can switch to Beatport {{planCode}} plan for {{symbol}}{{price}}/{{planBilingPeriod}} plus applicable taxes to keep {{featuresList}}","Title":"Subscriptions","TryFree":"Try {{planLength}} {{planInterval}} Free","UpcomingStarts":"Starts {{date}}","DjEditsAndVersionsOnlyStremableByProPlus":"DJ Edits and Versions can only be streamed with \u003c0\u003eProfessional+\u003c/0\u003e","WelcomeBack":"Welcome back to Beatport {{planName}}","BillingCycleLabel":"Billing cycle","PerInterval":"per {{interval}}","PlanFeaturesLabel":"Plan features"},"SubscriptionSuccess":{"AccessBeatportInsideDJPlatforms":"Access Beatport inside rekordbox, Traktor and other popular DJ platforms.","Connect":"Connect","ConnectYourDJPlatform":"Connect your DJ platform","ConnectYourGear":"Connect Your Gear","DigOnMobile":"Dig on mobile","DiscoverNewMusic":"Discover new music, build setlists and DJ online with Beatport DJ. With or without your controller.","DiscoverNewMusicCTA":"Discover new music, build setlists and DJ online with \u003c0\u003eBeatport DJ\u003c/0\u003e.","DjEdits":"Party starting tracks produced by DJs.","GettingStartedWithBeatportDJ":"Getting started with Beatport DJ","GotAQuestion":"Got a question, we have answers. \u003c0\u003eView FAQ\u003c/0\u003e","HelpfulTutorials":"Helpful tutorials","LearnMore":"\u003c0\u003eLearn more\u003c/0\u003e","LosslessStreaming":"Lossless streaming","MIDIMappingInBeatportDJ":"MIDI mapping in Beatport DJ","MigrateYourMusic":"Migrate your music","MusicDiggingWithAutomix":"Music digging with Automix","NewUpdate":"New update","OfflineLibrarySetup":"Offline library setup","PlaylistSidebar":"Beatport playlist sidebar","PracticeYourMix":"Practice your mix","ProfessionalStreamFLAC":"{{planName}} plans can now stream in Lossless FLAC quality.","ReceiveEmailUpdates":"Receive email updates about your subscription, new features and plan tips. \u003c0\u003eManage notifications\u003c/0\u003e","Save1000Tracks":"Save 1,000 tracks and play from anywhere.","SetupEmailNotifications":"Setup email notifications","StayUpdated":"Stay updated","StreamingInCDJ3000":"Streaming in the CDJ-3000","StreamingInstancePlaylistUpdates":"Beatport Streaming instant playlist updates","StreamingSupport":"Streaming support","SwitchToFLAC":"Switch to FLAC","TransferPlaylists":"Transfer playlists to Beatport","TryBeatportDJ":"Try Beatport DJ","UpgradeToAdvanced":"Upgrade to Advanced","ViewEdits":"View DJ Edits","WelcomeLetsGetStarted":"Welcome to Beatport {{planName}}"},"TakeSurvey":"Take Survey","Time":"Time","Title":"Title","Top":{"CheckOutTop100":"Check out the top 100 electronic dance music tracks on Beatport. Explore the artists and songs for these EDM DJ tracks now.","Top100Releases":"Top 100 Releases","Top100Songs":"Top 100 Songs \u0026 DJ Tracks","Top100Tracks":"Top 100 Tracks","TopRecentTracks":"Top Recent Tracks","TopClassicTracks":"Top Classic Tracks"},"Track":"Track","TrackName":"Track Name","Tracks":"Tracks","TracksProccessing":"Tracks still processing","TryStreaming":"Try Streaming","TryBeatportStreaming":"Try Beatport Streaming","Unpublished":"Unpublished","Upgrade":"Upgrade","Validation":{"64Characters":"Cannot exceed 64 characters","CVV":"Please enter a valid CVV","ChartTracks":"Minimum of 10 tracks allowed","InvalidCoupon":"Invalid Coupon.","InvalidEmail":"Please enter a valid email address.","NoEmoji":"Emoji are not allowed.","NoSpecialChars":"No special characters allowed.","Password":"Password must be at least 8 characters and contain at least 1 letter and number.","Required":"Required","RequiredField":"This field is required."},"Warning":{"DownloadUnavailable":"Download Unavailable","DownloadsNotAvailable":"Downloads are not available on this device. Please visit this page on a desktop computer to download your purchases.","Hour":"hour","Hours":"hours","NoResults":"Your search \"{{searchQuery}}\" did not return any results.","UnsubscribeAll":"Please unselect unsubscribe all option","UpdateLimit":"Limit reached, billing updates are now locked for {{time}}, please \u003c0\u003econtact support\u003c/0\u003e for more information."},"Welcome":"Welcome to Beatport","Year":"Year","Yearly":"Yearly","Yes":"Yes","YesDelete":"Yes, Delete"}}},"initialLocale":"en","ns":["translation"],"userConfig":{"i18n":{"defaultLocale":"en","locales":["en","de","fr","es","it","ja","pt","nl"]},"defaultNS":"translation","default":{"i18n":{"defaultLocale":"en","locales":["en","de","fr","es","it","ja","pt","nl"]},"defaultNS":"translation"}}}},"isPageExplicit":false,"__N_SSP":true},"page":"/release/[description]/[id]","query":{"description":"-","id":"7059114"},"buildId":"o_5phGfvlHUxKORmhrGaC","isFallback":false,"isExperimentalCompile":false,"gssp":true,"appGip":true,"locale":"en","locales":["en","de","fr","es","it","ja","pt","nl"],"defaultLocale":"en","scriptLoader":[]} \ No newline at end of file diff --git a/testdata/https!/com.deezer.api/album/245878832 b/testdata/https!/com.deezer.api/album/245878832 new file mode 100644 index 00000000..fdb195b4 --- /dev/null +++ b/testdata/https!/com.deezer.api/album/245878832 @@ -0,0 +1 @@ +{"id":245878832,"title":"INDUSTRY BABY","upc":"886449403912","link":"https:\/\/www.deezer.com\/album\/245878832","share":"https:\/\/www.deezer.com\/album\/245878832?utm_source=deezer&utm_content=album-245878832&utm_term=0_1789950661&utm_medium=web","cover":"https:\/\/api.deezer.com\/album\/245878832\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/a65e86966cfd34b2aa292856136ef9ac\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/a65e86966cfd34b2aa292856136ef9ac\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/a65e86966cfd34b2aa292856136ef9ac\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/a65e86966cfd34b2aa292856136ef9ac\/1000x1000-000000-80-0-0.jpg","md5_image":"a65e86966cfd34b2aa292856136ef9ac","genre_id":116,"genres":{"data":[{"id":116,"name":"Rap\/Hip Hop","picture":"https:\/\/api.deezer.com\/genre\/116\/image","type":"genre"},{"id":132,"name":"Pop","picture":"https:\/\/api.deezer.com\/genre\/132\/image","type":"genre"}]},"label":"Columbia","nb_tracks":1,"duration":214,"fans":50400,"release_date":"2021-07-23","record_type":"single","available":true,"tracklist":"https:\/\/api.deezer.com\/album\/245878832\/tracks","explicit_lyrics":true,"explicit_content_lyrics":1,"explicit_content_cover":2,"contributors":[{"id":15166511,"name":"Lil Nas X","link":"https:\/\/www.deezer.com\/artist\/15166511","share":"https:\/\/www.deezer.com\/artist\/15166511?utm_source=deezer&utm_content=artist-15166511&utm_term=0_1789950661&utm_medium=web","picture":"https:\/\/api.deezer.com\/artist\/15166511\/image","picture_small":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0f5f0e176c544db5f89b5cd837e279aa\/56x56-000000-80-0-0.jpg","picture_medium":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0f5f0e176c544db5f89b5cd837e279aa\/250x250-000000-80-0-0.jpg","picture_big":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0f5f0e176c544db5f89b5cd837e279aa\/500x500-000000-80-0-0.jpg","picture_xl":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0f5f0e176c544db5f89b5cd837e279aa\/1000x1000-000000-80-0-0.jpg","radio":true,"tracklist":"https:\/\/api.deezer.com\/artist\/15166511\/top?limit=50","type":"artist","role":"Main"},{"id":9093938,"name":"Jack Harlow","link":"https:\/\/www.deezer.com\/artist\/9093938","share":"https:\/\/www.deezer.com\/artist\/9093938?utm_source=deezer&utm_content=artist-9093938&utm_term=0_1789950661&utm_medium=web","picture":"https:\/\/api.deezer.com\/artist\/9093938\/image","picture_small":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/acf97ceb30d48a97e47afd1c3f9b68ce\/56x56-000000-80-0-0.jpg","picture_medium":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/acf97ceb30d48a97e47afd1c3f9b68ce\/250x250-000000-80-0-0.jpg","picture_big":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/acf97ceb30d48a97e47afd1c3f9b68ce\/500x500-000000-80-0-0.jpg","picture_xl":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/acf97ceb30d48a97e47afd1c3f9b68ce\/1000x1000-000000-80-0-0.jpg","radio":true,"tracklist":"https:\/\/api.deezer.com\/artist\/9093938\/top?limit=50","type":"artist","role":"Main"}],"artist":{"id":15166511,"name":"Lil Nas X","picture":"https:\/\/api.deezer.com\/artist\/15166511\/image","picture_small":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0f5f0e176c544db5f89b5cd837e279aa\/56x56-000000-80-0-0.jpg","picture_medium":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0f5f0e176c544db5f89b5cd837e279aa\/250x250-000000-80-0-0.jpg","picture_big":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0f5f0e176c544db5f89b5cd837e279aa\/500x500-000000-80-0-0.jpg","picture_xl":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0f5f0e176c544db5f89b5cd837e279aa\/1000x1000-000000-80-0-0.jpg","tracklist":"https:\/\/api.deezer.com\/artist\/15166511\/top?limit=50","type":"artist"},"type":"album","tracks":{"data":[{"id":1439691952,"readable":true,"title":"INDUSTRY BABY","title_short":"INDUSTRY BABY","title_version":"","link":"https:\/\/www.deezer.com\/track\/1439691952","duration":214,"rank":871042,"explicit_lyrics":true,"explicit_content_lyrics":1,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/5\/5\/7\/0\/5577101efe35c3671f18a1039c8c6d77.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/5\/5\/7\/0\/5577101efe35c3671f18a1039c8c6d77.mp3*~data=user_id=0,application_id=42~hmac=5162877bb6f8daeaf8161fae11352c09b718892f219c861537ad012c042ff59e","md5_image":"a65e86966cfd34b2aa292856136ef9ac","artist":{"id":15166511,"name":"Lil Nas X","tracklist":"https:\/\/api.deezer.com\/artist\/15166511\/top?limit=50","type":"artist"},"album":{"id":245878832,"title":"INDUSTRY BABY","cover":"https:\/\/api.deezer.com\/album\/245878832\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/a65e86966cfd34b2aa292856136ef9ac\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/a65e86966cfd34b2aa292856136ef9ac\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/a65e86966cfd34b2aa292856136ef9ac\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/a65e86966cfd34b2aa292856136ef9ac\/1000x1000-000000-80-0-0.jpg","md5_image":"a65e86966cfd34b2aa292856136ef9ac","tracklist":"https:\/\/api.deezer.com\/album\/245878832\/tracks","type":"album"},"type":"track"}]}} \ No newline at end of file diff --git a/testdata/https!/com.deezer.api/album/982951161 b/testdata/https!/com.deezer.api/album/982951161 new file mode 100644 index 00000000..74f8f33e --- /dev/null +++ b/testdata/https!/com.deezer.api/album/982951161 @@ -0,0 +1 @@ +{"id":982951161,"title":"Melodie","upc":"045778817160","link":"https:\/\/www.deezer.com\/album\/982951161","share":"https:\/\/www.deezer.com\/album\/982951161?utm_source=deezer&utm_content=album-982951161&utm_term=0_1789950661&utm_medium=web","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","genre_id":85,"genres":{"data":[{"id":85,"name":"Alternative","picture":"https:\/\/api.deezer.com\/genre\/85\/image","type":"genre"}]},"label":"Anti\/Epitaph","nb_tracks":11,"duration":1948,"fans":194,"release_date":"2026-09-18","record_type":"album","available":true,"tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","explicit_lyrics":true,"explicit_content_lyrics":4,"explicit_content_cover":2,"contributors":[{"id":12611413,"name":"Slow Pulp","link":"https:\/\/www.deezer.com\/artist\/12611413","share":"https:\/\/www.deezer.com\/artist\/12611413?utm_source=deezer&utm_content=artist-12611413&utm_term=0_1789950661&utm_medium=web","picture":"https:\/\/api.deezer.com\/artist\/12611413\/image","picture_small":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0635249c8ff489fefb621107277b0fa6\/56x56-000000-80-0-0.jpg","picture_medium":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0635249c8ff489fefb621107277b0fa6\/250x250-000000-80-0-0.jpg","picture_big":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0635249c8ff489fefb621107277b0fa6\/500x500-000000-80-0-0.jpg","picture_xl":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0635249c8ff489fefb621107277b0fa6\/1000x1000-000000-80-0-0.jpg","radio":true,"tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist","role":"Main"}],"artist":{"id":12611413,"name":"Slow Pulp","picture":"https:\/\/api.deezer.com\/artist\/12611413\/image","picture_small":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0635249c8ff489fefb621107277b0fa6\/56x56-000000-80-0-0.jpg","picture_medium":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0635249c8ff489fefb621107277b0fa6\/250x250-000000-80-0-0.jpg","picture_big":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0635249c8ff489fefb621107277b0fa6\/500x500-000000-80-0-0.jpg","picture_xl":"https:\/\/cdn-images.dzcdn.net\/images\/artist\/0635249c8ff489fefb621107277b0fa6\/1000x1000-000000-80-0-0.jpg","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"type":"album","tracks":{"data":[{"id":4022194781,"readable":true,"title":"Yellow and Green","title_short":"Yellow and Green","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194781","duration":186,"rank":451412,"explicit_lyrics":false,"explicit_content_lyrics":0,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/6\/a\/e\/0\/6ae3c624ff9bdb878930b61115231591.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/6\/a\/e\/0\/6ae3c624ff9bdb878930b61115231591.mp3*~data=user_id=0,application_id=42~hmac=9409aa8ac02e3840fdef4ca476ef422cd75b43f214a5b23dad43b1560a7381f5","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"},{"id":4022194791,"readable":true,"title":"These Days","title_short":"These Days","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194791","duration":208,"rank":441701,"explicit_lyrics":false,"explicit_content_lyrics":0,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/6\/0\/3\/0\/6032bde24e8857da72acc74da679669e.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/6\/0\/3\/0\/6032bde24e8857da72acc74da679669e.mp3*~data=user_id=0,application_id=42~hmac=6ff53758e57cac9225f87a3b587f1dbce9fb57ed3971b7eef4f2087fd13721c4","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"},{"id":4022194801,"readable":true,"title":"Better Man","title_short":"Better Man","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194801","duration":183,"rank":248341,"explicit_lyrics":true,"explicit_content_lyrics":1,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/d\/a\/0\/0\/da0464d1ac6d2141b91332ea3aa1386b.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/d\/a\/0\/0\/da0464d1ac6d2141b91332ea3aa1386b.mp3*~data=user_id=0,application_id=42~hmac=8f47268e4ac3a8489ff41a5cd8b0c462cd04af47543cf394c01d38b2be93ef20","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"},{"id":4022194811,"readable":true,"title":"Melodie","title_short":"Melodie","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194811","duration":125,"rank":418872,"explicit_lyrics":false,"explicit_content_lyrics":0,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/5\/c\/0\/0\/5c0b9687db3b0605b707f783ec27f0c8.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/5\/c\/0\/0\/5c0b9687db3b0605b707f783ec27f0c8.mp3*~data=user_id=0,application_id=42~hmac=efcb07a15356b57ec360f0713e29ff6649ed7f25ba12c7daea68cc46b58de460","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"},{"id":4022194821,"readable":true,"title":"Red Car","title_short":"Red Car","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194821","duration":208,"rank":560332,"explicit_lyrics":false,"explicit_content_lyrics":0,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/2\/6\/f\/0\/26ff45a5d2d196ab061349478cdaaa9f.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/2\/6\/f\/0\/26ff45a5d2d196ab061349478cdaaa9f.mp3*~data=user_id=0,application_id=42~hmac=4a2a867d3bc92c712dafe05ba94412746945c3c26fa75a9cc5bda0c73c311809","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"},{"id":4022194831,"readable":true,"title":"Not for Nothing","title_short":"Not for Nothing","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194831","duration":189,"rank":234239,"explicit_lyrics":false,"explicit_content_lyrics":0,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/d\/d\/3\/0\/dd3ad12c43118b01b5e71d05bf1f93ac.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/d\/d\/3\/0\/dd3ad12c43118b01b5e71d05bf1f93ac.mp3*~data=user_id=0,application_id=42~hmac=05cfa5b999a6d2c8bdfe47e90dcaab52ed373ef6c8ca4fcf1ff72656c65e7f68","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"},{"id":4022194841,"readable":true,"title":"Entertainer","title_short":"Entertainer","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194841","duration":174,"rank":397290,"explicit_lyrics":false,"explicit_content_lyrics":0,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/6\/4\/5\/0\/645d7d1f861546336bfe1d531eb9e0a6.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/6\/4\/5\/0\/645d7d1f861546336bfe1d531eb9e0a6.mp3*~data=user_id=0,application_id=42~hmac=270b5c6c6cc799e8ca5379e5bf2ead6e7c9fe4eb2648f70ccdbe0ba82b86af95","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"},{"id":4022194851,"readable":true,"title":"Like Me","title_short":"Like Me","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194851","duration":151,"rank":398253,"explicit_lyrics":false,"explicit_content_lyrics":0,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/5\/1\/1\/0\/511cd6fe0048667fc25b2e8e048d0205.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/5\/1\/1\/0\/511cd6fe0048667fc25b2e8e048d0205.mp3*~data=user_id=0,application_id=42~hmac=6c1a238dafbab178364069f9138a851956d7f39f381146bde96d88d2226aa82c","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"},{"id":4022194861,"readable":true,"title":"Spill","title_short":"Spill","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194861","duration":195,"rank":228180,"explicit_lyrics":false,"explicit_content_lyrics":0,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/8\/a\/2\/0\/8a2804613b65440a65818f501c69d8c1.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/8\/a\/2\/0\/8a2804613b65440a65818f501c69d8c1.mp3*~data=user_id=0,application_id=42~hmac=9795ce3ec7dbfd5627ef6cdc914ad8c1224280c28463086b4d33ed31f9742985","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"},{"id":4022194871,"readable":true,"title":"Up to You","title_short":"Up to You","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194871","duration":163,"rank":395580,"explicit_lyrics":false,"explicit_content_lyrics":0,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/8\/3\/8\/0\/838ae85fa7a21508ca2327af8651913f.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/8\/3\/8\/0\/838ae85fa7a21508ca2327af8651913f.mp3*~data=user_id=0,application_id=42~hmac=15e9f5f64649d6bb63714ad8fd516cc9aaa0e15ea34815ac7b988a110fc71288","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"},{"id":4022194881,"readable":true,"title":"Slip Away","title_short":"Slip Away","title_version":"","link":"https:\/\/www.deezer.com\/track\/4022194881","duration":166,"rank":408325,"explicit_lyrics":false,"explicit_content_lyrics":0,"explicit_content_cover":2,"preview":"https:\/\/cdnt-preview.dzcdn.net\/api\/1\/1\/c\/f\/f\/0\/cff2275e15cf29b2f4403b96cea4b123.mp3?hdnea=exp=1789951561~acl=\/api\/1\/1\/c\/f\/f\/0\/cff2275e15cf29b2f4403b96cea4b123.mp3*~data=user_id=0,application_id=42~hmac=f1da57630a9388b2a8f68bf91e41449b3e4fa5f9968b868413978978a8736fc0","md5_image":"845e0ea1fd1619049f23bbdb7692b253","artist":{"id":12611413,"name":"Slow Pulp","tracklist":"https:\/\/api.deezer.com\/artist\/12611413\/top?limit=50","type":"artist"},"album":{"id":982951161,"title":"Melodie","cover":"https:\/\/api.deezer.com\/album\/982951161\/image","cover_small":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/56x56-000000-80-0-0.jpg","cover_medium":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/250x250-000000-80-0-0.jpg","cover_big":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/500x500-000000-80-0-0.jpg","cover_xl":"https:\/\/cdn-images.dzcdn.net\/images\/cover\/845e0ea1fd1619049f23bbdb7692b253\/1000x1000-000000-80-0-0.jpg","md5_image":"845e0ea1fd1619049f23bbdb7692b253","tracklist":"https:\/\/api.deezer.com\/album\/982951161\/tracks","type":"album"},"type":"track"}]}} \ No newline at end of file diff --git a/testdata/https!/com.qobuz.www/api.json/0.2/album/get!album_id=hgukd7uvy8lqc b/testdata/https!/com.qobuz.www/api.json/0.2/album/get!album_id=hgukd7uvy8lqc new file mode 100644 index 00000000..5cf7682f --- /dev/null +++ b/testdata/https!/com.qobuz.www/api.json/0.2/album/get!album_id=hgukd7uvy8lqc @@ -0,0 +1 @@ +{"maximum_bit_depth":24,"image":{"small":"https:\/\/static.qobuz.com\/images\/covers\/qc\/8l\/hgukd7uvy8lqc_230.jpg","thumbnail":"https:\/\/static.qobuz.com\/images\/covers\/qc\/8l\/hgukd7uvy8lqc_50.jpg","large":"https:\/\/static.qobuz.com\/images\/covers\/qc\/8l\/hgukd7uvy8lqc_600.jpg","back":null},"media_count":1,"artist":{"image":null,"name":"Lil Nas X","id":4384197,"albums_count":175,"slug":"lil-nas-x","picture":null},"artists":[{"id":4384197,"name":"Lil Nas X","roles":["main-artist"]},{"id":3337986,"name":"Jack Harlow","roles":["main-artist"]}],"upc":"0886449403912","released_at":1626991200,"label":{"name":"Columbia","id":4592,"albums_count":28084,"supplier_id":23,"slug":"columbia"},"title":"INDUSTRY BABY","qobuz_id":127040660,"version":null,"url":"https:\/\/www.qobuz.com\/fr-fr\/album\/industry-baby-lil-nas-x-jack-harlow\/hgukd7uvy8lqc","slug":"industry-baby-lil-nas-x-jack-harlow","duration":212,"parental_warning":true,"popularity":0,"tracks_count":1,"genre":{"path":[133],"color":"#0070ef","name":"Hip-Hop\/Rap","id":133,"slug":"rap-hip-hop"},"maximum_channel_count":2,"id":"hgukd7uvy8lqc","maximum_sampling_rate":48,"articles":[],"release_date_original":"2021-07-23","release_date_download":"2021-07-23","release_date_stream":"2021-07-23","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1777532400,"streamable_at":1777532400,"hires":true,"hires_streamable":true,"ai_generated":null,"awards":[],"goodies":[],"area":null,"catchline":"","composer":{"id":573076,"name":"Various Composers","slug":"various-composers","albums_count":15137836,"picture":null,"image":null},"created_at":0,"genres_list":["Rap"],"period":null,"copyright":"(P) 2021 Columbia Records, a Division of Sony Music Entertainment","is_official":true,"maximum_technical_specifications":"24 bits \/ 48.0 kHz - Stereo","product_sales_factors_monthly":0,"product_sales_factors_weekly":0,"product_sales_factors_yearly":0,"product_type":"single","product_url":"\/fr-fr\/album\/industry-baby-lil-nas-x-jack-harlow\/hgukd7uvy8lqc","recording_information":"","relative_url":"\/album\/industry-baby-lil-nas-x-jack-harlow\/hgukd7uvy8lqc","release_tags":[],"release_type":"single","subtitle":"Lil Nas X & Jack Harlow","tracks":{"offset":0,"limit":500,"total":1,"items":[{"maximum_bit_depth":24,"copyright":"(P) 2021 Columbia Records, a Division of Sony Music Entertainment","performers":"Lil Nas X, AssociatedPerformer, MainArtist - Jack Harlow, AssociatedPerformer, Background Vocal, MainArtist, Composer, Lyricist - Lil Nas X & Jack Harlow, AssociatedPerformer - Montero Hill, Background Vocal, Composer, Lyricist - David Biral, Bass, Keyboards, Programmer, Vocal, Composer, Lyricist, Assistant Engineer, Vocal Producer - Denzel Baptiste, Background Vocal, Bass, Keyboards, Programmer, Vocal, Composer, Lyricist, Recording Engineer, Vocal Producer - Nick Lee, Horn, Composer, Lyricist, Co-Producer - Raul Cubina, Programmer, Composer, Lyricist - Roy Lenzo, Programmer, Composer, Lyricist, AdditionalStudioProducer, Recording Engineer - Kanye West, Composer, Lyricist, Producer - Ryan Svendsen, Trumpet - Mark Williams, Composer, Lyricist - Maclean Porter, Vocal - Take A Daytrip, Producer - Ojivolta, AdditionalStudioProducer - Drew Sliger, AdditionalStudioProducer, Assistant Engineer - Nickie Jon Pab\u00f3n, Mixing Engineer, Recording Engineer - David Dickenson, Assistant Engineer - Mervin Hernandez, Assistant Engineer - Patrizio 'Teezio' Pigliapoco, Mixing Engineer - Ashley Jackson, Assistant Engineer - Eric Lagg, Mastering Engineer","audio_info":{"replaygain_track_peak":1,"replaygain_track_gain":-8.84},"performer":{"name":"Lil Nas X","id":4384197},"work":null,"composer":{"name":"Jack Harlow","id":3337986},"isrc":"USSM12104539","title":"INDUSTRY BABY","version":null,"duration":212,"parental_warning":true,"track_number":1,"maximum_channel_count":2,"id":127040661,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2021-07-23","release_date_download":"2021-07-23","release_date_stream":"2021-07-23","release_date_purchase":"2021-07-23","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1777532400,"streamable_at":1777532400,"hires":true,"hires_streamable":true}]},"description":""} \ No newline at end of file diff --git a/testdata/https!/com.qobuz.www/api.json/0.2/album/get!album_id=ohej7aqvk85gt b/testdata/https!/com.qobuz.www/api.json/0.2/album/get!album_id=ohej7aqvk85gt new file mode 100644 index 00000000..de257c5e --- /dev/null +++ b/testdata/https!/com.qobuz.www/api.json/0.2/album/get!album_id=ohej7aqvk85gt @@ -0,0 +1 @@ +{"maximum_bit_depth":24,"image":{"small":"https:\/\/static.qobuz.com\/images\/covers\/gt\/85\/ohej7aqvk85gt_230.jpg","thumbnail":"https:\/\/static.qobuz.com\/images\/covers\/gt\/85\/ohej7aqvk85gt_50.jpg","large":"https:\/\/static.qobuz.com\/images\/covers\/gt\/85\/ohej7aqvk85gt_600.jpg","back":null},"media_count":1,"artist":{"image":null,"name":"Slow Pulp","id":7230866,"albums_count":24,"slug":"slow-pulp","picture":null},"artists":[{"id":7230866,"name":"Slow Pulp","roles":["main-artist"]}],"upc":"0045778817160","released_at":1789682400,"label":{"name":"Anti\/Epitaph","id":10623438,"albums_count":35,"supplier_id":41,"slug":"antiepitaph"},"title":"Melodie","qobuz_id":418639465,"version":null,"url":"https:\/\/www.qobuz.com\/fr-fr\/album\/melodie-slow-pulp\/ohej7aqvk85gt","slug":"melodie-slow-pulp","duration":1948,"parental_warning":true,"popularity":0,"tracks_count":11,"genre":{"path":[112,119,113],"color":"#0070ef","name":"Alternative & Indie","id":113,"slug":"alternatif-et-inde"},"maximum_channel_count":2,"id":"ohej7aqvk85gt","maximum_sampling_rate":48,"articles":[],"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1785394800,"streamable_at":1785308400,"hires":true,"hires_streamable":true,"ai_generated":false,"awards":[],"goodies":[],"area":null,"catchline":"","composer":{"id":573076,"name":"Various Composers","slug":"various-composers","albums_count":16809698,"picture":null,"image":null},"created_at":0,"genres_list":["Pop\/Rock","Pop\/Rock\u2192Rock","Pop\/Rock\u2192Rock\u2192Alternatif et Ind\u00e9"],"period":null,"copyright":"2026 Anti 2026 Anti","is_official":true,"maximum_technical_specifications":"24 bits \/ 48.0 kHz - Stereo","product_sales_factors_monthly":0,"product_sales_factors_weekly":0,"product_sales_factors_yearly":0,"product_type":"album","product_url":"\/fr-fr\/album\/melodie-slow-pulp\/ohej7aqvk85gt","recording_information":"","relative_url":"\/album\/melodie-slow-pulp\/ohej7aqvk85gt","release_tags":[],"release_type":"album","subtitle":"Slow Pulp","tracks":{"offset":0,"limit":500,"total":11,"items":[{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer - Emily Massey, Producer, Composer, Lyricist - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":0.973511,"replaygain_track_gain":-10.9},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621001","title":"Yellow and Green","version":null,"duration":186,"parental_warning":false,"track_number":1,"maximum_channel_count":2,"id":418639466,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1789714800,"streamable_at":1789714800,"hires":true,"hires_streamable":true},{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer, Lyricist - Emily Massey, Producer, Composer - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":1,"replaygain_track_gain":-10.26},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621002","title":"These Days","version":null,"duration":208,"parental_warning":false,"track_number":2,"maximum_channel_count":2,"id":418639467,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1789714800,"streamable_at":1789714800,"hires":true,"hires_streamable":true},{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer, Lyricist - Emily Massey, Producer, Composer - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":0.979553,"replaygain_track_gain":-12.23},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621003","title":"Better Man","version":null,"duration":183,"parental_warning":true,"track_number":3,"maximum_channel_count":2,"id":418639468,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1785308400,"streamable_at":1785308400,"hires":true,"hires_streamable":true},{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer, Lyricist - Emily Massey, Producer, Composer - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":0.984222,"replaygain_track_gain":-12.4},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621004","title":"Melodie","version":null,"duration":125,"parental_warning":false,"track_number":4,"maximum_channel_count":2,"id":418639469,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1789714800,"streamable_at":1789714800,"hires":true,"hires_streamable":true},{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer - Emily Massey, Producer, Composer, Lyricist - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":0.994873,"replaygain_track_gain":-11.02},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621005","title":"Red Car","version":null,"duration":208,"parental_warning":false,"track_number":5,"maximum_channel_count":2,"id":418639470,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1789714800,"streamable_at":1789714800,"hires":true,"hires_streamable":true},{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer, Lyricist - Emily Massey, Producer, Composer - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":0.964447,"replaygain_track_gain":-9.11},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621006","title":"Not for Nothing","version":null,"duration":189,"parental_warning":false,"track_number":6,"maximum_channel_count":2,"id":418639471,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1785308400,"streamable_at":1785308400,"hires":true,"hires_streamable":true},{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer - Emily Massey, Producer, Composer, Lyricist - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":0.980255,"replaygain_track_gain":-10.35},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621007","title":"Entertainer","version":null,"duration":174,"parental_warning":false,"track_number":7,"maximum_channel_count":2,"id":418639472,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1789714800,"streamable_at":1789714800,"hires":true,"hires_streamable":true},{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer - Emily Massey, Producer, Composer, Lyricist - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":0.960297,"replaygain_track_gain":-10.91},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621008","title":"Like Me","version":null,"duration":151,"parental_warning":false,"track_number":8,"maximum_channel_count":2,"id":418639473,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1789714800,"streamable_at":1789714800,"hires":true,"hires_streamable":true},{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer - Emily Massey, Producer, Composer, Lyricist - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":0.972778,"replaygain_track_gain":-10.82},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621009","title":"Spill","version":null,"duration":195,"parental_warning":false,"track_number":9,"maximum_channel_count":2,"id":418639474,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1786431600,"streamable_at":1786431600,"hires":true,"hires_streamable":true},{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer - Emily Massey, Producer, Composer, Lyricist - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":0.966766,"replaygain_track_gain":-10.58},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621010","title":"Up to You","version":null,"duration":163,"parental_warning":false,"track_number":10,"maximum_channel_count":2,"id":418639475,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1789714800,"streamable_at":1789714800,"hires":true,"hires_streamable":true},{"maximum_bit_depth":24,"copyright":"2026 Anti","performers":"Slow Pulp, MainArtist - Elliott Kozel, Producer - Henry Stoehr, Producer, MixingEngineer, Composer, Lyricist - Emily Massey, Producer, Composer - Ruairi O'Flaherty, MasteringEngineer - Slow Hope Publishing, MusicPublisher","audio_info":{"replaygain_track_peak":0.964233,"replaygain_track_gain":-9.02},"performer":{"name":"Slow Pulp","id":7230866},"work":null,"composer":{"name":"Henry Stoehr","id":7255835},"isrc":"USEP42621011","title":"Slip Away","version":null,"duration":166,"parental_warning":false,"track_number":11,"maximum_channel_count":2,"id":418639476,"media_number":1,"maximum_sampling_rate":48,"release_date_original":"2026-09-18","release_date_download":"2026-09-18","release_date_stream":"2026-09-18","release_date_purchase":"2026-09-18","purchasable":true,"streamable":true,"previewable":true,"sampleable":true,"downloadable":true,"displayable":true,"purchasable_at":1789714800,"streamable_at":1789714800,"hires":true,"hires_streamable":true}]},"description":""} \ No newline at end of file diff --git a/testdata/https!/com.tidal.openapi/v2/albums!countryCode=US&include=artists,items.artists,prov#1a82246 b/testdata/https!/com.tidal.openapi/v2/albums!countryCode=US&include=artists,items.artists,prov#1a82246 new file mode 100644 index 00000000..dbef721a --- /dev/null +++ b/testdata/https!/com.tidal.openapi/v2/albums!countryCode=US&include=artists,items.artists,prov#1a82246 @@ -0,0 +1 @@ +{"data":[{"id":"524698793","type":"albums","attributes":{"title":"Melodie","barcodeId":"0045778817160","numberOfVolumes":1,"numberOfItems":11,"duration":"PT32M35S","explicit":true,"releaseDate":"2026-09-18","copyright":{"text":"Anti"},"popularity":0.5795084228718332,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/album/524698793","meta":{"type":"TIDAL_SHARING"}}],"type":"ALBUM","albumType":"ALBUM","createdAt":"2026-05-14T17:20:57Z"},"relationships":{"providers":{"data":[{"id":"547","type":"providers"}],"links":{"self":"/albums/524698793/relationships/providers?countryCode=US"}},"items":{"data":[{"id":"524698794","type":"tracks","meta":{"volumeNumber":1,"trackNumber":1,"itemCursor":"1FrazIkDk2y5Yg"}},{"id":"524698796","type":"tracks","meta":{"volumeNumber":1,"trackNumber":2,"itemCursor":"1FrazIkDk2y5gw"}},{"id":"524698797","type":"tracks","meta":{"volumeNumber":1,"trackNumber":3,"itemCursor":"1FrazIkDk2y5l4"}},{"id":"524698799","type":"tracks","meta":{"volumeNumber":1,"trackNumber":4,"itemCursor":"1FrazIkDk2y5tK"}},{"id":"524698800","type":"tracks","meta":{"volumeNumber":1,"trackNumber":5,"itemCursor":"1FrazIkDk440N8"}},{"id":"524698801","type":"tracks","meta":{"volumeNumber":1,"trackNumber":6,"itemCursor":"1FrazIkDk440RG"}},{"id":"524698802","type":"tracks","meta":{"volumeNumber":1,"trackNumber":7,"itemCursor":"1FrazIkDk440VO"}},{"id":"524698803","type":"tracks","meta":{"volumeNumber":1,"trackNumber":8,"itemCursor":"1FrazIkDk440ZW"}},{"id":"524698804","type":"tracks","meta":{"volumeNumber":1,"trackNumber":9,"itemCursor":"1FrazIkDk440de"}},{"id":"524698806","type":"tracks","meta":{"volumeNumber":1,"trackNumber":10,"itemCursor":"1FrazIkDk440lu"}},{"id":"524698808","type":"tracks","meta":{"volumeNumber":1,"trackNumber":11,"itemCursor":"1FrazIkDk440uA"}}],"links":{"self":"/albums/524698793/relationships/items?countryCode=US"}},"coverArt":{"data":[{"id":"2xpmpI1s9E0hqY1fVDwmln","type":"artworks"}],"links":{"self":"/albums/524698793/relationships/coverArt?countryCode=US"}},"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/albums/524698793/relationships/artists?countryCode=US"}}}}],"links":{"self":"/albums?filter%5Bid%5D=524698793&include=artists%2CcoverArt%2Citems.artists%2Cproviders&countryCode=US"},"included":[{"id":"8837991","type":"artists","attributes":{"name":"Slow Pulp","popularity":0.7191377456117171,"numberOfFollowers":8982,"externalLinks":[{"href":"https://www.facebook.com/slowpulpband","meta":{"type":"FACEBOOK"}},{"href":"https://tidal.com/browse/artist/8837991","meta":{"type":"TIDAL_SHARING"}}],"ownerType":"LABEL"}},{"id":"2xpmpI1s9E0hqY1fVDwmln","type":"artworks","attributes":{"mediaType":"IMAGE","files":[{"href":"https://resources.tidal.com/images/2c2f23da/f004/4ee2/83c6/025ac29a3765/1280x1280.jpg","meta":{"width":1280,"height":1280}},{"href":"https://resources.tidal.com/images/2c2f23da/f004/4ee2/83c6/025ac29a3765/1080x1080.jpg","meta":{"width":1080,"height":1080}},{"href":"https://resources.tidal.com/images/2c2f23da/f004/4ee2/83c6/025ac29a3765/750x750.jpg","meta":{"width":750,"height":750}},{"href":"https://resources.tidal.com/images/2c2f23da/f004/4ee2/83c6/025ac29a3765/640x640.jpg","meta":{"width":640,"height":640}},{"href":"https://resources.tidal.com/images/2c2f23da/f004/4ee2/83c6/025ac29a3765/320x320.jpg","meta":{"width":320,"height":320}},{"href":"https://resources.tidal.com/images/2c2f23da/f004/4ee2/83c6/025ac29a3765/160x160.jpg","meta":{"width":160,"height":160}},{"href":"https://resources.tidal.com/images/2c2f23da/f004/4ee2/83c6/025ac29a3765/80x80.jpg","meta":{"width":80,"height":80}}],"visualMetadata":{"selectedPaletteColor":"#765268","blurHash":"UG5P6EfmbGfltWa~fQjuV=fPjZjtf.oLj[az","status":"OK"}}},{"id":"547","type":"providers","attributes":{"name":"IIP-DDS"}},{"id":"524698794","type":"tracks","attributes":{"title":"Yellow and Green","version":null,"isrc":"USEP42621001","duration":"PT3M7S","copyright":{"text":"Anti"},"explicit":false,"popularity":0.5402875656657181,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698794","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698794/relationships/artists?countryCode=US"}}}},{"id":"524698796","type":"tracks","attributes":{"title":"These Days","version":null,"isrc":"USEP42621002","duration":"PT3M29S","copyright":{"text":"Anti"},"explicit":false,"popularity":0.5402875656657181,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698796","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698796/relationships/artists?countryCode=US"}}}},{"id":"524698797","type":"tracks","attributes":{"title":"Better Man","version":null,"isrc":"USEP42621003","duration":"PT3M3S","copyright":{"text":"Anti"},"explicit":true,"popularity":0.583289863020172,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698797","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698797/relationships/artists?countryCode=US"}}}},{"id":"524698799","type":"tracks","attributes":{"title":"Melodie","version":null,"isrc":"USEP42621004","duration":"PT2M6S","copyright":{"text":"Anti"},"explicit":false,"popularity":0.5402875656657181,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698799","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698799/relationships/artists?countryCode=US"}}}},{"id":"524698800","type":"tracks","attributes":{"title":"Red Car","version":null,"isrc":"USEP42621005","duration":"PT3M29S","copyright":{"text":"Anti"},"explicit":false,"popularity":0.5402875656657181,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698800","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698800/relationships/artists?countryCode=US"}}}},{"id":"524698801","type":"tracks","attributes":{"title":"Not for Nothing","version":null,"isrc":"USEP42621006","duration":"PT3M9S","copyright":{"text":"Anti"},"explicit":false,"popularity":0.5395562377123957,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698801","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698801/relationships/artists?countryCode=US"}}}},{"id":"524698802","type":"tracks","attributes":{"title":"Entertainer","version":null,"isrc":"USEP42621007","duration":"PT2M54S","copyright":{"text":"Anti"},"explicit":false,"popularity":0.5402875656657181,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698802","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698802/relationships/artists?countryCode=US"}}}},{"id":"524698803","type":"tracks","attributes":{"title":"Like Me","version":null,"isrc":"USEP42621008","duration":"PT2M32S","copyright":{"text":"Anti"},"explicit":false,"popularity":0.5402875656657181,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698803","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698803/relationships/artists?countryCode=US"}}}},{"id":"524698804","type":"tracks","attributes":{"title":"Spill","version":null,"isrc":"USEP42621009","duration":"PT3M16S","copyright":{"text":"Anti"},"explicit":false,"popularity":0.5395562377123957,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698804","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698804/relationships/artists?countryCode=US"}}}},{"id":"524698806","type":"tracks","attributes":{"title":"Up to You","version":null,"isrc":"USEP42621010","duration":"PT2M44S","copyright":{"text":"Anti"},"explicit":false,"popularity":0.5402875656657181,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698806","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698806/relationships/artists?countryCode=US"}}}},{"id":"524698808","type":"tracks","attributes":{"title":"Slip Away","version":null,"isrc":"USEP42621011","duration":"PT2M46S","copyright":{"text":"Anti"},"explicit":false,"popularity":0.5402875656657181,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/524698808","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2026-05-14T17:20:57Z"},"relationships":{"artists":{"data":[{"id":"8837991","type":"artists"}],"links":{"self":"/tracks/524698808/relationships/artists?countryCode=US"}}}}]} \ No newline at end of file diff --git a/testdata/https!/com.tidal.openapi/v2/albums!countryCode=US&include=artists,items.artists,prov#d5a14fd b/testdata/https!/com.tidal.openapi/v2/albums!countryCode=US&include=artists,items.artists,prov#d5a14fd new file mode 100644 index 00000000..9f8fde45 --- /dev/null +++ b/testdata/https!/com.tidal.openapi/v2/albums!countryCode=US&include=artists,items.artists,prov#d5a14fd @@ -0,0 +1 @@ +{"data":[{"id":"191569964","type":"albums","attributes":{"title":"INDUSTRY BABY","barcodeId":"886449403912","numberOfVolumes":1,"numberOfItems":1,"duration":"PT3M32S","explicit":true,"releaseDate":"2021-07-23","copyright":{"text":"(P) 2021 Columbia Records, a Division of Sony Music Entertainment"},"popularity":0.6925433999951623,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/album/191569964","meta":{"type":"TIDAL_SHARING"}}],"type":"SINGLE","albumType":"SINGLE","createdAt":"2021-07-20T16:35:08Z"},"relationships":{"items":{"data":[{"id":"191569965","type":"tracks","meta":{"volumeNumber":1,"trackNumber":1,"itemCursor":"1A34Liyz8BuuD4"}}],"links":{"self":"/albums/191569964/relationships/items?countryCode=US"}},"providers":{"data":[{"id":"50","type":"providers"}],"links":{"self":"/albums/191569964/relationships/providers?countryCode=US"}},"artists":{"data":[{"id":"9996466","type":"artists"},{"id":"7286900","type":"artists"}],"links":{"self":"/albums/191569964/relationships/artists?countryCode=US"}},"coverArt":{"data":[{"id":"2xpmpI1s9DzIX1BtjbiU4q","type":"artworks"}],"links":{"self":"/albums/191569964/relationships/coverArt?countryCode=US"}}}}],"links":{"self":"/albums?filter%5Bid%5D=191569964&include=artists%2CcoverArt%2Citems.artists%2Cproviders&countryCode=US"},"included":[{"id":"7286900","type":"artists","attributes":{"name":"Jack Harlow","popularity":0.8674078583717346,"numberOfFollowers":208498,"externalLinks":[{"href":"https://tidal.com/browse/artist/7286900","meta":{"type":"TIDAL_SHARING"}}],"ownerType":"LABEL"}},{"id":"9996466","type":"artists","attributes":{"name":"Lil Nas X","popularity":0.8637350797653198,"numberOfFollowers":362926,"externalLinks":[{"href":"https://tidal.com/browse/artist/9996466","meta":{"type":"TIDAL_SHARING"}}],"ownerType":"LABEL"}},{"id":"2xpmpI1s9DzIX1BtjbiU4q","type":"artworks","attributes":{"mediaType":"IMAGE","files":[{"href":"https://resources.tidal.com/images/0eb92f59/070d/4cea/8fec/797e05b8083d/1280x1280.jpg","meta":{"width":1280,"height":1280}},{"href":"https://resources.tidal.com/images/0eb92f59/070d/4cea/8fec/797e05b8083d/1080x1080.jpg","meta":{"width":1080,"height":1080}},{"href":"https://resources.tidal.com/images/0eb92f59/070d/4cea/8fec/797e05b8083d/750x750.jpg","meta":{"width":750,"height":750}},{"href":"https://resources.tidal.com/images/0eb92f59/070d/4cea/8fec/797e05b8083d/640x640.jpg","meta":{"width":640,"height":640}},{"href":"https://resources.tidal.com/images/0eb92f59/070d/4cea/8fec/797e05b8083d/320x320.jpg","meta":{"width":320,"height":320}},{"href":"https://resources.tidal.com/images/0eb92f59/070d/4cea/8fec/797e05b8083d/160x160.jpg","meta":{"width":160,"height":160}},{"href":"https://resources.tidal.com/images/0eb92f59/070d/4cea/8fec/797e05b8083d/80x80.jpg","meta":{"width":80,"height":80}}],"visualMetadata":{"selectedPaletteColor":"#7C585D","blurHash":"UiIiFRt6%%xaY7ofIoj[JCazRjbFM|f6oef*","status":"OK"}}},{"id":"50","type":"providers","attributes":{"name":"Sony Music"}},{"id":"191569965","type":"tracks","attributes":{"title":"INDUSTRY BABY","version":null,"isrc":"USSM12104539","duration":"PT3M32S","copyright":{"text":"(P) 2021 Columbia Records, a Division of Sony Music Entertainment"},"explicit":true,"popularity":0.8638955944246444,"accessType":"PUBLIC","availability":["STREAM","DJ"],"mediaTags":["HIRES_LOSSLESS","LOSSLESS"],"externalLinks":[{"href":"https://tidal.com/browse/track/191569965","meta":{"type":"TIDAL_SHARING"}}],"spotlighted":false,"createdAt":"2021-07-20T16:35:08Z"},"relationships":{"artists":{"data":[{"id":"9996466","type":"artists"},{"id":"7286900","type":"artists"}],"links":{"self":"/tracks/191569965/relationships/artists?countryCode=US"}}}}]} \ No newline at end of file diff --git a/testdata/https!/jp.mora.cf/contents/package/0000/00000083/0048/578/965/packageMeta.json b/testdata/https!/jp.mora.cf/contents/package/0000/00000083/0048/578/965/packageMeta.json new file mode 100644 index 00000000..158c8a41 --- /dev/null +++ b/testdata/https!/jp.mora.cf/contents/package/0000/00000083/0048/578/965/packageMeta.json @@ -0,0 +1,1413 @@ +{ + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bannerLinkUrl0": "https://mora.jp/etc/highreso", + "bannerLinkUrl1": null, + "bannerLinkUrl2": null, + "bannerLinkUrl3": null, + "bannerTargetBlank0": "1", + "bannerTargetBlank1": null, + "bannerTargetBlank2": null, + "bannerTargetBlank3": null, + "bannerimage0": "hires_tanoshimikata.png", + "bannerimage1": null, + "bannerimage2": null, + "bannerimage3": null, + "bitPerSample": "24", + "callCoupon": "0", + "catchcopy": null, + "cdPartNo": null, + "channelConf": "2", + "comingSoon": null, + "containCoupon": "0", + "couponProduct": "0", + "dispFlg": "0", + "dispStartDate": "2026/09/18 00:00:00", + "dispStartDateStr": "2026.09.18", + "displayLabelname": "ユニバーサル ミュージック合同会社", + "distFlg": "0", + "distPartNo": "00881061522348", + "endDate": null, + "explicitFlg": "1", + "fullsizeimage": "0048578965.200.jpg", + "includedMedia": 4, + "labelCode": "43000006", + "labelId": "00000083", + "labelcompanyname": "School Boy/Interscope Records", + "labelname": "ユニバーサル ミュージック合同会社", + "listimage": "0048578965.80.jpg", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578965, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "metaDescription": null, + "msin": null, + "musicType": "1", + "packageComment": null, + "packageId": "00881061522348", + "packageUrl": "https://cf.mora.jp/contents/package/0000/00000083/0048/578/965/", + "packageimage": "0048578965.100.jpg", + "prFlg": "0", + "price": 5093, + "priceWithoutTax": 4630, + "productTypeNo": 9, + "qualityClass": 1, + "relatedPackage": [], + "samplingFreq": 48000, + "special": null, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tie": "", + "title": "Day and Night", + "titleKana": "デイアンドナイト", + "trackList": [ + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01001", + "duration": 252, + "durationStr": "4:12", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578967.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578967.80.jpg", + "lyrics": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578967, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578967", + "packageimage": "0048578967.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "After All", + "titleKana": "アフターオール", + "trackNo": 1, + "weblistsizeimage": "0048578967.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Magnus Lidehäll, Patrik Berger, Pontus Winnberg, Carly Rae Jepsen", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01002", + "duration": 177, + "durationStr": "2:57", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578969.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578969.80.jpg", + "lyrics": "Magnus Lidehäll, Patrik Berger, Pontus Winnberg, Carly Rae Jepsen", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578969, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578969", + "packageimage": "0048578969.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Habits of Creatures", + "titleKana": "ハビッツオブクリーチャー", + "trackNo": 2, + "weblistsizeimage": "0048578969.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Elias Kapari, Carly Rae Jepsen, Noonie Bao, Markus Krunegård", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01003", + "duration": 194, + "durationStr": "3:14", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578971.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578971.80.jpg", + "lyrics": "Elias Kapari, Carly Rae Jepsen, Noonie Bao, Markus Krunegård", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578971, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578971", + "packageimage": "0048578971.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Versailles", + "titleKana": "ベルサイレス", + "trackNo": 3, + "weblistsizeimage": "0048578971.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01004", + "duration": 202, + "durationStr": "3:22", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578973.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578973.80.jpg", + "lyrics": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578973, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578973", + "packageimage": "0048578973.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "On Wires", + "titleKana": "オンワイアーズ", + "trackNo": 4, + "weblistsizeimage": "0048578973.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Magnus Lidehäll, Vincent Pontare, Pontus Winnberg, Patrik Berger, Carly Rae Jepsen", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01005", + "duration": 149, + "durationStr": "2:29", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578975.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578975.80.jpg", + "lyrics": "Magnus Lidehäll, Vincent Pontare, Pontus Winnberg, Patrik Berger, Carly Rae Jepsen", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578975, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578975", + "packageimage": "0048578975.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Blue Skies", + "titleKana": "ブルースカイズ", + "trackNo": 5, + "weblistsizeimage": "0048578975.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Vincent Pontare, Pontus Winnberg, Carly Rae Jepsen, Finn Keane", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01006", + "duration": 210, + "durationStr": "3:30", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578977.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578977.80.jpg", + "lyrics": "Vincent Pontare, Pontus Winnberg, Carly Rae Jepsen, Finn Keane", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578977, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578977", + "packageimage": "0048578977.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Burning Heart", + "titleKana": "バーニングハート", + "trackNo": 6, + "weblistsizeimage": "0048578977.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01007", + "duration": 229, + "durationStr": "3:49", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578979.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578979.80.jpg", + "lyrics": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578979, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578979", + "packageimage": "0048578979.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Wild Child", + "titleKana": "ワイルドチャイルド", + "trackNo": 7, + "weblistsizeimage": "0048578979.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Magnus Lidehäll, Pontus Winnberg, Patrik Berger, Cole M.G.N., Carly Rae Jepsen", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01008", + "duration": 249, + "durationStr": "4:09", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578980.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578980.80.jpg", + "lyrics": "Magnus Lidehäll, Pontus Winnberg, Patrik Berger, Cole M.G.N., Carly Rae Jepsen", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578980, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578980", + "packageimage": "0048578980.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Good Fine Alright", + "titleKana": "グッドファインオールライト", + "trackNo": 8, + "weblistsizeimage": "0048578980.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "John Hill, Cole M.G.N., Carly Rae Jepsen", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01009", + "duration": 177, + "durationStr": "2:57", + "endDate": null, + "explicitFlg": "1", + "fullsizeimage": "0048578981.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578981.80.jpg", + "lyrics": "John Hill, Cole M.G.N., Carly Rae Jepsen", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578981, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578981", + "packageimage": "0048578981.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Something Tragic", + "titleKana": "サムシングトラジック", + "trackNo": 9, + "weblistsizeimage": "0048578981.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Oliver Lundström, Carly Rae Jepsen, Sophia Somajo", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01010", + "duration": 183, + "durationStr": "3:03", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578982.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578982.80.jpg", + "lyrics": "Oliver Lundström, Carly Rae Jepsen, Sophia Somajo", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578982, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578982", + "packageimage": "0048578982.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Soft", + "titleKana": "ソフト", + "trackNo": 10, + "weblistsizeimage": "0048578982.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Kyle Shearer, Mathieu Jomphe Lépine, Carly Rae Jepsen, Max Bellavance, Nate Campany", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01011", + "duration": 210, + "durationStr": "3:30", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578983.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578983.80.jpg", + "lyrics": "Kyle Shearer, Mathieu Jomphe Lépine, Carly Rae Jepsen, Max Bellavance, Nate Campany", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578983, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578983", + "packageimage": "0048578983.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Lonely Side of the Bed", + "titleKana": "ロンリーサイドオブザベッド", + "trackNo": 11, + "weblistsizeimage": "0048578983.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Cole M.G.N., Carly Rae Jepsen", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S01012", + "duration": 228, + "durationStr": "3:48", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578984.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578984.80.jpg", + "lyrics": "Cole M.G.N., Carly Rae Jepsen", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578984, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578984", + "packageimage": "0048578984.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Just a Little Walk on the Moon", + "titleKana": "ジャストアリトルウォークオンザムーン", + "trackNo": 12, + "weblistsizeimage": "0048578984.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02013", + "duration": 319, + "durationStr": "5:19", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578985.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578985.80.jpg", + "lyrics": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578985, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578985", + "packageimage": "0048578985.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Never Let a Good Thing Die", + "titleKana": "ネバーレットアグッドシングダイ", + "trackNo": 13, + "weblistsizeimage": "0048578985.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Magnus Lidehäll, Patrik Berger, Pontus Winnberg, Carly Rae Jepsen", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02014", + "duration": 179, + "durationStr": "2:59", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578986.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578986.80.jpg", + "lyrics": "Magnus Lidehäll, Patrik Berger, Pontus Winnberg, Carly Rae Jepsen", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578986, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578986", + "packageimage": "0048578986.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Amalfi Coast", + "titleKana": " ", + "trackNo": 14, + "weblistsizeimage": "0048578986.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Kyle Shearer, Carly Rae Jepsen, Mathieu Jomphe Lépine, Nate Cyphert", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02015", + "duration": 209, + "durationStr": "3:29", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578987.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578987.80.jpg", + "lyrics": "Kyle Shearer, Carly Rae Jepsen, Mathieu Jomphe Lépine, Nate Cyphert", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578987, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578987", + "packageimage": "0048578987.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Patience Power Passion", + "titleKana": "ペイシェンスパワーパッション", + "trackNo": 15, + "weblistsizeimage": "0048578987.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Carly Rae Jepsen, Christopher J. Baran, Arthur Besnaïnou", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02016", + "duration": 192, + "durationStr": "3:12", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578988.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578988.80.jpg", + "lyrics": "Carly Rae Jepsen, Christopher J. Baran, Arthur Besnaïnou", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578988, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578988", + "packageimage": "0048578988.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Don't Leave Me on the Dance Floor", + "titleKana": " ", + "trackNo": 16, + "weblistsizeimage": "0048578988.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Cole M.G.N., Carly Rae Jepsen, Nate Cyphert", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02017", + "duration": 233, + "durationStr": "3:53", + "endDate": null, + "explicitFlg": "1", + "fullsizeimage": "0048578989.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578989.80.jpg", + "lyrics": "Cole M.G.N., Carly Rae Jepsen, Nate Cyphert", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578989, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578989", + "packageimage": "0048578989.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Motivation", + "titleKana": "モウティベイション", + "trackNo": 17, + "weblistsizeimage": "0048578989.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Kyle Shearer, Carly Rae Jepsen, Tavish Crowe, Nate Campany", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02018", + "duration": 194, + "durationStr": "3:14", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578990.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578990.80.jpg", + "lyrics": "Kyle Shearer, Carly Rae Jepsen, Tavish Crowe, Nate Campany", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578990, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578990", + "packageimage": "0048578990.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "You Don't Know How It Feels", + "titleKana": "ユードントノウハウイットフィール", + "trackNo": 18, + "weblistsizeimage": "0048578990.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Magnus Lidehäll, Patrik Berger, Pontus Winnberg, Carly Rae Jepsen, Erik Satie", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02019", + "duration": 197, + "durationStr": "3:17", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578991.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578991.80.jpg", + "lyrics": "Magnus Lidehäll, Patrik Berger, Pontus Winnberg, Carly Rae Jepsen, Erik Satie", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578991, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578991", + "packageimage": "0048578991.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Near or Far", + "titleKana": "ニヤーオアファー", + "trackNo": 19, + "weblistsizeimage": "0048578991.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Carly Rae Jepsen, Tavish Crowe, Nathan Thomas Jenkins", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02020", + "duration": 186, + "durationStr": "3:06", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578992.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578992.80.jpg", + "lyrics": "Carly Rae Jepsen, Tavish Crowe, Nathan Thomas Jenkins", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578992, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578992", + "packageimage": "0048578992.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Diver", + "titleKana": "ダイバー", + "trackNo": 20, + "weblistsizeimage": "0048578992.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02021", + "duration": 236, + "durationStr": "3:56", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578993.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578993.80.jpg", + "lyrics": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578993, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578993", + "packageimage": "0048578993.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Hold Me to the Light", + "titleKana": "ホールドミートゥーザライト", + "trackNo": 21, + "weblistsizeimage": "0048578993.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "John Hill, Cole M.G.N., Carly Rae Jepsen", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02022", + "duration": 222, + "durationStr": "3:42", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578994.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578994.80.jpg", + "lyrics": "John Hill, Cole M.G.N., Carly Rae Jepsen", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578994, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578994", + "packageimage": "0048578994.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "That's Just Me", + "titleKana": "ザッツジャストミー", + "trackNo": 22, + "weblistsizeimage": "0048578994.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Cole M.G.N., Carly Rae Jepsen, Joe Kirkland", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02023", + "duration": 220, + "durationStr": "3:40", + "endDate": null, + "explicitFlg": "1", + "fullsizeimage": "0048578995.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578995.80.jpg", + "lyrics": "Cole M.G.N., Carly Rae Jepsen, Joe Kirkland", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578995, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578995", + "packageimage": "0048578995.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "No Labels, I Love You", + "titleKana": "ノーラベルスアイラブユー", + "trackNo": 23, + "weblistsizeimage": "0048578995.130.jpg" + }, + { + "arranger": null, + "arrangerKana": "", + "artistName": "Carly Rae Jepsen", + "artistNameKana": "カーリーレイジェプセン", + "artistNameNo": 0, + "artistNo": 295546, + "bitPerSample": "24", + "callCoupon": "0", + "channelConf": "2", + "composer": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert, Cole M.G.N.", + "composerKana": "", + "couponProduct": "0", + "distFlg": "0", + "distPartNo": "00881061522348-S02024", + "duration": 241, + "durationStr": "4:01", + "endDate": null, + "explicitFlg": "0", + "fullsizeimage": "0048578996.200.jpg", + "labelCode": "43000006", + "labelId": "00000083", + "labelname": "School Boy/Interscope Records", + "listenDuration": 30, + "listenFlg": "1", + "listenStartDate": null, + "listimage": "0048578996.80.jpg", + "lyrics": "Kyle Shearer, Carly Rae Jepsen, Nate Cyphert, Cole M.G.N.", + "lyricsKana": "", + "master": "℗ 2026 School Boy/Interscope Records", + "materialNo": 48578996, + "mediaFlg": "1", + "mediaFormatNo": 12, + "mediaType": 8, + "msin": null, + "musicComment": null, + "musicId": "PX0048578996", + "packageimage": "0048578996.100.jpg", + "prFlg": "0", + "price": 523, + "priceWithoutTax": 476, + "producer": null, + "producerKana": "", + "productTypeNo": 9, + "qualityClass": 1, + "samplingFreq": 48000, + "specialPageUrl": "", + "startDate": "2026/09/18 00:00:00", + "tid": null, + "tie": null, + "tieType": null, + "title": "Super Sage", + "titleKana": "スーパーサージュ", + "trackNo": 24, + "weblistsizeimage": "0048578996.130.jpg" + } + ], + "weblistsizeimage": "0048578965.130.jpg" +} \ No newline at end of file diff --git a/testdata/https!/jp.mora/package/43000006/00881061522348 b/testdata/https!/jp.mora/package/43000006/00881061522348 new file mode 100644 index 00000000..211b8457 --- /dev/null +++ b/testdata/https!/jp.mora/package/43000006/00881061522348 @@ -0,0 +1 @@ +{"type":"package","mountPoint":"0000","labelId":"00000083","materialNo":"48578965"} \ No newline at end of file diff --git a/testdata/https!/jp.ototoy/_/default/p/1289692 b/testdata/https!/jp.ototoy/_/default/p/1289692 new file mode 100644 index 00000000..84862883 --- /dev/null +++ b/testdata/https!/jp.ototoy/_/default/p/1289692 @@ -0,0 +1 @@ +{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/1289/00000003.1657229286.1438_320.jpg","albumMeta":{"title":"Gemini Rights","artists":[{"name":"Steve Lacy","url":"https://ototoy.jp/_/default/a/386946"}],"originalReleaseDate":"2022-07-15","tagCloud":["ハイレゾ","Explicit ver."],"label":{"name":"L-M Records/RCA Records","url":"https://ototoy.jp/labels/1113591","catalogNumber":"G0100047877840"}},"trackList":[{"title":"Static","trackNumber":1,"duration":156},{"title":"Helmet","trackNumber":2,"duration":201},{"title":"Mercury","trackNumber":3,"duration":295},{"title":"Buttons","trackNumber":4,"duration":184},{"title":"Bad Habit","trackNumber":5,"duration":232},{"title":"2Gether (Enterlude)","artists":[{"url":"https://ototoy.jp/_/default/a/386946","name":"Steve Lacy"},{"url":"https://ototoy.jp/_/default/a/1004299","name":"Matt Martians"}],"trackNumber":6,"duration":50},{"title":"Cody Freestyle","trackNumber":7,"duration":240},{"title":"Amber","trackNumber":8,"duration":173},{"title":"Sunshine (feat. Fousheé)","artists":[{"url":"https://ototoy.jp/_/default/a/386946","name":"Steve Lacy"},{"url":"https://ototoy.jp/_/default/a/851399","name":"Fousheé"}],"trackNumber":9,"duration":293},{"title":"Give You the World","trackNumber":10,"duration":273}]} \ No newline at end of file diff --git a/testdata/https!/jp.ototoy/_/default/p/1822344 b/testdata/https!/jp.ototoy/_/default/p/1822344 index 9e66f353..740ebb3e 100644 --- a/testdata/https!/jp.ototoy/_/default/p/1822344 +++ b/testdata/https!/jp.ototoy/_/default/p/1822344 @@ -1 +1 @@ -{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/1822/00000003.1695204881.8512_320.jpg","albumMeta":{"title":"THE BOOK 3","artists":[{"name":"YOASOBI","url":"https://ototoy.jp/_/default/a/731939"}],"originalReleaseDate":"2023-10-04","label":{"name":"YOASOBI","url":"https://ototoy.jp/labels/856521","catalogNumber":"YOASOBI-081"}},"trackList":[{"title":"勇者","trackNumber":1,"duration":194},{"title":"Interlude \"Awakening\"","trackNumber":2,"duration":48},{"title":"祝福","trackNumber":3,"duration":192},{"title":"海のまにまに","trackNumber":4,"duration":256},{"title":"ミスター","trackNumber":5,"duration":185},{"title":"Interlude \"Worship\"","trackNumber":6,"duration":67},{"title":"アイドル","trackNumber":7,"duration":211},{"title":"セブンティーン","trackNumber":8,"duration":198},{"title":"アドベンチャー","trackNumber":9,"duration":198},{"title":"好きだ","trackNumber":10,"duration":217}]} \ No newline at end of file +{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/1822/00000003.1822344.1781248983.0236_320.jpg","albumMeta":{"title":"THE BOOK 3","artists":[{"name":"YOASOBI","url":"https://ototoy.jp/_/default/a/731939"}],"originalReleaseDate":"2023-10-04","tagCloud":["ハイレゾ"],"label":{"name":"YOASOBI","url":"https://ototoy.jp/labels/856521","catalogNumber":"YOASOBI-081"}},"trackList":[{"title":"勇者","trackNumber":1,"duration":194},{"title":"Interlude \"Awakening\"","trackNumber":2,"duration":48},{"title":"祝福","trackNumber":3,"duration":192},{"title":"海のまにまに","trackNumber":4,"duration":256},{"title":"ミスター","trackNumber":5,"duration":185},{"title":"Interlude \"Worship\"","trackNumber":6,"duration":67},{"title":"アイドル","trackNumber":7,"duration":211},{"title":"セブンティーン","trackNumber":8,"duration":198},{"title":"アドベンチャー","trackNumber":9,"duration":198},{"title":"好きだ","trackNumber":10,"duration":217}]} \ No newline at end of file diff --git a/testdata/https!/jp.ototoy/_/default/p/3016055 b/testdata/https!/jp.ototoy/_/default/p/3016055 index b6c91085..18730867 100644 --- a/testdata/https!/jp.ototoy/_/default/p/3016055 +++ b/testdata/https!/jp.ototoy/_/default/p/3016055 @@ -1 +1 @@ -{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/3016/00000003.1756598333.417_320.jpg","albumMeta":{"title":"トゥイー・ボックスの人形劇場","artists":[{"name":"sasakure.UK","url":"https://ototoy.jp/_/default/a/153628"}],"originalReleaseDate":"2025-09-01","label":{"name":"sasakuration","url":"https://ototoy.jp/labels/215734"}},"trackList":[{"title":"トゥイー・ボックスの人形劇場","trackNumber":1,"duration":238}]} \ No newline at end of file +{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/3016/00000003.1756598333.417_320.jpg","albumMeta":{"title":"トゥイー・ボックスの人形劇場","artists":[{"name":"sasakure.UK","url":"https://ototoy.jp/_/default/a/153628"}],"originalReleaseDate":"2025-09-01","tagCloud":["ロスレス"],"label":{"name":"sasakuration","url":"https://ototoy.jp/labels/215734"}},"trackList":[{"title":"トゥイー・ボックスの人形劇場","trackNumber":1,"duration":238}]} \ No newline at end of file diff --git a/testdata/https!/jp.ototoy/_/default/p/3228080 b/testdata/https!/jp.ototoy/_/default/p/3228080 index 5b26d724..b4e69daa 100644 --- a/testdata/https!/jp.ototoy/_/default/p/3228080 +++ b/testdata/https!/jp.ototoy/_/default/p/3228080 @@ -1 +1 @@ -{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/3228/00000003.3228080.1763569536.7217_320.jpg","albumMeta":{"title":"UNTIL","artists":[{"name":"Benjazzy","url":"https://ototoy.jp/_/default/a/666017"}],"originalReleaseDate":"2025-11-19"},"trackList":[{"title":"UNITE","trackNumber":1,"duration":212},{"title":"BLINDLY","trackNumber":2,"duration":207},{"title":"TRAUMATIC","trackNumber":3,"duration":192},{"title":"NOOFFSEASON (feat. Watson, MIKADO & ¥ellow Bucks)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/963757","name":"Watson"},{"url":"https://ototoy.jp/_/default/a/725029","name":"MIKADO"},{"url":"https://ototoy.jp/_/default/a/671436","name":"¥ellow Bucks"}],"trackNumber":4,"duration":314},{"title":"1 2 3 (feat. CFN MALIK)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/1337903","name":"CFN MALIK"}],"trackNumber":5,"duration":186},{"title":"PRIDE","trackNumber":6,"duration":239},{"title":"WWW (feat. Bonbero)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/693436","name":"Bonbero"}],"trackNumber":7,"duration":212},{"title":"UWASA (feat. JP THE WAVY)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/343797","name":"JP THE WAVY"}],"trackNumber":8,"duration":186},{"title":"シケモク (feat. Daichi Yamamoto)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/464312","name":"Daichi Yamamoto"}],"trackNumber":9,"duration":221},{"title":"NEVER CHANGE (feat. SZK)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/1569279","name":"SZK"}],"trackNumber":10,"duration":227},{"title":"HATERS","trackNumber":11,"duration":137},{"title":"LIFE LINE","trackNumber":12,"duration":199},{"title":"THE BALANCE (feat. 般若)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/214647","name":"般若"}],"trackNumber":13,"duration":192},{"title":"UNTIL","trackNumber":14,"duration":308}]} \ No newline at end of file +{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/3228/00000003.3228080.1765970185.6207_320.jpg","albumMeta":{"title":"UNTIL","artists":[{"name":"Benjazzy","url":"https://ototoy.jp/_/default/a/666017"}],"originalReleaseDate":"2025-11-19","tagCloud":["ハイレゾ","Explicit ver."]},"trackList":[{"title":"UNITE","trackNumber":1,"duration":212},{"title":"BLINDLY","trackNumber":2,"duration":207},{"title":"TRAUMATIC","trackNumber":3,"duration":192},{"title":"NOOFFSEASON (feat. Watson, MIKADO & ¥ellow Bucks)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/963757","name":"Watson"},{"url":"https://ototoy.jp/_/default/a/725029","name":"MIKADO"},{"url":"https://ototoy.jp/_/default/a/671436","name":"¥ellow Bucks"}],"trackNumber":4,"duration":314},{"title":"1 2 3 (feat. CFN MALIK)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/1337903","name":"CFN MALIK"}],"trackNumber":5,"duration":186},{"title":"PRIDE","trackNumber":6,"duration":239},{"title":"WWW (feat. Bonbero)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/693436","name":"Bonbero"}],"trackNumber":7,"duration":212},{"title":"UWASA (feat. JP THE WAVY)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/343797","name":"JP THE WAVY"}],"trackNumber":8,"duration":186},{"title":"シケモク (feat. Daichi Yamamoto)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/464312","name":"Daichi Yamamoto"}],"trackNumber":9,"duration":221},{"title":"NEVER CHANGE (feat. SZK)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/1569279","name":"SZK"}],"trackNumber":10,"duration":227},{"title":"HATERS","trackNumber":11,"duration":137},{"title":"LIFE LINE","trackNumber":12,"duration":199},{"title":"THE BALANCE (feat. 般若)","artists":[{"url":"https://ototoy.jp/_/default/a/666017","name":"Benjazzy"},{"url":"https://ototoy.jp/_/default/a/8585","name":"般若"}],"trackNumber":13,"duration":192},{"title":"UNTIL","trackNumber":14,"duration":308}]} \ No newline at end of file diff --git a/testdata/https!/jp.ototoy/_/default/p/3237840 b/testdata/https!/jp.ototoy/_/default/p/3237840 index bf561baf..aa768491 100644 --- a/testdata/https!/jp.ototoy/_/default/p/3237840 +++ b/testdata/https!/jp.ototoy/_/default/p/3237840 @@ -1 +1 @@ -{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/3237/00000003.3237840.1764965039.7088_320.jpg","albumMeta":{"title":"Anthology Collection","artists":[{"name":"ザ・ビートルズ","url":"https://ototoy.jp/_/default/a/218489"}],"releaseDate":"2025-11-21","originalReleaseDate":"2025-11-21","label":{"name":"UMC (Universal Music Catalogue)","url":"https://ototoy.jp/labels/274620"}},"trackList":[{"title":"Free As A Bird (1995 Mix - Remastered)","discNumber":1,"trackNumber":1,"duration":265},{"title":"John Lennon Speech 1 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/284005","name":"ジョン・レノン"}],"discNumber":1,"trackNumber":2,"duration":11},{"title":"That'll Be The Day (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/1823343","name":"ザ・クォーリー・メン"}],"discNumber":1,"trackNumber":3,"duration":129},{"title":"In Spite Of All The Danger (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/1823343","name":"ザ・クォーリー・メン"}],"discNumber":1,"trackNumber":4,"duration":164},{"title":"Paul McCartney Speech 1 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/268135","name":"ポール・マッカートニー"}],"discNumber":1,"trackNumber":5,"duration":18},{"title":"Hallelujah, I Love Her So (Home Demo - Remastered)","discNumber":1,"trackNumber":6,"duration":73},{"title":"You'll Be Mine (Home Demo - Remastered)","discNumber":1,"trackNumber":7,"duration":98},{"title":"Cayenne (Home Demo - Remastered)","discNumber":1,"trackNumber":8,"duration":73},{"title":"Paul McCartney Speech 2 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/268135","name":"ポール・マッカートニー"}],"discNumber":1,"trackNumber":9,"duration":7},{"title":"My Bonnie (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/218489","name":"ザ・ビートルズ"},{"url":"https://ototoy.jp/_/default/a/274608","name":"ビートルズとトニー・シェリダン"}],"discNumber":1,"trackNumber":10,"duration":162},{"title":"Ain't She Sweet (Remastered)","discNumber":1,"trackNumber":11,"duration":133},{"title":"Cry For A Shadow (Remastered)","discNumber":1,"trackNumber":12,"duration":142},{"title":"John Lennon Speech 2 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/284005","name":"ジョン・レノン"}],"discNumber":1,"trackNumber":13,"duration":9},{"title":"Brian Epstein Speech 1 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/1823344","name":"ブライアン・エプスタイン"}],"discNumber":1,"trackNumber":14,"duration":18},{"title":"Searchin' (Decca Audition - Remastered)","discNumber":1,"trackNumber":15,"duration":179},{"title":"Three Cool Cats (Decca Audition - Remastered)","discNumber":1,"trackNumber":16,"duration":145},{"title":"The Sheik Of Araby (Decca Audition - Remastered)","discNumber":1,"trackNumber":17,"duration":103},{"title":"Like Dreamers Do (Decca Audition - Remastered)","discNumber":1,"trackNumber":18,"duration":155},{"title":"Hello Little Girl (Decca Audition - Remastered)","discNumber":1,"trackNumber":19,"duration":100},{"title":"Brian Epstein Speech 2 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/1823344","name":"ブライアン・エプスタイン"}],"discNumber":1,"trackNumber":20,"duration":32},{"title":"Besame Mucho (June 1962 Version - Remastered)","discNumber":1,"trackNumber":21,"duration":156},{"title":"Love Me Do (First Version - Remastered)","discNumber":1,"trackNumber":22,"duration":151},{"title":"How Do You Do It (Remastered)","discNumber":1,"trackNumber":23,"duration":117},{"title":"Please Please Me (First Version - Remastered)","discNumber":1,"trackNumber":24,"duration":119},{"title":"One After 909 (Takes 3, 4 And 5 - Remastered)","discNumber":1,"trackNumber":25,"duration":143},{"title":"One After 909 (Edit Of Takes 4 And 5 - Remastered)","discNumber":1,"trackNumber":26,"duration":175},{"title":"Lend Me Your Comb (BBC Live Recording - Remastered)","discNumber":1,"trackNumber":27,"duration":109},{"title":"I'll Get You (Live On Sunday Night At The London Palladium - Remastered)","discNumber":1,"trackNumber":28,"duration":128},{"title":"John Lennon Speech 3 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/284005","name":"ジョン・レノン"}],"discNumber":1,"trackNumber":29,"duration":12},{"title":"I Saw Her Standing There (Live In Stockholm - Remastered)","discNumber":1,"trackNumber":30,"duration":168},{"title":"From Me To You (Live In Stockholm - Remastered)","discNumber":1,"trackNumber":31,"duration":125},{"title":"Money (That's What I Want) (Live In Stockholm - Remastered)","discNumber":1,"trackNumber":32,"duration":172},{"title":"You Really Got A Hold On Me (Live In Stockholm - Remastered)","discNumber":1,"trackNumber":33,"duration":177},{"title":"Roll Over Beethoven (Live In Stockholm - Remastered)","discNumber":1,"trackNumber":34,"duration":141},{"title":"She Loves You (Live From The Royal Variety Performance - Remastered)","discNumber":1,"trackNumber":35,"duration":169},{"title":"Till There Was You (Live From The Royal Variety Performance - Remastered)","discNumber":1,"trackNumber":36,"duration":172},{"title":"Twist And Shout (Live From The Royal Variety Performance - Remastered)","discNumber":1,"trackNumber":37,"duration":187},{"title":"This Boy (Live On The Morecambe And Wise Show - Remastered)","discNumber":1,"trackNumber":38,"duration":141},{"title":"I Want To Hold Your Hand (Live On The Morecambe And Wise Show - Remastered)","discNumber":1,"trackNumber":39,"duration":156},{"title":"Speech (Live On The Morecambe And Wise Show - Remastered)","discNumber":1,"trackNumber":40,"duration":125},{"title":"Moonlight Bay (Live On The Morecambe And Wise Show - Remastered)","discNumber":1,"trackNumber":41,"duration":50},{"title":"Can't Buy Me Love (Take 2 With Solo From Take 1 - Remastered)","discNumber":1,"trackNumber":42,"duration":129},{"title":"All My Loving (Live On The Ed Sullivan Show - Remastered)","discNumber":1,"trackNumber":43,"duration":139},{"title":"You Can't Do That (Take 6 - Remastered)","discNumber":1,"trackNumber":44,"duration":162},{"title":"And I Love Her (Take 2 - Remastered)","discNumber":1,"trackNumber":45,"duration":112},{"title":"A Hard Day's Night (Take 1 - Remastered)","discNumber":1,"trackNumber":46,"duration":163},{"title":"I Wanna Be Your Man (Live For Around The Beatles - Remastered)","discNumber":1,"trackNumber":47,"duration":107},{"title":"Long Tall Sally (Live For Around The Beatles - Remastered)","discNumber":1,"trackNumber":48,"duration":105},{"title":"Boys (Live Session For Around The Beatles - Remastered)","discNumber":1,"trackNumber":49,"duration":109},{"title":"Shout (Live For Around The Beatles - Remastered)","discNumber":1,"trackNumber":50,"duration":90},{"title":"I'll Be Back (Take 2 - Remastered)","discNumber":1,"trackNumber":51,"duration":72},{"title":"I'll Be Back (Take 3 - Remastered)","discNumber":1,"trackNumber":52,"duration":117},{"title":"You Know What To Do (Demo - Remastered)","discNumber":1,"trackNumber":53,"duration":118},{"title":"No Reply (Demo - Remastered)","discNumber":1,"trackNumber":54,"duration":106},{"title":"Mr Moonlight (Takes 1 And 4 - Remastered)","discNumber":1,"trackNumber":55,"duration":167},{"title":"Leave My Kitten Alone (Take 5 - Remastered)","discNumber":1,"trackNumber":56,"duration":176},{"title":"No Reply (Take 2 - Remastered)","discNumber":1,"trackNumber":57,"duration":148},{"title":"Eight Days A Week (Takes 1, 2 And 4 - Remastered)","discNumber":1,"trackNumber":58,"duration":85},{"title":"Eight Days A Week (Take 5 - Remastered)","discNumber":1,"trackNumber":59,"duration":167},{"title":"Kansas City / Hey-Hey-Hey-Hey! (Take 2 - Remastered)","discNumber":1,"trackNumber":60,"duration":164},{"title":"Real Love (1996 Mix / Remastered)","discNumber":2,"trackNumber":1,"duration":233},{"title":"Yes It Is (Takes 2 And 14 - Remastered)","discNumber":2,"trackNumber":2,"duration":110},{"title":"I'm Down (Take 1 - Remastered)","discNumber":2,"trackNumber":3,"duration":173},{"title":"You've Got To Hide Your Love Away (Take 5 - Remastered)","discNumber":2,"trackNumber":4,"duration":164},{"title":"If You've Got Trouble (Take 1 - Remastered)","discNumber":2,"trackNumber":5,"duration":168},{"title":"That Means A Lot (Take 1 - Remastered)","discNumber":2,"trackNumber":6,"duration":146},{"title":"Yesterday (Take 1 - Remastered)","discNumber":2,"trackNumber":7,"duration":153},{"title":"It's Only Love (Takes 3 And 2 - Remastered)","discNumber":2,"trackNumber":8,"duration":118},{"title":"I Feel Fine (Live On Blackpool Night Out - Remastered)","discNumber":2,"trackNumber":9,"duration":135},{"title":"Ticket To Ride (Live On Blackpool Night Out - Remastered)","discNumber":2,"trackNumber":10,"duration":164},{"title":"Yesterday (Live On Blackpool Night Out - Remastered)","discNumber":2,"trackNumber":11,"duration":162},{"title":"Help! (Live On Blackpool Night Out - Remastered)","discNumber":2,"trackNumber":12,"duration":174},{"title":"Everybody's Trying To Be My Baby (Live At Shea Stadium, New York - Remastered)","discNumber":2,"trackNumber":13,"duration":165},{"title":"Norwegian Wood (This Bird Has Flown) (Take 1 - Remastered)","discNumber":2,"trackNumber":14,"duration":119},{"title":"I'm Looking Through You (Take 1 - Remastered)","discNumber":2,"trackNumber":15,"duration":173},{"title":"12-Bar Original (Take 2 Edited - Remastered)","discNumber":2,"trackNumber":16,"duration":175},{"title":"Tomorrow Never Knows (Take 1 - Remastered)","discNumber":2,"trackNumber":17,"duration":194},{"title":"Got To Get You Into My Life (Take 5 - Remastered)","discNumber":2,"trackNumber":18,"duration":174},{"title":"And Your Bird Can Sing (Takes 1 and 2 - Remastered)","discNumber":2,"trackNumber":19,"duration":133},{"title":"Taxman (Take 11 - Remastered)","discNumber":2,"trackNumber":20,"duration":152},{"title":"Eleanor Rigby (Take 14 - Strings Only - Remastered)","discNumber":2,"trackNumber":21,"duration":126},{"title":"I'm Only Sleeping (Rehearsal - Remastered)","discNumber":2,"trackNumber":22,"duration":40},{"title":"I'm Only Sleeping (Take 1 - Remastered)","discNumber":2,"trackNumber":23,"duration":179},{"title":"Rock And Roll Music (Live In Tokyo - Remastered)","discNumber":2,"trackNumber":24,"duration":98},{"title":"She's A Woman (Live In Tokyo - Remastered)","discNumber":2,"trackNumber":25,"duration":176},{"title":"Strawberry Fields Forever (Home Demo Sequence - Remastered)","discNumber":2,"trackNumber":26,"duration":100},{"title":"Strawberry Fields Forever (Take 1 - Remastered)","discNumber":2,"trackNumber":27,"duration":154},{"title":"Strawberry Fields Forever (Take 7 And Edit Piece - Remastered)","discNumber":2,"trackNumber":28,"duration":253},{"title":"Penny Lane (Remix - Remastered)","discNumber":2,"trackNumber":29,"duration":192},{"title":"A Day In The Life (Takes 1, 2, 6 And Orchestra - Remastered)","discNumber":2,"trackNumber":30,"duration":304},{"title":"Good Morning Good Morning (Take 8 - Remastered)","discNumber":2,"trackNumber":31,"duration":159},{"title":"Only A Northern Song (Takes 3 And 12 - Remastered)","discNumber":2,"trackNumber":32,"duration":163},{"title":"Being For The Benefit Of Mr Kite! (Takes 1 And 2 - Remastered)","discNumber":2,"trackNumber":33,"duration":65},{"title":"Being For The Benefit Of Mr Kite! (Take 7 - Remastered)","discNumber":2,"trackNumber":34,"duration":153},{"title":"Lucy In The Sky With Diamonds (Takes 6, 7 And 8 - Remastered)","discNumber":2,"trackNumber":35,"duration":185},{"title":"Within You Without You (Instrumental - Remastered)","discNumber":2,"trackNumber":36,"duration":327},{"title":"Sgt Pepper's Lonely Hearts Club Band (Reprise - Take 5 - Remastered)","discNumber":2,"trackNumber":37,"duration":87},{"title":"You Know My Name (Look Up The Number) (Stereo Remix - Remastered)","discNumber":2,"trackNumber":38,"duration":343},{"title":"I Am The Walrus (Take 16 - Remastered)","discNumber":2,"trackNumber":39,"duration":241},{"title":"The Fool On The Hill (Demo - Remastered)","discNumber":2,"trackNumber":40,"duration":168},{"title":"Your Mother Should Know (Take 27 - Remastered)","discNumber":2,"trackNumber":41,"duration":182},{"title":"The Fool On The Hill (Take 4 - Remastered)","discNumber":2,"trackNumber":42,"duration":224},{"title":"Hello, Goodbye (Take 16 - Remastered)","discNumber":2,"trackNumber":43,"duration":197},{"title":"Lady Madonna (Takes 3 And 4 - Remastered)","discNumber":2,"trackNumber":44,"duration":141},{"title":"Across The Universe (Take 2 - Remastered)","discNumber":2,"trackNumber":45,"duration":210},{"title":"A Beginning (Remastered)","discNumber":3,"trackNumber":1,"duration":50},{"title":"Happiness Is A Warm Gun (Esher Demo With False Start - Remastered)","discNumber":3,"trackNumber":2,"duration":134},{"title":"Helter Skelter (Take 2 Edited - Remastered)","discNumber":3,"trackNumber":3,"duration":277},{"title":"Mean Mr Mustard (Esher Demo - Remastered)","discNumber":3,"trackNumber":4,"duration":118},{"title":"Polythene Pam (Esher Demo - Remastered)","discNumber":3,"trackNumber":5,"duration":86},{"title":"Glass Onion (Esher Demo - Remastered)","discNumber":3,"trackNumber":6,"duration":111},{"title":"Junk (Esher Demo - Remastered)","discNumber":3,"trackNumber":7,"duration":144},{"title":"Piggies (Esher Demo - Remastered)","discNumber":3,"trackNumber":8,"duration":120},{"title":"Honey Pie (Esher Demo Edited - Remastered)","discNumber":3,"trackNumber":9,"duration":79},{"title":"Don't Pass Me By (Take 3 With Take 5 Vocal - Remastered)","discNumber":3,"trackNumber":10,"duration":162},{"title":"Ob-La-Di, Ob-La-Da (First Version - Take 5 - Remastered)","discNumber":3,"trackNumber":11,"duration":176},{"title":"Good Night (Rehearsal And Take 34 - Remastered)","discNumber":3,"trackNumber":12,"duration":158},{"title":"Cry Baby Cry (Take 1 - Remastered)","discNumber":3,"trackNumber":13,"duration":166},{"title":"Blackbird (Take 4 - Remastered)","discNumber":3,"trackNumber":14,"duration":138},{"title":"Sexy Sadie (Take 6 - Remastered)","discNumber":3,"trackNumber":15,"duration":246},{"title":"While My Guitar Gently Weeps (Acoustic Version - Take 1 - Remastered)","discNumber":3,"trackNumber":16,"duration":207},{"title":"Hey Jude (Take 2 - Remastered)","discNumber":3,"trackNumber":17,"duration":261},{"title":"Not Guilty (Take 102 Edited - Remastered)","discNumber":3,"trackNumber":18,"duration":202},{"title":"Mother Nature's Son (Take 2 - Remastered)","discNumber":3,"trackNumber":19,"duration":197},{"title":"Glass Onion (Mono Mix - Remastered)","discNumber":3,"trackNumber":20,"duration":128},{"title":"Rocky Raccoon (Take 8 - Remastered)","discNumber":3,"trackNumber":21,"duration":252},{"title":"What's The New Mary Jane (Take 4 - Remastered)","discNumber":3,"trackNumber":22,"duration":372},{"title":"Step Inside Love / Los Paranoias (Studio Jam - Remastered)","discNumber":3,"trackNumber":23,"duration":150},{"title":"I'm So Tired (Edit Of Takes 3, 6 And 9 - Remastered)","discNumber":3,"trackNumber":24,"duration":134},{"title":"I Will (Take 1 - Remastered)","discNumber":3,"trackNumber":25,"duration":115},{"title":"Why Don't We Do It In The Road (Take 4 - Remastered)","discNumber":3,"trackNumber":26,"duration":135},{"title":"Julia (Take 2 - Remastered)","discNumber":3,"trackNumber":27,"duration":118},{"title":"I've Got A Feeling (Apple Studio - Remastered)","discNumber":3,"trackNumber":28,"duration":168},{"title":"She Came In Through The Bathroom Window (Apple Studio - Remastered)","discNumber":3,"trackNumber":29,"duration":216},{"title":"Dig A Pony (Apple Studio - Remastered)","discNumber":3,"trackNumber":30,"duration":258},{"title":"Two Of Us (Apple Studio - Remastered)","discNumber":3,"trackNumber":31,"duration":207},{"title":"For You Blue (Apple Studio - Remastered)","discNumber":3,"trackNumber":32,"duration":142},{"title":"Teddy Boy (Apple Studio - Remastered)","discNumber":3,"trackNumber":33,"duration":198},{"title":"Rip It Up / Shake, Rattle And Roll / Blue Suede Shoes (Medley - Apple Studio Jam - Remastered)","discNumber":3,"trackNumber":34,"duration":190},{"title":"The Long And Winding Road (Apple Studio - Remastered)","discNumber":3,"trackNumber":35,"duration":221},{"title":"Oh! Darling (Apple Studio - Remastered)","discNumber":3,"trackNumber":36,"duration":247},{"title":"All Things Must Pass (Demo - Remastered)","discNumber":3,"trackNumber":37,"duration":184},{"title":"Mailman, Bring Me No More Blues (Apple Studio Jam - Remastered)","discNumber":3,"trackNumber":38,"duration":116},{"title":"Get Back (Third Rooftop Performance - Remastered)","discNumber":3,"trackNumber":39,"duration":188},{"title":"Old Brown Shoe (Demo - Remastered)","discNumber":3,"trackNumber":40,"duration":182},{"title":"Octopus's Garden (Take 2 - Remastered)","discNumber":3,"trackNumber":41,"duration":169},{"title":"Maxwell's Silver Hammer (Take 5 - Remastered)","discNumber":3,"trackNumber":42,"duration":229},{"title":"Something (Demo - Remastered)","discNumber":3,"trackNumber":43,"duration":198},{"title":"Come Together (Take 1 - Remastered)","discNumber":3,"trackNumber":44,"duration":220},{"title":"Come And Get It (Demo - 1996 Remix - Remastered)","discNumber":3,"trackNumber":45,"duration":150},{"title":"Ain't She Sweet (Studio Jam - Remastered)","discNumber":3,"trackNumber":46,"duration":128},{"title":"Because (Vocals Mix - Remastered)","discNumber":3,"trackNumber":47,"duration":143},{"title":"Let It Be (Apple Studio - Remastered)","discNumber":3,"trackNumber":48,"duration":245},{"title":"I Me Mine (Take 16 - Remastered)","discNumber":3,"trackNumber":49,"duration":107},{"title":"The End (Remix With The Final Chord Of A Day In The Life - Remastered)","discNumber":3,"trackNumber":50,"duration":172},{"title":"I Saw Her Standing There (Take 2)","discNumber":4,"trackNumber":1,"duration":186},{"title":"Money (That's What I Want) (RM7 Undubbed)","discNumber":4,"trackNumber":2,"duration":168},{"title":"This Boy (Takes 12 And 13)","discNumber":4,"trackNumber":3,"duration":198},{"title":"Tell Me Why (Takes 4 And 5)","discNumber":4,"trackNumber":4,"duration":187},{"title":"If I Fell (Take 11)","discNumber":4,"trackNumber":5,"duration":158},{"title":"Matchbox (Take 1)","discNumber":4,"trackNumber":6,"duration":129},{"title":"Every Little Thing (Takes 6 And 7)","discNumber":4,"trackNumber":7,"duration":208},{"title":"I Need You (Take 1)","discNumber":4,"trackNumber":8,"duration":156},{"title":"I've Just Seen A Face (Take 3)","discNumber":4,"trackNumber":9,"duration":146},{"title":"In My Life (Take 1)","discNumber":4,"trackNumber":10,"duration":160},{"title":"Nowhere Man (First Version - Take 2)","discNumber":4,"trackNumber":11,"duration":144},{"title":"Got To Get You Into My Life (Second Version - Unnumbered Mix)","discNumber":4,"trackNumber":12,"duration":155},{"title":"Love You To (Take 7)","discNumber":4,"trackNumber":13,"duration":176},{"title":"Strawberry Fields Forever (Take 26)","discNumber":4,"trackNumber":14,"duration":200},{"title":"She's Leaving Home (Take 1 - Instrumental)","discNumber":4,"trackNumber":15,"duration":230},{"title":"Baby, You're A Rich Man (Takes 11 And 12)","discNumber":4,"trackNumber":16,"duration":366},{"title":"All You Need Is Love (Rehearsal For BBC Broadcast)","discNumber":4,"trackNumber":17,"duration":371},{"title":"The Fool On The Hill (Take 5 - Instrumental)","discNumber":4,"trackNumber":18,"duration":282},{"title":"I Am The Walrus (Take 19 - Strings, Brass, Clarinet Overdub)","discNumber":4,"trackNumber":19,"duration":296},{"title":"Hey Bulldog (Take 4 - Instrumental)","discNumber":4,"trackNumber":20,"duration":194},{"title":"Good Night (Take 10 With A Guitar Part From Take 5)","discNumber":4,"trackNumber":21,"duration":151},{"title":"While My Guitar Gently Weeps (Third Version - Take 27)","discNumber":4,"trackNumber":22,"duration":198},{"title":"(You're So Square) Baby I Don’t Care (Studio Jam)","discNumber":4,"trackNumber":23,"duration":43},{"title":"Helter Skelter (Second Version - Take 17)","discNumber":4,"trackNumber":24,"duration":218},{"title":"I Will (Take 29)","discNumber":4,"trackNumber":25,"duration":26},{"title":"Can You Take Me Back? (Take 1)","discNumber":4,"trackNumber":26,"duration":142},{"title":"Julia (Two Rehearsals)","discNumber":4,"trackNumber":27,"duration":266},{"title":"Get Back (Take 8)","discNumber":4,"trackNumber":28,"duration":231},{"title":"Octopus’s Garden (Rehearsal)","discNumber":4,"trackNumber":29,"duration":109},{"title":"Don’t Let Me Down (First Rooftop Performance)","discNumber":4,"trackNumber":30,"duration":207},{"title":"You Never Give Me Your Money (Take 36)","discNumber":4,"trackNumber":31,"duration":317},{"title":"Here Comes The Sun (Take 9)","discNumber":4,"trackNumber":32,"duration":221},{"title":"Something (Take 39 - Strings Only Instrumental)","discNumber":4,"trackNumber":33,"duration":155},{"title":"Free As A Bird (2025 Mix)","discNumber":4,"trackNumber":34,"duration":267},{"title":"Real Love (2025 Mix)","discNumber":4,"trackNumber":35,"duration":214},{"title":"Now And Then","discNumber":4,"trackNumber":36,"duration":249}]} \ No newline at end of file +{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/3237/00000003.3237840.1764965039.7088_320.jpg","albumMeta":{"title":"Anthology Collection","artists":[{"name":"The Beatles","url":"https://ototoy.jp/_/default/a/218489"}],"releaseDate":"2025-11-21","originalReleaseDate":"2010-11-16","tagCloud":["ハイレゾ"],"label":{"name":"UMC (Universal Music Catalogue)","url":"https://ototoy.jp/labels/274620"}},"trackList":[{"title":"Free As A Bird (1995 Mix - Remastered)","discNumber":1,"trackNumber":1,"duration":265},{"title":"John Lennon Speech 1 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/918373","name":"John Lennon"}],"discNumber":1,"trackNumber":2,"duration":11},{"title":"That'll Be The Day (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/2122701","name":"The Quarrymen"}],"discNumber":1,"trackNumber":3,"duration":129},{"title":"In Spite Of All The Danger (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/2122701","name":"The Quarrymen"}],"discNumber":1,"trackNumber":4,"duration":164},{"title":"Paul McCartney Speech 1 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/1426056","name":"Paul McCartney"}],"discNumber":1,"trackNumber":5,"duration":18},{"title":"Hallelujah, I Love Her So (Home Demo - Remastered)","discNumber":1,"trackNumber":6,"duration":73},{"title":"You'll Be Mine (Home Demo - Remastered)","discNumber":1,"trackNumber":7,"duration":98},{"title":"Cayenne (Home Demo - Remastered)","discNumber":1,"trackNumber":8,"duration":73},{"title":"Paul McCartney Speech 2 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/1426056","name":"Paul McCartney"}],"discNumber":1,"trackNumber":9,"duration":7},{"title":"My Bonnie (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/218489","name":"The Beatles"},{"url":"https://ototoy.jp/_/default/a/2122702","name":"Tony Sheridan"}],"discNumber":1,"trackNumber":10,"duration":162},{"title":"Ain't She Sweet (Remastered)","discNumber":1,"trackNumber":11,"duration":133},{"title":"Cry For A Shadow (Remastered)","discNumber":1,"trackNumber":12,"duration":142},{"title":"John Lennon Speech 2 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/918373","name":"John Lennon"}],"discNumber":1,"trackNumber":13,"duration":9},{"title":"Brian Epstein Speech 1 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/2122706","name":"Brian Epstein"}],"discNumber":1,"trackNumber":14,"duration":18},{"title":"Searchin' (Decca Audition - Remastered)","discNumber":1,"trackNumber":15,"duration":179},{"title":"Three Cool Cats (Decca Audition - Remastered)","discNumber":1,"trackNumber":16,"duration":145},{"title":"The Sheik Of Araby (Decca Audition - Remastered)","discNumber":1,"trackNumber":17,"duration":103},{"title":"Like Dreamers Do (Decca Audition - Remastered)","discNumber":1,"trackNumber":18,"duration":155},{"title":"Hello Little Girl (Decca Audition - Remastered)","discNumber":1,"trackNumber":19,"duration":100},{"title":"Brian Epstein Speech 2 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/2122706","name":"Brian Epstein"}],"discNumber":1,"trackNumber":20,"duration":32},{"title":"Besame Mucho (June 1962 Version - Remastered)","discNumber":1,"trackNumber":21,"duration":156},{"title":"Love Me Do (First Version - Remastered)","discNumber":1,"trackNumber":22,"duration":151},{"title":"How Do You Do It (Remastered)","discNumber":1,"trackNumber":23,"duration":117},{"title":"Please Please Me (First Version - Remastered)","discNumber":1,"trackNumber":24,"duration":119},{"title":"One After 909 (Takes 3, 4 And 5 - Remastered)","discNumber":1,"trackNumber":25,"duration":143},{"title":"One After 909 (Edit Of Takes 4 And 5 - Remastered)","discNumber":1,"trackNumber":26,"duration":175},{"title":"Lend Me Your Comb (BBC Live Recording - Remastered)","discNumber":1,"trackNumber":27,"duration":109},{"title":"I'll Get You (Live On Sunday Night At The London Palladium - Remastered)","discNumber":1,"trackNumber":28,"duration":128},{"title":"John Lennon Speech 3 (Remastered)","artists":[{"url":"https://ototoy.jp/_/default/a/918373","name":"John Lennon"}],"discNumber":1,"trackNumber":29,"duration":12},{"title":"I Saw Her Standing There (Live In Stockholm - Remastered)","discNumber":1,"trackNumber":30,"duration":168},{"title":"From Me To You (Live In Stockholm - Remastered)","discNumber":1,"trackNumber":31,"duration":125},{"title":"Money (That's What I Want) (Live In Stockholm - Remastered)","discNumber":1,"trackNumber":32,"duration":172},{"title":"You Really Got A Hold On Me (Live In Stockholm - Remastered)","discNumber":1,"trackNumber":33,"duration":177},{"title":"Roll Over Beethoven (Live In Stockholm - Remastered)","discNumber":1,"trackNumber":34,"duration":141},{"title":"She Loves You (Live From The Royal Variety Performance - Remastered)","discNumber":1,"trackNumber":35,"duration":169},{"title":"Till There Was You (Live From The Royal Variety Performance - Remastered)","discNumber":1,"trackNumber":36,"duration":172},{"title":"Twist And Shout (Live From The Royal Variety Performance - Remastered)","discNumber":1,"trackNumber":37,"duration":187},{"title":"This Boy (Live On The Morecambe And Wise Show - Remastered)","discNumber":1,"trackNumber":38,"duration":141},{"title":"I Want To Hold Your Hand (Live On The Morecambe And Wise Show - Remastered)","discNumber":1,"trackNumber":39,"duration":156},{"title":"Speech (Live On The Morecambe And Wise Show - Remastered)","discNumber":1,"trackNumber":40,"duration":125},{"title":"Moonlight Bay (Live On The Morecambe And Wise Show - Remastered)","discNumber":1,"trackNumber":41,"duration":50},{"title":"Can't Buy Me Love (Take 2 With Solo From Take 1 - Remastered)","discNumber":1,"trackNumber":42,"duration":129},{"title":"All My Loving (Live On The Ed Sullivan Show - Remastered)","discNumber":1,"trackNumber":43,"duration":139},{"title":"You Can't Do That (Take 6 - Remastered)","discNumber":1,"trackNumber":44,"duration":162},{"title":"And I Love Her (Take 2 - Remastered)","discNumber":1,"trackNumber":45,"duration":112},{"title":"A Hard Day's Night (Take 1 - Remastered)","discNumber":1,"trackNumber":46,"duration":163},{"title":"I Wanna Be Your Man (Live For Around The Beatles - Remastered)","discNumber":1,"trackNumber":47,"duration":107},{"title":"Long Tall Sally (Live For Around The Beatles - Remastered)","discNumber":1,"trackNumber":48,"duration":105},{"title":"Boys (Live Session For Around The Beatles - Remastered)","discNumber":1,"trackNumber":49,"duration":109},{"title":"Shout (Live For Around The Beatles - Remastered)","discNumber":1,"trackNumber":50,"duration":90},{"title":"I'll Be Back (Take 2 - Remastered)","discNumber":1,"trackNumber":51,"duration":72},{"title":"I'll Be Back (Take 3 - Remastered)","discNumber":1,"trackNumber":52,"duration":117},{"title":"You Know What To Do (Demo - Remastered)","discNumber":1,"trackNumber":53,"duration":118},{"title":"No Reply (Demo - Remastered)","discNumber":1,"trackNumber":54,"duration":106},{"title":"Mr Moonlight (Takes 1 And 4 - Remastered)","discNumber":1,"trackNumber":55,"duration":167},{"title":"Leave My Kitten Alone (Take 5 - Remastered)","discNumber":1,"trackNumber":56,"duration":176},{"title":"No Reply (Take 2 - Remastered)","discNumber":1,"trackNumber":57,"duration":148},{"title":"Eight Days A Week (Takes 1, 2 And 4 - Remastered)","discNumber":1,"trackNumber":58,"duration":85},{"title":"Eight Days A Week (Take 5 - Remastered)","discNumber":1,"trackNumber":59,"duration":167},{"title":"Kansas City / Hey-Hey-Hey-Hey! (Take 2 - Remastered)","discNumber":1,"trackNumber":60,"duration":164},{"title":"Real Love (1996 Mix / Remastered)","discNumber":2,"trackNumber":1,"duration":233},{"title":"Yes It Is (Takes 2 And 14 - Remastered)","discNumber":2,"trackNumber":2,"duration":110},{"title":"I'm Down (Take 1 - Remastered)","discNumber":2,"trackNumber":3,"duration":173},{"title":"You've Got To Hide Your Love Away (Take 5 - Remastered)","discNumber":2,"trackNumber":4,"duration":164},{"title":"If You've Got Trouble (Take 1 - Remastered)","discNumber":2,"trackNumber":5,"duration":168},{"title":"That Means A Lot (Take 1 - Remastered)","discNumber":2,"trackNumber":6,"duration":146},{"title":"Yesterday (Take 1 - Remastered)","discNumber":2,"trackNumber":7,"duration":153},{"title":"It's Only Love (Takes 3 And 2 - Remastered)","discNumber":2,"trackNumber":8,"duration":118},{"title":"I Feel Fine (Live On Blackpool Night Out - Remastered)","discNumber":2,"trackNumber":9,"duration":135},{"title":"Ticket To Ride (Live On Blackpool Night Out - Remastered)","discNumber":2,"trackNumber":10,"duration":164},{"title":"Yesterday (Live On Blackpool Night Out - Remastered)","discNumber":2,"trackNumber":11,"duration":162},{"title":"Help! (Live On Blackpool Night Out - Remastered)","discNumber":2,"trackNumber":12,"duration":174},{"title":"Everybody's Trying To Be My Baby (Live At Shea Stadium, New York - Remastered)","discNumber":2,"trackNumber":13,"duration":165},{"title":"Norwegian Wood (This Bird Has Flown) (Take 1 - Remastered)","discNumber":2,"trackNumber":14,"duration":119},{"title":"I'm Looking Through You (Take 1 - Remastered)","discNumber":2,"trackNumber":15,"duration":173},{"title":"12-Bar Original (Take 2 Edited - Remastered)","discNumber":2,"trackNumber":16,"duration":175},{"title":"Tomorrow Never Knows (Take 1 - Remastered)","discNumber":2,"trackNumber":17,"duration":194},{"title":"Got To Get You Into My Life (Take 5 - Remastered)","discNumber":2,"trackNumber":18,"duration":174},{"title":"And Your Bird Can Sing (Takes 1 and 2 - Remastered)","discNumber":2,"trackNumber":19,"duration":133},{"title":"Taxman (Take 11 - Remastered)","discNumber":2,"trackNumber":20,"duration":152},{"title":"Eleanor Rigby (Take 14 - Strings Only - Remastered)","discNumber":2,"trackNumber":21,"duration":126},{"title":"I'm Only Sleeping (Rehearsal - Remastered)","discNumber":2,"trackNumber":22,"duration":40},{"title":"I'm Only Sleeping (Take 1 - Remastered)","discNumber":2,"trackNumber":23,"duration":179},{"title":"Rock And Roll Music (Live In Tokyo - Remastered)","discNumber":2,"trackNumber":24,"duration":98},{"title":"She's A Woman (Live In Tokyo - Remastered)","discNumber":2,"trackNumber":25,"duration":176},{"title":"Strawberry Fields Forever (Home Demo Sequence - Remastered)","discNumber":2,"trackNumber":26,"duration":100},{"title":"Strawberry Fields Forever (Take 1 - Remastered)","discNumber":2,"trackNumber":27,"duration":154},{"title":"Strawberry Fields Forever (Take 7 And Edit Piece - Remastered)","discNumber":2,"trackNumber":28,"duration":253},{"title":"Penny Lane (Remix - Remastered)","discNumber":2,"trackNumber":29,"duration":192},{"title":"A Day In The Life (Takes 1, 2, 6 And Orchestra - Remastered)","discNumber":2,"trackNumber":30,"duration":304},{"title":"Good Morning Good Morning (Take 8 - Remastered)","discNumber":2,"trackNumber":31,"duration":159},{"title":"Only A Northern Song (Takes 3 And 12 - Remastered)","discNumber":2,"trackNumber":32,"duration":163},{"title":"Being For The Benefit Of Mr Kite! (Takes 1 And 2 - Remastered)","discNumber":2,"trackNumber":33,"duration":65},{"title":"Being For The Benefit Of Mr Kite! (Take 7 - Remastered)","discNumber":2,"trackNumber":34,"duration":153},{"title":"Lucy In The Sky With Diamonds (Takes 6, 7 And 8 - Remastered)","discNumber":2,"trackNumber":35,"duration":185},{"title":"Within You Without You (Instrumental - Remastered)","discNumber":2,"trackNumber":36,"duration":327},{"title":"Sgt Pepper's Lonely Hearts Club Band (Reprise - Take 5 - Remastered)","discNumber":2,"trackNumber":37,"duration":87},{"title":"You Know My Name (Look Up The Number) (Stereo Remix - Remastered)","discNumber":2,"trackNumber":38,"duration":343},{"title":"I Am The Walrus (Take 16 - Remastered)","discNumber":2,"trackNumber":39,"duration":241},{"title":"The Fool On The Hill (Demo - Remastered)","discNumber":2,"trackNumber":40,"duration":168},{"title":"Your Mother Should Know (Take 27 - Remastered)","discNumber":2,"trackNumber":41,"duration":182},{"title":"The Fool On The Hill (Take 4 - Remastered)","discNumber":2,"trackNumber":42,"duration":224},{"title":"Hello, Goodbye (Take 16 - Remastered)","discNumber":2,"trackNumber":43,"duration":197},{"title":"Lady Madonna (Takes 3 And 4 - Remastered)","discNumber":2,"trackNumber":44,"duration":141},{"title":"Across The Universe (Take 2 - Remastered)","discNumber":2,"trackNumber":45,"duration":210},{"title":"A Beginning (Remastered)","discNumber":3,"trackNumber":1,"duration":50},{"title":"Happiness Is A Warm Gun (Esher Demo With False Start - Remastered)","discNumber":3,"trackNumber":2,"duration":134},{"title":"Helter Skelter (Take 2 Edited - Remastered)","discNumber":3,"trackNumber":3,"duration":277},{"title":"Mean Mr Mustard (Esher Demo - Remastered)","discNumber":3,"trackNumber":4,"duration":118},{"title":"Polythene Pam (Esher Demo - Remastered)","discNumber":3,"trackNumber":5,"duration":86},{"title":"Glass Onion (Esher Demo - Remastered)","discNumber":3,"trackNumber":6,"duration":111},{"title":"Junk (Esher Demo - Remastered)","discNumber":3,"trackNumber":7,"duration":144},{"title":"Piggies (Esher Demo - Remastered)","discNumber":3,"trackNumber":8,"duration":120},{"title":"Honey Pie (Esher Demo Edited - Remastered)","discNumber":3,"trackNumber":9,"duration":79},{"title":"Don't Pass Me By (Take 3 With Take 5 Vocal - Remastered)","discNumber":3,"trackNumber":10,"duration":162},{"title":"Ob-La-Di, Ob-La-Da (First Version - Take 5 - Remastered)","discNumber":3,"trackNumber":11,"duration":176},{"title":"Good Night (Rehearsal And Take 34 - Remastered)","discNumber":3,"trackNumber":12,"duration":158},{"title":"Cry Baby Cry (Take 1 - Remastered)","discNumber":3,"trackNumber":13,"duration":166},{"title":"Blackbird (Take 4 - Remastered)","discNumber":3,"trackNumber":14,"duration":138},{"title":"Sexy Sadie (Take 6 - Remastered)","discNumber":3,"trackNumber":15,"duration":246},{"title":"While My Guitar Gently Weeps (Acoustic Version - Take 1 - Remastered)","discNumber":3,"trackNumber":16,"duration":207},{"title":"Hey Jude (Take 2 - Remastered)","discNumber":3,"trackNumber":17,"duration":261},{"title":"Not Guilty (Take 102 Edited - Remastered)","discNumber":3,"trackNumber":18,"duration":202},{"title":"Mother Nature's Son (Take 2 - Remastered)","discNumber":3,"trackNumber":19,"duration":197},{"title":"Glass Onion (Mono Mix - Remastered)","discNumber":3,"trackNumber":20,"duration":128},{"title":"Rocky Raccoon (Take 8 - Remastered)","discNumber":3,"trackNumber":21,"duration":252},{"title":"What's The New Mary Jane (Take 4 - Remastered)","discNumber":3,"trackNumber":22,"duration":372},{"title":"Step Inside Love / Los Paranoias (Studio Jam - Remastered)","discNumber":3,"trackNumber":23,"duration":150},{"title":"I'm So Tired (Edit Of Takes 3, 6 And 9 - Remastered)","discNumber":3,"trackNumber":24,"duration":134},{"title":"I Will (Take 1 - Remastered)","discNumber":3,"trackNumber":25,"duration":115},{"title":"Why Don't We Do It In The Road (Take 4 - Remastered)","discNumber":3,"trackNumber":26,"duration":135},{"title":"Julia (Take 2 - Remastered)","discNumber":3,"trackNumber":27,"duration":118},{"title":"I've Got A Feeling (Apple Studio - Remastered)","discNumber":3,"trackNumber":28,"duration":168},{"title":"She Came In Through The Bathroom Window (Apple Studio - Remastered)","discNumber":3,"trackNumber":29,"duration":216},{"title":"Dig A Pony (Apple Studio - Remastered)","discNumber":3,"trackNumber":30,"duration":258},{"title":"Two Of Us (Apple Studio - Remastered)","discNumber":3,"trackNumber":31,"duration":207},{"title":"For You Blue (Apple Studio - Remastered)","discNumber":3,"trackNumber":32,"duration":142},{"title":"Teddy Boy (Apple Studio - Remastered)","discNumber":3,"trackNumber":33,"duration":198},{"title":"Rip It Up / Shake, Rattle And Roll / Blue Suede Shoes (Medley - Apple Studio Jam - Remastered)","discNumber":3,"trackNumber":34,"duration":190},{"title":"The Long And Winding Road (Apple Studio - Remastered)","discNumber":3,"trackNumber":35,"duration":221},{"title":"Oh! Darling (Apple Studio - Remastered)","discNumber":3,"trackNumber":36,"duration":247},{"title":"All Things Must Pass (Demo - Remastered)","discNumber":3,"trackNumber":37,"duration":184},{"title":"Mailman, Bring Me No More Blues (Apple Studio Jam - Remastered)","discNumber":3,"trackNumber":38,"duration":116},{"title":"Get Back (Third Rooftop Performance - Remastered)","discNumber":3,"trackNumber":39,"duration":188},{"title":"Old Brown Shoe (Demo - Remastered)","discNumber":3,"trackNumber":40,"duration":182},{"title":"Octopus's Garden (Take 2 - Remastered)","discNumber":3,"trackNumber":41,"duration":169},{"title":"Maxwell's Silver Hammer (Take 5 - Remastered)","discNumber":3,"trackNumber":42,"duration":229},{"title":"Something (Demo - Remastered)","discNumber":3,"trackNumber":43,"duration":198},{"title":"Come Together (Take 1 - Remastered)","discNumber":3,"trackNumber":44,"duration":220},{"title":"Come And Get It (Demo - 1996 Remix - Remastered)","discNumber":3,"trackNumber":45,"duration":150},{"title":"Ain't She Sweet (Studio Jam - Remastered)","discNumber":3,"trackNumber":46,"duration":128},{"title":"Because (Vocals Mix - Remastered)","discNumber":3,"trackNumber":47,"duration":143},{"title":"Let It Be (Apple Studio - Remastered)","discNumber":3,"trackNumber":48,"duration":245},{"title":"I Me Mine (Take 16 - Remastered)","discNumber":3,"trackNumber":49,"duration":107},{"title":"The End (Remix With The Final Chord Of A Day In The Life - Remastered)","discNumber":3,"trackNumber":50,"duration":172},{"title":"I Saw Her Standing There (Take 2)","discNumber":4,"trackNumber":1,"duration":186},{"title":"Money (That's What I Want) (RM7 Undubbed)","discNumber":4,"trackNumber":2,"duration":168},{"title":"This Boy (Takes 12 And 13)","discNumber":4,"trackNumber":3,"duration":198},{"title":"Tell Me Why (Takes 4 And 5)","discNumber":4,"trackNumber":4,"duration":187},{"title":"If I Fell (Take 11)","discNumber":4,"trackNumber":5,"duration":158},{"title":"Matchbox (Take 1)","discNumber":4,"trackNumber":6,"duration":129},{"title":"Every Little Thing (Takes 6 And 7)","discNumber":4,"trackNumber":7,"duration":208},{"title":"I Need You (Take 1)","discNumber":4,"trackNumber":8,"duration":156},{"title":"I've Just Seen A Face (Take 3)","discNumber":4,"trackNumber":9,"duration":146},{"title":"In My Life (Take 1)","discNumber":4,"trackNumber":10,"duration":160},{"title":"Nowhere Man (First Version - Take 2)","discNumber":4,"trackNumber":11,"duration":144},{"title":"Got To Get You Into My Life (Second Version - Unnumbered Mix)","discNumber":4,"trackNumber":12,"duration":155},{"title":"Love You To (Take 7)","discNumber":4,"trackNumber":13,"duration":176},{"title":"Strawberry Fields Forever (Take 26)","discNumber":4,"trackNumber":14,"duration":200},{"title":"She's Leaving Home (Take 1 - Instrumental)","discNumber":4,"trackNumber":15,"duration":230},{"title":"Baby, You're A Rich Man (Takes 11 And 12)","discNumber":4,"trackNumber":16,"duration":366},{"title":"All You Need Is Love (Rehearsal For BBC Broadcast)","discNumber":4,"trackNumber":17,"duration":371},{"title":"The Fool On The Hill (Take 5 - Instrumental)","discNumber":4,"trackNumber":18,"duration":282},{"title":"I Am The Walrus (Take 19 - Strings, Brass, Clarinet Overdub)","discNumber":4,"trackNumber":19,"duration":296},{"title":"Hey Bulldog (Take 4 - Instrumental)","discNumber":4,"trackNumber":20,"duration":194},{"title":"Good Night (Take 10 With A Guitar Part From Take 5)","discNumber":4,"trackNumber":21,"duration":151},{"title":"While My Guitar Gently Weeps (Third Version - Take 27)","discNumber":4,"trackNumber":22,"duration":198},{"title":"(You're So Square) Baby I Don’t Care (Studio Jam)","discNumber":4,"trackNumber":23,"duration":43},{"title":"Helter Skelter (Second Version - Take 17)","discNumber":4,"trackNumber":24,"duration":218},{"title":"I Will (Take 29)","discNumber":4,"trackNumber":25,"duration":26},{"title":"Can You Take Me Back? (Take 1)","discNumber":4,"trackNumber":26,"duration":142},{"title":"Julia (Two Rehearsals)","discNumber":4,"trackNumber":27,"duration":266},{"title":"Get Back (Take 8)","discNumber":4,"trackNumber":28,"duration":231},{"title":"Octopus’s Garden (Rehearsal)","discNumber":4,"trackNumber":29,"duration":109},{"title":"Don’t Let Me Down (First Rooftop Performance)","discNumber":4,"trackNumber":30,"duration":207},{"title":"You Never Give Me Your Money (Take 36)","discNumber":4,"trackNumber":31,"duration":317},{"title":"Here Comes The Sun (Take 9)","discNumber":4,"trackNumber":32,"duration":221},{"title":"Something (Take 39 - Strings Only Instrumental)","discNumber":4,"trackNumber":33,"duration":155},{"title":"Free As A Bird (2025 Mix)","discNumber":4,"trackNumber":34,"duration":267},{"title":"Real Love (2025 Mix)","discNumber":4,"trackNumber":35,"duration":214},{"title":"Now And Then","discNumber":4,"trackNumber":36,"duration":249}]} \ No newline at end of file diff --git a/testdata/https!/jp.ototoy/_/default/p/3286704 b/testdata/https!/jp.ototoy/_/default/p/3286704 index 8702e80a..6b5301b1 100644 --- a/testdata/https!/jp.ototoy/_/default/p/3286704 +++ b/testdata/https!/jp.ototoy/_/default/p/3286704 @@ -1 +1 @@ -{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/3286/00000003.3286704.1765252577.9614_320.jpg","albumMeta":{"title":"Friends","artists":[{"name":"Various Artists","url":"https://ototoy.jp/_/default/a/375396"}],"originalReleaseDate":"2025-12-12"},"trackList":[{"title":"arigato","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"}],"trackNumber":1,"duration":184},{"title":"yami yami","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"},{"url":"https://ototoy.jp/_/default/a/1851346","name":"5NBi"}],"trackNumber":2,"duration":146},{"title":"Believer","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"},{"url":"https://ototoy.jp/_/default/a/807897","name":"KUNG-FU"}],"trackNumber":3,"duration":192},{"title":"籠球Pick&Roll","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"},{"url":"https://ototoy.jp/_/default/a/1851348","name":"retio"}],"trackNumber":4,"duration":170},{"title":"kaisou (Remix)","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"},{"url":"https://ototoy.jp/_/default/a/1329419","name":"Sun'Tiger"}],"trackNumber":5,"duration":148},{"title":"i'm in Luv (Remix)","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"},{"url":"https://ototoy.jp/_/default/a/807897","name":"KUNG-FU"},{"url":"https://ototoy.jp/_/default/a/1258599","name":"sumiya takuro"}],"trackNumber":6,"duration":280}]} \ No newline at end of file +{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/3286/00000003.3286704.1765252577.9614_320.jpg","albumMeta":{"title":"Friends","artists":[{"name":"Various Artists","url":"https://ototoy.jp/_/default/a/375396"}],"originalReleaseDate":"2025-12-12","tagCloud":["ハイレゾ"]},"trackList":[{"title":"arigato","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"}],"trackNumber":1,"duration":184},{"title":"yami yami","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"},{"url":"https://ototoy.jp/_/default/a/1851346","name":"5NBi"}],"trackNumber":2,"duration":146},{"title":"Believer","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"},{"url":"https://ototoy.jp/_/default/a/807897","name":"KUNG-FU"}],"trackNumber":3,"duration":192},{"title":"籠球Pick&Roll","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"},{"url":"https://ototoy.jp/_/default/a/1851348","name":"retio"}],"trackNumber":4,"duration":170},{"title":"kaisou (Remix)","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"},{"url":"https://ototoy.jp/_/default/a/1329419","name":"Sun'Tiger"}],"trackNumber":5,"duration":148},{"title":"i'm in Luv (Remix)","artists":[{"url":"https://ototoy.jp/_/default/a/880492","name":"ZトN"},{"url":"https://ototoy.jp/_/default/a/807897","name":"KUNG-FU"},{"url":"https://ototoy.jp/_/default/a/1258599","name":"sumiya takuro"}],"trackNumber":6,"duration":280}]} \ No newline at end of file diff --git a/testdata/https!/jp.ototoy/_/default/p/3915185 b/testdata/https!/jp.ototoy/_/default/p/3915185 new file mode 100644 index 00000000..b3cb7a4d --- /dev/null +++ b/testdata/https!/jp.ototoy/_/default/p/3915185 @@ -0,0 +1 @@ +{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/3915/00000003.3915185.1783386796.7557_320.jpg","albumMeta":{"title":"Gemini Rights","artists":[{"name":"Steve Lacy","url":"https://ototoy.jp/_/default/a/386946"}],"originalReleaseDate":"2022-07-14","tagCloud":["ロスレス","Clean ver."],"label":{"name":"L-M Records/RCA Records","url":"https://ototoy.jp/labels/1113591","catalogNumber":"G010005873292T"}},"trackList":[{"title":"Static","trackNumber":1,"duration":156},{"title":"Helmet","trackNumber":2,"duration":201},{"title":"Mercury","trackNumber":3,"duration":295},{"title":"Buttons","trackNumber":4,"duration":184},{"title":"Bad Habit","trackNumber":5,"duration":232},{"title":"2Gether (Enterlude)","artists":[{"url":"https://ototoy.jp/_/default/a/386946","name":"Steve Lacy"},{"url":"https://ototoy.jp/_/default/a/1004299","name":"Matt Martians"}],"trackNumber":6,"duration":50},{"title":"Cody Freestyle","trackNumber":7,"duration":240},{"title":"Amber","trackNumber":8,"duration":173},{"title":"Sunshine (feat. Fousheé)","artists":[{"url":"https://ototoy.jp/_/default/a/386946","name":"Steve Lacy"},{"url":"https://ototoy.jp/_/default/a/851399","name":"Fousheé"}],"trackNumber":9,"duration":293},{"title":"Give You the World","trackNumber":10,"duration":273}]} \ No newline at end of file diff --git a/testdata/https!/jp.ototoy/_/default/p/709920 b/testdata/https!/jp.ototoy/_/default/p/709920 index 1279bcf1..ba8fc616 100644 --- a/testdata/https!/jp.ototoy/_/default/p/709920 +++ b/testdata/https!/jp.ototoy/_/default/p/709920 @@ -1 +1 @@ -{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/0709/00000003.1614153884.5336_320.jpg","albumMeta":{"title":"Gimme吟味virtuaる最高star!!!! (feat. さくらみこ, 白上フブキ, 夏色まつり & 宝鐘マリン)","artists":[{"name":"sasakure.UK","url":"https://ototoy.jp/_/default/a/153628"},{"name":"さくらみこ","url":"https://ototoy.jp/_/default/a/818883"},{"name":"白上フブキ","url":"https://ototoy.jp/_/default/a/693805"},{"name":"夏色まつり","url":"https://ototoy.jp/_/default/a/817278"},{"name":"宝鐘マリン","url":"https://ototoy.jp/_/default/a/799749"}],"originalReleaseDate":"2021-02-25","label":{"name":"sasakuration","url":"https://ototoy.jp/labels/215734"}},"trackList":[{"title":"Gimme吟味virtuaる最高star!!!! (feat. さくらみこ, 白上フブキ, 夏色まつり & 宝鐘マリン)","trackNumber":1,"duration":223}]} \ No newline at end of file +{"thumbUrl":"https://imgs.ototoy.jp/imgs/jacket/0709/00000003.1614153884.5336_320.jpg","albumMeta":{"title":"Gimme吟味virtuaる最高star!!!! (feat. さくらみこ, 白上フブキ, 夏色まつり & 宝鐘マリン)","artists":[{"name":"sasakure.UK","url":"https://ototoy.jp/_/default/a/153628"},{"name":"さくらみこ","url":"https://ototoy.jp/_/default/a/818883"},{"name":"白上フブキ","url":"https://ototoy.jp/_/default/a/693805"},{"name":"夏色まつり","url":"https://ototoy.jp/_/default/a/817278"},{"name":"宝鐘マリン","url":"https://ototoy.jp/_/default/a/799749"}],"originalReleaseDate":"2021-02-25","tagCloud":["ホロライブ","ハイレゾ","VTuber","バーチャルYouTuber","さくらみこ","白上フブキ","夏色まつり","宝鐘マリン","ホロライブファンタジー","ホロライブゲーマーズ"],"label":{"name":"sasakuration","url":"https://ototoy.jp/labels/215734"}},"trackList":[{"title":"Gimme吟味virtuaる最高star!!!! (feat. さくらみこ, 白上フブキ, 夏色まつり & 宝鐘マリン)","trackNumber":1,"duration":223}]} \ No newline at end of file