diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 50556aa..ef960af 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,7 +8,7 @@ jobs: fail-fast: false matrix: python: ["3.8", "3.9", "3.10", "3.11", "3.12"] - beets: ["1.5.0", "1.6.0"] + beets: ["1.5.0", "1.6.0", "2.0.0"] steps: - uses: actions/checkout@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 5af617d..c335ec7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - Drop support for `beets<1.5`. +### Added + +- Add artist list fields support for `beets==2.0.0`. + ### Fixed - `album`: diff --git a/beetsplug/bandcamp/art.py b/beetsplug/bandcamp/art.py new file mode 100644 index 0000000..e69de29 diff --git a/beetsplug/bandcamp/helpers.py b/beetsplug/bandcamp/helpers.py index a27fcec..4c51b2e 100644 --- a/beetsplug/bandcamp/helpers.py +++ b/beetsplug/bandcamp/helpers.py @@ -16,14 +16,21 @@ NamedTuple, Pattern, Tuple, + TypeVar, Union, ) +from beets import __version__ as beets_version from beets.autotag.hooks import AlbumInfo, TrackInfo from ordered_set import OrderedSet as ordset # noqa: N813 +from packaging.version import Version from .genres_lookup import GENRES +BEETS_VERSION = Version(beets_version) +ALBUMTYPES_LIST_SUPPORT = BEETS_VERSION >= Version("1.6.0") +ARTIST_LIST_FIELDS_SUPPORT = BEETS_VERSION >= Version("2.0.0") + JSONDict = Dict[str, Any] DIGI_MEDIA = "Digital Media" USB_TYPE_ID = 5 @@ -36,6 +43,8 @@ "USB Flash Drive": DIGI_MEDIA, } +T = TypeVar("T", bound=JSONDict) + class MediaInfo(NamedTuple): album_id: str @@ -341,6 +350,21 @@ def get_medium_total(medium: int) -> int: medium_index += 1 return album + @staticmethod + def check_list_fields(data: T) -> T: + if "albumtypes" in data and not ALBUMTYPES_LIST_SUPPORT: + data["albumtypes"] = "; ".join(data["albumtypes"]) + + if not ARTIST_LIST_FIELDS_SUPPORT: + fields = ["artists", "artists_ids", "artists_credit", "artists_sort"] + for f in fields: + data.pop(f) + + if "tracks" in data: + data["tracks"] = [Helpers.check_list_fields(t) for t in data["tracks"]] + + return data + @singledispatch def to_dict(info: Any) -> Any: diff --git a/beetsplug/bandcamp/metaguru.py b/beetsplug/bandcamp/metaguru.py index a27a655..0940915 100644 --- a/beetsplug/bandcamp/metaguru.py +++ b/beetsplug/bandcamp/metaguru.py @@ -10,10 +10,8 @@ from typing import Any, Dict, Iterable, List, Optional, Set from unicodedata import normalize -from beets import __version__ as beets_version from beets import config as beets_config from beets.autotag.hooks import AlbumInfo, TrackInfo -from packaging.version import Version from pycountry import countries, subdivisions from .album_name import AlbumName @@ -22,9 +20,6 @@ from .track import Track from .tracks import Tracks -BEETS_VERSION = Version(beets_version) -ALBUMTYPES_LIST_SUPPORT = BEETS_VERSION >= Version("1.6.0") - JSONDict = Dict[str, Any] COUNTRY_OVERRIDES = { @@ -408,10 +403,14 @@ def genre(self) -> Optional[str]: @property def _common(self) -> JSONDict: return { + "album": self.album_name, + "artist_id": self.artist_id, + "artists_credit": [], # TODO: implement + "artists_ids": [self.artist_id], + "artists_sort": [], # TODO: implement "data_source": DATA_SOURCE, - "media": self.media.name, "data_url": self.album_id, - "artist_id": self.artist_id, + "media": self.media.name, } def get_fields(self, fields: Iterable[str], src: object = None) -> JSONDict: @@ -424,7 +423,7 @@ def get_fields(self, fields: Iterable[str], src: object = None) -> JSONDict: @property def _common_album(self) -> JSONDict: - common_data: JSONDict = {"album": self.album_name} + common_data: JSONDict = dict.fromkeys(["barcode", "release_group_title"]) fields = [ "albumtype", "albumtypes", @@ -436,11 +435,10 @@ def _common_album(self) -> JSONDict: "style", ] common_data.update(self.get_fields(fields)) - if not ALBUMTYPES_LIST_SUPPORT: - common_data["albumtypes"] = "; ".join(common_data["albumtypes"]) reldate = self.release_date if reldate: common_data.update(self.get_fields(["year", "month", "day"], reldate)) + common_data["artists"] = self.albumartist.split(", ") return common_data @@ -464,9 +462,9 @@ def singleton(self) -> TrackInfo: self.media = self.media_formats[0] track = self._trackinfo(self.tracks.first) track.update(self._common_album) - track.pop("album", None) + track.album = None track.track_id = track.data_url - return track + return self.check_list_fields(track) def get_media_album(self, media: MediaInfo) -> AlbumInfo: """Return album for the appropriate release format.""" @@ -497,7 +495,7 @@ def get_media_album(self, media: MediaInfo) -> AlbumInfo: album_info.album_id = self.media.album_id if self.media.name == "Vinyl": album_info = self.add_track_alts(album_info, self.comments or "") - return album_info + return self.check_list_fields(album_info) @cached_property def albums(self) -> List[AlbumInfo]: diff --git a/beetsplug/bandcamp/track.py b/beetsplug/bandcamp/track.py index 4df63e5..d1faa5c 100644 --- a/beetsplug/bandcamp/track.py +++ b/beetsplug/bandcamp/track.py @@ -224,6 +224,12 @@ def artists(self) -> List[str]: @property def info(self) -> JSONDict: + artists = self.artists + if self.ft_artist: + artists.append(self.ft_artist) + # if self.remix: + # artists.append(self.remix.remixer) + return { "index": self.index, "medium_index": self.index, @@ -234,6 +240,7 @@ def info(self) -> JSONDict: if self.ft_artist not in self.artist + self.title else self.artist ), + "artists": artists, "title": self.title, "length": self.duration, "track_alt": self.track_alt, diff --git a/poetry.lock b/poetry.lock index 2fd6085..59e010e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1325,4 +1325,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8, <4" -content-hash = "670bb59f57eeb6862aaabfe640d23f4733a42f72c4768d70960523a79a889bab" +content-hash = "3b93772179a9b687805505848c74ac82066ea09122ee18cd573b0fe2b3835f1e" diff --git a/pyproject.toml b/pyproject.toml index 1287549..2611655 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ Changelog = "https://github.com/snejus/beetcamp/blob/master/CHANGELOG.md" python = ">=3.8, <4" pycountry = ">=20.7.3" -beets = ">=1.5,<=2" +beets = ">=1.5" httpx = ">=0.27.0" ordered-set = ">=4.0" packaging = ">=24.0" diff --git a/tests/conftest.py b/tests/conftest.py index a0480f4..147ecea 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -14,7 +14,7 @@ from rich_tables.utils import make_console, pretty_diff from beetsplug.bandcamp import DEFAULT_CONFIG -from beetsplug.bandcamp.metaguru import ALBUMTYPES_LIST_SUPPORT +from beetsplug.bandcamp.helpers import Helpers if TYPE_CHECKING: from _pytest.config import Config @@ -194,15 +194,9 @@ def expected_release(bandcamp_data_path: Path) -> list[AlbumInfo] | TrackInfo | release_data = json.loads(release_datastr) if isinstance(release_data, dict): - if ALBUMTYPES_LIST_SUPPORT: - release_data["albumtypes"] = release_data["albumtypes"].split("; ") - return TrackInfo(**release_data) + return Helpers.check_list_fields(TrackInfo(**release_data)) - if ALBUMTYPES_LIST_SUPPORT: - for release in release_data: - release["albumtypes"] = release["albumtypes"].split("; ") - - return [AlbumInfo(**r) for r in release_data] + return [Helpers.check_list_fields(AlbumInfo(**r)) for r in release_data] @pytest.fixture diff --git a/tests/json/expected/album.json b/tests/json/expected/album.json index a38d563..9075ca7 100644 --- a/tests/json/expected/album.json +++ b/tests/json/expected/album.json @@ -5,12 +5,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album", + "albumtypes": [ + "album" + ], "artist": "Mikkel Rev", "artist_credit": null, "artist_id": "https://ute-rec.bandcamp.com", "artist_sort": null, + "artists": [ + "Mikkel Rev" + ], + "artists_credit": [], + "artists_ids": [ + "https://ute-rec.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "UTE004", "comments": "Our dear Mikkel serving four emotional and warm trancers focused on the journey within.\n---\nProduction: Mikkel Haraldstad\nMaster: Joel Krozer, 6bitdeep\nGraphics: Haider Ahmed", "country": "NO", @@ -29,17 +40,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": null, "tracks": [ { + "album": "UTE004", "arranger": null, "artist": "Mikkel Rev", "artist_credit": null, "artist_id": "https://ute-rec.bandcamp.com", "artist_sort": null, + "artists": [ + "Mikkel Rev" + ], + "artists_credit": [], + "artists_ids": [ + "https://ute-rec.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +85,20 @@ "work_disambig": null }, { + "album": "UTE004", "arranger": null, "artist": "Mikkel Rev", "artist_credit": null, "artist_id": "https://ute-rec.bandcamp.com", "artist_sort": null, + "artists": [ + "Mikkel Rev" + ], + "artists_credit": [], + "artists_ids": [ + "https://ute-rec.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +123,20 @@ "work_disambig": null }, { + "album": "UTE004", "arranger": null, "artist": "Mikkel Rev", "artist_credit": null, "artist_id": "https://ute-rec.bandcamp.com", "artist_sort": null, + "artists": [ + "Mikkel Rev" + ], + "artists_credit": [], + "artists_ids": [ + "https://ute-rec.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +161,20 @@ "work_disambig": null }, { + "album": "UTE004", "arranger": null, "artist": "Mikkel Rev", "artist_credit": null, "artist_id": "https://ute-rec.bandcamp.com", "artist_sort": null, + "artists": [ + "Mikkel Rev" + ], + "artists_credit": [], + "artists_ids": [ + "https://ute-rec.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -160,12 +208,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album", + "albumtypes": [ + "album" + ], "artist": "Mikkel Rev", "artist_credit": null, "artist_id": "https://ute-rec.bandcamp.com", "artist_sort": null, + "artists": [ + "Mikkel Rev" + ], + "artists_credit": [], + "artists_ids": [ + "https://ute-rec.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "UTE004", "comments": "Our dear Mikkel serving four emotional and warm trancers focused on the journey within.\n---\nProduction: Mikkel Haraldstad\nMaster: Joel Krozer, 6bitdeep\nGraphics: Haider Ahmed", "country": "NO", @@ -184,17 +243,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": null, "tracks": [ { + "album": "UTE004", "arranger": null, "artist": "Mikkel Rev", "artist_credit": null, "artist_id": "https://ute-rec.bandcamp.com", "artist_sort": null, + "artists": [ + "Mikkel Rev" + ], + "artists_credit": [], + "artists_ids": [ + "https://ute-rec.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -219,11 +288,20 @@ "work_disambig": null }, { + "album": "UTE004", "arranger": null, "artist": "Mikkel Rev", "artist_credit": null, "artist_id": "https://ute-rec.bandcamp.com", "artist_sort": null, + "artists": [ + "Mikkel Rev" + ], + "artists_credit": [], + "artists_ids": [ + "https://ute-rec.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -248,11 +326,20 @@ "work_disambig": null }, { + "album": "UTE004", "arranger": null, "artist": "Mikkel Rev", "artist_credit": null, "artist_id": "https://ute-rec.bandcamp.com", "artist_sort": null, + "artists": [ + "Mikkel Rev" + ], + "artists_credit": [], + "artists_ids": [ + "https://ute-rec.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -277,11 +364,20 @@ "work_disambig": null }, { + "album": "UTE004", "arranger": null, "artist": "Mikkel Rev", "artist_credit": null, "artist_id": "https://ute-rec.bandcamp.com", "artist_sort": null, + "artists": [ + "Mikkel Rev" + ], + "artists_credit": [], + "artists_ids": [ + "https://ute-rec.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/album_in_titles.json b/tests/json/expected/album_in_titles.json index 03888e0..8f152e0 100644 --- a/tests/json/expected/album_in_titles.json +++ b/tests/json/expected/album_in_titles.json @@ -5,12 +5,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album; lp", + "albumtypes": [ + "album", + "lp" + ], "artist": "Various Artists", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "Various Artists" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": "DJ Die's GutterFunk imprint has gone from strength to strength over the past few years, the label's ethos of ‘good-music-first’, whilst not being restricted by genre, has permeated with artists and listeners alike. The labels tracks have found their way into the sets of a massively diverse set of DJs - from the likes of Gerd Janson, David Rodigan, dBridge and Shy FX.\n\nThe labels first compilation album, ‘GutterFunk: All Subject To Vibes’ acts as an introduction or indeed a reminder of what GutterFunk is all about. Style-wise we are presented with House, mutations of 140bpm, Broken Beat, Drum and Bass, Jungle and Soul. The compilation is encapsulated by an archive photo from the legendary photographer Mark Simmons, reflecting the curveball nature of the album, whilst also paying homage to Bristol values of ignoring rules and tradition, which is embedded into GutterFunk’s DNA. The artwork used for the album is a photo by Mark Simmons from his book 'Bristol Black & White'.\n\n The guest list on the album speaks for itself, showing GutterFunk’s penchant for high-quality artists: DJ Die, Pinch, Fox, Randall, Dismantle, Addison Groove and Fixate to name a few. Meanwhile the newly formed Watch The Ride project delivers the club anthem 'Skeematics', riding high after the massive success of the collab with D Double E and mysterious Soul/boogie outfit Sure Thing close off the album with the perfect last dance 'Atoms.'\n\nIn true GutterFunk fashion, the album was worked on with a fine-tooth comb, each detail in each track was agonised over by the artist and then by DJ Die and Dismantle emphasising the importance of the labels first compilation album. It's an album that prides itself on working as a complete listen when going from track 1 to track 11, whilst working as DJ tools when used as club tracks.\n\nA great way to end a big year for the label and celebrate the achievements of all the artists’ successes during 2019.", "country": "GB", @@ -29,17 +41,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "DieMantle", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "DieMantle" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +86,20 @@ "work_disambig": null }, { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "Sure Thing", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "Sure Thing" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +124,20 @@ "work_disambig": null }, { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "Monkey Wrench", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "Monkey Wrench" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +162,20 @@ "work_disambig": null }, { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "Addison Groove", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "Addison Groove" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +200,20 @@ "work_disambig": null }, { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "Fox & DieMantle", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "Fox & DieMantle" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -180,11 +238,20 @@ "work_disambig": null }, { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "DJ Die & Pinch", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "DJ Die & Pinch" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -209,11 +276,20 @@ "work_disambig": null }, { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "Dismantle", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "Dismantle" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -238,11 +314,20 @@ "work_disambig": null }, { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "Dead Mans Chest & Josimar", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "Dead Mans Chest & Josimar" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -267,11 +352,20 @@ "work_disambig": null }, { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "Fixate", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "Fixate" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -296,11 +390,22 @@ "work_disambig": null }, { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "Watch The Ride (DJ Randall, DJ Die, Dismantle)", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "Watch The Ride (DJ Randall", + "DJ Die", + "Dismantle)" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -325,11 +430,20 @@ "work_disambig": null }, { + "album": "All Subject To Vibes LP", "arranger": null, "artist": "Sure Thing", "artist_credit": null, "artist_id": "https://gutterfunkuk.bandcamp.com", "artist_sort": null, + "artists": [ + "Sure Thing" + ], + "artists_credit": [], + "artists_ids": [ + "https://gutterfunkuk.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/album_with_track_alt.json b/tests/json/expected/album_with_track_alt.json index 83611ce..e7d8758 100644 --- a/tests/json/expected/album_with_track_alt.json +++ b/tests/json/expected/album_with_track_alt.json @@ -5,12 +5,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "ep", - "albumtypes": "ep", + "albumtypes": [ + "ep" + ], "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "FLD001", "comments": null, "country": "GB", @@ -29,17 +40,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": null, "tracks": [ { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +85,20 @@ "work_disambig": null }, { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +123,20 @@ "work_disambig": null }, { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +161,20 @@ "work_disambig": null }, { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +199,20 @@ "work_disambig": null }, { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -180,11 +237,20 @@ "work_disambig": null }, { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -218,12 +284,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "ep", - "albumtypes": "ep", + "albumtypes": [ + "ep" + ], "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "FLD001", "comments": "For the inaugural EP, FOLD resident Gareth Wild presents ‘Common Assault’. With metallic tubular synthesis, cut-throat percussion and rolling rhythms, this EP is an effective and essential piece of material demonstrating all angles of Techno, immersive to peak-time.\n\nThe release features three original tracks and two locked grooves from Gareth with stripped back, dark-side remix work from Madrid’s very own Roll Dann.", "country": "GB", @@ -242,17 +319,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": null, "tracks": [ { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -277,11 +364,20 @@ "work_disambig": null }, { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -306,11 +402,20 @@ "work_disambig": null }, { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -335,11 +440,20 @@ "work_disambig": null }, { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -364,11 +478,20 @@ "work_disambig": null }, { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -393,11 +516,20 @@ "work_disambig": null }, { + "album": "Common Assault EP", "arranger": null, "artist": "Gareth Wild", "artist_credit": null, "artist_id": "https://foldrecords.bandcamp.com", "artist_sort": null, + "artists": [ + "Gareth Wild" + ], + "artists_credit": [], + "artists_ids": [ + "https://foldrecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/artist_catalognum.json b/tests/json/expected/artist_catalognum.json index 1026403..a7dada0 100644 --- a/tests/json/expected/artist_catalognum.json +++ b/tests/json/expected/artist_catalognum.json @@ -5,12 +5,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album", + "albumtypes": [ + "album" + ], "artist": "Process 404", "artist_credit": null, "artist_id": "https://blvckplvgue.bandcamp.com", "artist_sort": null, + "artists": [ + "Process 404" + ], + "artists_credit": [], + "artists_ids": [ + "https://blvckplvgue.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": "Future as always been a fantasy\n\nBlack/Plague wants to take you to the future. This distant fantasy that continues to inspire so many artists. Will technology bring us progress, or even more chaos?\nAntoine aka Process 404 wants you to take part. This near future where technology creates a constant conflict in our daily life. By combining elements and sonority of cyberpunk culture with Electronic, Process 404 seek to prove his vision of the future and why so many people call Techno « the sound of tomorrow». You can expect 4/4 tracks loaded with dystopian sounds and robotics ammo.\n---\nMastering: Axel Picodot", "country": "FR", @@ -29,17 +40,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Cybernetic Punk Unit", "arranger": null, "artist": "Process 404", "artist_credit": null, "artist_id": "https://blvckplvgue.bandcamp.com", "artist_sort": null, + "artists": [ + "Process 404" + ], + "artists_credit": [], + "artists_ids": [ + "https://blvckplvgue.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +85,20 @@ "work_disambig": null }, { + "album": "Cybernetic Punk Unit", "arranger": null, "artist": "Process 404", "artist_credit": null, "artist_id": "https://blvckplvgue.bandcamp.com", "artist_sort": null, + "artists": [ + "Process 404" + ], + "artists_credit": [], + "artists_ids": [ + "https://blvckplvgue.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +123,20 @@ "work_disambig": null }, { + "album": "Cybernetic Punk Unit", "arranger": null, "artist": "Process 404", "artist_credit": null, "artist_id": "https://blvckplvgue.bandcamp.com", "artist_sort": null, + "artists": [ + "Process 404" + ], + "artists_credit": [], + "artists_ids": [ + "https://blvckplvgue.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +161,20 @@ "work_disambig": null }, { + "album": "Cybernetic Punk Unit", "arranger": null, "artist": "Process 404", "artist_credit": null, "artist_id": "https://blvckplvgue.bandcamp.com", "artist_sort": null, + "artists": [ + "Process 404" + ], + "artists_credit": [], + "artists_ids": [ + "https://blvckplvgue.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/artist_mess.json b/tests/json/expected/artist_mess.json index da2709f..eaf29b1 100644 --- a/tests/json/expected/artist_mess.json +++ b/tests/json/expected/artist_mess.json @@ -5,12 +5,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album", + "albumtypes": [ + "album" + ], "artist": "Various Artists", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Various Artists" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": null, "country": "NU", @@ -29,17 +40,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Orestis", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Orestis" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +85,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Luuli", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Luuli" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +123,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Spiral", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Spiral" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +161,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Kasatka", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Kasatka" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +199,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Spiral & Seeasound", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Spiral & Seeasound" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -180,11 +237,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Friends", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Friends" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -209,11 +275,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Orestis & Jobaba", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Orestis & Jobaba" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -238,11 +313,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Kashyyyk & Arcek", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Kashyyyk & Arcek" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -267,11 +351,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Arcek", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Arcek" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -296,11 +389,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Maleficium & Seeasound", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Maleficium & Seeasound" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -326,11 +428,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Friends", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Friends" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -355,11 +466,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Friends", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Friends" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -384,11 +504,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Friends", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Friends" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -413,11 +542,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Psykovsky & Quip Tone Beatz & Flish", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Psykovsky & Quip Tone Beatz & Flish" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -442,11 +580,20 @@ "work_disambig": null }, { + "album": "Ksolntsu", "arranger": null, "artist": "Birds Of Praise", "artist_credit": null, "artist_id": "https://psykovsky.bandcamp.com", "artist_sort": null, + "artists": [ + "Birds Of Praise" + ], + "artists_credit": [], + "artists_ids": [ + "https://psykovsky.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/compilation.json b/tests/json/expected/compilation.json index 2be42d8..b7928fc 100644 --- a/tests/json/expected/compilation.json +++ b/tests/json/expected/compilation.json @@ -5,12 +5,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "compilation", - "albumtypes": "album; compilation", + "albumtypes": [ + "album", + "compilation" + ], "artist": "Various Artists", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "Various Artists" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "ISMVA003.3", "comments": "Mastering by Eric Reivolp, Artwork by Nick Cocozza", "country": "DE", @@ -29,17 +41,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "ISMVA003.3", "arranger": null, "artist": "Zebar & Zimo", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "Zebar & Zimo" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +86,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "Alpha Tracks", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "Alpha Tracks" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +124,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "Less Distress", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "Less Distress" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +162,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "Lucas Martins", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "Lucas Martins" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +200,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "Pro Athlete", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "Pro Athlete" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -180,11 +238,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "zwyrg", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "zwyrg" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -209,11 +276,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "ΣNDYM", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "ΣNDYM" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -238,11 +314,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "KLØNE", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "KLØNE" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -267,11 +352,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "I.E", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "I.E" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -296,11 +390,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "DJ G2G", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "DJ G2G" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -325,11 +428,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "Mr. Free", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "Mr. Free" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -354,11 +466,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "ABEM", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "ABEM" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -383,11 +504,20 @@ "work_disambig": null }, { + "album": "ISMVA003.3", "arranger": null, "artist": "DJ Reiz", "artist_credit": null, "artist_id": "https://ismusberlin.bandcamp.com", "artist_sort": null, + "artists": [ + "DJ Reiz" + ], + "artists_credit": [], + "artists_ids": [ + "https://ismusberlin.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/description_meta.json b/tests/json/expected/description_meta.json index 2019295..f1f93c4 100644 --- a/tests/json/expected/description_meta.json +++ b/tests/json/expected/description_meta.json @@ -5,12 +5,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album; lp", + "albumtypes": [ + "album", + "lp" + ], "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": null, "country": "PT", @@ -29,17 +41,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +86,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +124,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +162,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +200,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -180,11 +238,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -209,11 +276,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -238,11 +314,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -267,11 +352,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -296,11 +390,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -334,12 +437,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album; lp", + "albumtypes": [ + "album", + "lp" + ], "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "DREA 005", "comments": "Artist: Francois Dillinger\nTitle: Icosahedrone\nFormat: Vinyl, 12\" & CD\nLabel: Diffuse Reality\nCatalogue: DREA 005\n\nVinyl → bit.ly/3cUflzb\nVinyl orders include two Diffuse Reality stickers and digital downloads of the full release.\n\n誠 Makoto - Honesty, absolute sincerity.\nFSC certified Bamboo wood USB flash drive.\nThis means that the wood from which this USB memory is made comes from sustainable forests and is respectful with the environment.\n4GB capacity.\nBlack screen printing. \nwww.diffusereality.net", "country": "PT", @@ -358,17 +473,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -393,11 +518,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -422,11 +556,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -451,11 +594,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -480,11 +632,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -509,11 +670,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -538,11 +708,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -567,11 +746,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -596,11 +784,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -625,11 +822,20 @@ "work_disambig": null }, { + "album": "Icosahedrone", "arranger": null, "artist": "Francois Dillinger", "artist_credit": null, "artist_id": "https://diffusereality.bandcamp.com", "artist_sort": null, + "artists": [ + "Francois Dillinger" + ], + "artists_credit": [], + "artists_ids": [ + "https://diffusereality.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/edge_cases.json b/tests/json/expected/edge_cases.json index 726c999..ff5b0d2 100644 --- a/tests/json/expected/edge_cases.json +++ b/tests/json/expected/edge_cases.json @@ -5,12 +5,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "compilation", - "albumtypes": "album; compilation", + "albumtypes": [ + "album", + "compilation" + ], "artist": "Various Artists", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Various Artists" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "NYH244", "comments": "I met Tom of Eikoismies a good 20 years ago, back when we were both running small labels, focused on electro mostly. We exchanged tracks and stickers and stayed in touch, lost touch and got back in touch. For our followers, it'll hardly be a surprise to hear I am a big fan of his label Erikoisdance, which has been running for 20 years. \n\nIts a real honor to be able to make a selection of tracks of this CDR-only label available digitally. Especially because they have been releasing really top notch experimental electronics and techno in a very limited way. The old-school way, of burning cdr's and hand drawing on them and sending them to fans all over the world. This has kept them very autonomous in their releases and style of music. But man.. it's just too good to not share with the rest of the world via ze webbzz.\n\nI hope you enjoy this selection and I hope you check out Erikoisdance and order one of their timeless. kvlt, trve techno artifacts.\n\nKeep polycarbonate alive!\nhttp://mustakirahvi.net/erikoisdance/\n---\nLess Weird Parallel Universe\nNearly 20 Years of Erikoisdance\nAll tracks previously released on CDR.\ncompiled by Tom & Vince\n\n1) Track 3 \nMallisto\nLive at Mannerheimintie 100 B 48, 31.12.1998 (Erikoisdance 19, 2014)\n\n2) Music for Dealers \nTwisted Krister\nRingbahn (Erikoisdance 14, 2010)\n\n3) _ _ _ \nErikoismies\nSIMO Tracks (Erikoisdance 15, 2012)\n\n4) Mind Freak\nChris Angel\nDiabolus in Musica (Erikoisdance 8, 2008)\n\n5) New Age Home Recording I \nMr. Yakamoto\nNew Age Home Recordings (Erikoisdance 10, 2008)\n\n6) Puujumala \nNon-baryonic Form\nStereo Balance in The Phythm Part (Erikoisdance 7, 2008)\n\n7) Flogiston (ODJ Harri Keys of Life House Music Edit) \nOmni Gideon (edit by ODJ Harri)\nSähkölasku (Erikoisdance 11, 2008)\n\n8) Schweinfurt Green\nPoly-T\nComplete Works (Erikoisdance 6, 2007)\n \n9) Laulu numero 1\nMallisto\nJuhannus 3008 (Erikoisdance 13, 2009)\n\n10) Nitrogen Glaciers\nNon-baryonic Form\nSpatial Guest (Erikoisdance 20, 2016)\n\n11) CDR Track VI\nErikoismies\nCDR Tracks (Erikoisdance 9, 2008)\n\n12) Moskstraumen\nDie Todesmaschine \nMoskstraumen (Erikoisdance 12, 2009)\n\n13) MN-50\nSauce & Cop\nJonkun on ymmärrettävä mitä tehdään (Erikoisdance 16, 2013)\n\n14) TSIMPLNO\nTreepio\nTransistor Amnesia (Erikoisdance 38, 2019)\n\n15) CDR Track I\nErikoismies\nCDR Tracks (Erikoisdance 9, 2008)\n\n16) CB Skull \nNon-baryonic Form\nStereo Balance in The Phythm Part (Erikoisdance 7, 2008)\n\n17) Ytterbium 13\nOmni Gideon\nSähkölasku (Erikoisdance 11, 2008)\n\n18) Quartz Crisis\nSauce & Cop\n[Untitled Split CDR] (Erikoisdance 21, 2015)", "country": "NL", @@ -29,17 +41,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Mallisto", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Mallisto" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +86,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Twisted Krister", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Twisted Krister" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +124,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Erikoismies", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Erikoismies" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +162,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Chris Angel", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Chris Angel" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +200,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Mr. Yakamoto", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Mr. Yakamoto" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -180,11 +238,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Non-baryonic Form", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Non-baryonic Form" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -209,11 +276,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Omni Gideon", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Omni Gideon" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -238,11 +314,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Poly-T", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Poly-T" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -267,11 +352,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Mallisto", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Mallisto" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -296,11 +390,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Non-baryonic Form", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Non-baryonic Form" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -325,11 +428,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Erikoismies", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Erikoismies" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -354,11 +466,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Die Todesmachine", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Die Todesmachine" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -383,11 +504,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Sauce & Cop", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Sauce & Cop" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -412,11 +542,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Treepio", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Treepio" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -441,11 +580,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Erikoismies", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Erikoismies" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -470,11 +618,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Non-baryonic Form", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Non-baryonic Form" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -499,11 +656,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Omni Gideon", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Omni Gideon" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -528,11 +694,20 @@ "work_disambig": null }, { + "album": "Less Weird Parallel Universe - Nearly 20 Years of Erikoisdance", "arranger": null, "artist": "Sauce & Cop", "artist_credit": null, "artist_id": "https://newyorkhaunted.bandcamp.com", "artist_sort": null, + "artists": [ + "Sauce & Cop" + ], + "artists_credit": [], + "artists_ids": [ + "https://newyorkhaunted.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/ep.json b/tests/json/expected/ep.json index 3137edd..6702c22 100644 --- a/tests/json/expected/ep.json +++ b/tests/json/expected/ep.json @@ -5,12 +5,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album", + "albumtypes": [ + "album" + ], "artist": "DJ DISRESPECT, jeånne", "artist_credit": null, "artist_id": "https://fallingapart.bandcamp.com", "artist_sort": null, + "artists": [ + "DJ DISRESPECT", + "jeånne" + ], + "artists_credit": [], + "artists_ids": [ + "https://fallingapart.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "fa010", "comments": null, "country": "DE", @@ -29,17 +41,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Kickdown Vienna", "arranger": null, "artist": "jeånne", "artist_credit": null, "artist_id": "https://fallingapart.bandcamp.com", "artist_sort": null, + "artists": [ + "jeånne" + ], + "artists_credit": [], + "artists_ids": [ + "https://fallingapart.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +86,20 @@ "work_disambig": null }, { + "album": "Kickdown Vienna", "arranger": null, "artist": "jeånne", "artist_credit": null, "artist_id": "https://fallingapart.bandcamp.com", "artist_sort": null, + "artists": [ + "jeånne" + ], + "artists_credit": [], + "artists_ids": [ + "https://fallingapart.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +124,20 @@ "work_disambig": null }, { + "album": "Kickdown Vienna", "arranger": null, "artist": "DJ DISRESPECT", "artist_credit": null, "artist_id": "https://fallingapart.bandcamp.com", "artist_sort": null, + "artists": [ + "DJ DISRESPECT" + ], + "artists_credit": [], + "artists_ids": [ + "https://fallingapart.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +162,20 @@ "work_disambig": null }, { + "album": "Kickdown Vienna", "arranger": null, "artist": "DJ DISRESPECT", "artist_credit": null, "artist_id": "https://fallingapart.bandcamp.com", "artist_sort": null, + "artists": [ + "DJ DISRESPECT" + ], + "artists_credit": [], + "artists_ids": [ + "https://fallingapart.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -160,12 +209,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album", + "albumtypes": [ + "album" + ], "artist": "DJ DISRESPECT, jeånne", "artist_credit": null, "artist_id": "https://fallingapart.bandcamp.com", "artist_sort": null, + "artists": [ + "DJ DISRESPECT", + "jeånne" + ], + "artists_credit": [], + "artists_ids": [ + "https://fallingapart.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "fa010", "comments": "artist: jeånne, DJ Disrespect\nrelease name: Kickdown Vienna\ncatalog: fa010\nbandcamp release date: 09.10.20\nofficial release date: 16.10.20\nformat: vinyl (+ digital only at bandcamp)\n\ntrack info:\nA1 jeånne - the devil's not ås blåck ås he is påinted (hård mix)\nA2 jeånne - the påth to pårådise begins in hell\nB1 DJ DISRESPECT - VIENNA (WARM UP MIX)\nB2 DJ DISRESPECT - TRANSITION (ATHLETIC MIX)\n\nrelease description:\nvienna based artist jeånne maintaining ancient aesthetics on A side. fast pacing acid structures under aggressive beats, enveloped in melancholic strings and melodies.\nDJ DISRESPECT aka Toni Moralez already proven his strong production skills on this and also other labels. He is now delivering two adrenalin kicking, schranz-like dancefloor destroyers out of the depths of Frankfurt am Main.", "country": "DE", @@ -184,17 +245,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Kickdown Vienna", "arranger": null, "artist": "jeånne", "artist_credit": null, "artist_id": "https://fallingapart.bandcamp.com", "artist_sort": null, + "artists": [ + "jeånne" + ], + "artists_credit": [], + "artists_ids": [ + "https://fallingapart.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -219,11 +290,20 @@ "work_disambig": null }, { + "album": "Kickdown Vienna", "arranger": null, "artist": "jeånne", "artist_credit": null, "artist_id": "https://fallingapart.bandcamp.com", "artist_sort": null, + "artists": [ + "jeånne" + ], + "artists_credit": [], + "artists_ids": [ + "https://fallingapart.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -248,11 +328,20 @@ "work_disambig": null }, { + "album": "Kickdown Vienna", "arranger": null, "artist": "DJ DISRESPECT", "artist_credit": null, "artist_id": "https://fallingapart.bandcamp.com", "artist_sort": null, + "artists": [ + "DJ DISRESPECT" + ], + "artists_credit": [], + "artists_ids": [ + "https://fallingapart.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -277,11 +366,20 @@ "work_disambig": null }, { + "album": "Kickdown Vienna", "arranger": null, "artist": "DJ DISRESPECT", "artist_credit": null, "artist_id": "https://fallingapart.bandcamp.com", "artist_sort": null, + "artists": [ + "DJ DISRESPECT" + ], + "artists_credit": [], + "artists_ids": [ + "https://fallingapart.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/hex002.json b/tests/json/expected/hex002.json index 7f1b0bb..c0630d5 100644 --- a/tests/json/expected/hex002.json +++ b/tests/json/expected/hex002.json @@ -5,12 +5,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "ep", - "albumtypes": "ep", + "albumtypes": [ + "ep" + ], "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "HEX002", "comments": "‘Conflict’ opens the release with fast paced percussion, sustained atmospherics and frenzied high hats before ‘Arise’ weaves acid dipped synths into metallic clashes and hard hitting stabs. ’Timeless’ is next, painting haunting textures with stormy effects, leading into ‘END’ which swiftly builds into a powerful cut complete with growling bass. Tying everything together, Nexe Records founders NX1 remix ‘Conflict’, incorporating warped frequencies and a murky low-end.\n\nFeedbacks about the EP:\n► Rebekah - killer industrial vibes here, love all tracks and remix\n► Gary Beck - These are huge, especially the timeless one\n► Dasha Rush - like most of the tracks, thanks\n► Under Black Helmet - The whole EP is great!\n► Randomer - great tracks\n► Remco Beekwilder - Conflict is a belter, thanks!!\n► Raffaele Attanasio - I'll play for sure!!!\n► Henning Baer - TOP!\n► Stephanie Sykes - Yaaaaaasssss.... loving this release!! <3\n► Insolate - Arise super cool!\n► Joe Farr - NX1 remix is great. I also like Timeless a lot. Thanks.\n► Nur Jaber - VII <3\n► Cleric - Nice EP will play thanks\n\nand many more...\n\nMastered at The Bass Valley Studios by Alan Lockwood", "country": "ES", @@ -29,17 +40,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "From The Depths", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +85,20 @@ "work_disambig": null }, { + "album": "From The Depths", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +123,20 @@ "work_disambig": null }, { + "album": "From The Depths", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +161,20 @@ "work_disambig": null }, { + "album": "From The Depths", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +199,20 @@ "work_disambig": null }, { + "album": "From The Depths", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -189,12 +246,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "ep", - "albumtypes": "ep", + "albumtypes": [ + "ep" + ], "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "HEX002", "comments": "‘Conflict’ opens the release with fast paced percussion, sustained atmospherics and frenzied high hats before ‘Arise’ weaves acid dipped synths into metallic clashes and hard hitting stabs. ’Timeless’ is next, painting haunting textures with stormy effects, leading into ‘END’ which swiftly builds into a powerful cut complete with growling bass. Tying everything together, Nexe Records founders NX1 remix ‘Conflict’, incorporating warped frequencies and a murky low-end.\n\nFeedbacks about the EP:\n► Rebekah - killer industrial vibes here, love all tracks and remix\n► Gary Beck - These are huge, especially the timeless one\n► Dasha Rush - like most of the tracks, thanks\n► Under Black Helmet - The whole EP is great!\n► Randomer - great tracks\n► Remco Beekwilder - Conflict is a belter, thanks!!\n► Raffaele Attanasio - I'll play for sure!!!\n► Henning Baer - TOP!\n► Stephanie Sykes - Yaaaaaasssss.... loving this release!! <3\n► Insolate - Arise super cool!\n► Joe Farr - NX1 remix is great. I also like Timeless a lot. Thanks.\n► Nur Jaber - VII <3\n► Cleric - Nice EP will play thanks\n\nand many more...\n\nMastered at The Bass Valley Studios by Alan Lockwood\n---\nHEX002 - From The Depths\n1x12\"\n180 grams\n\nA1 - Conflict\nA2 - Arise\nA3 - Conflict (NX1 Remix)\nB1 - Timeless\nB2 - END", "country": "ES", @@ -213,17 +281,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "From The Depths", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -248,11 +326,20 @@ "work_disambig": null }, { + "album": "From The Depths", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -277,11 +364,20 @@ "work_disambig": null }, { + "album": "From The Depths", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -306,11 +402,20 @@ "work_disambig": null }, { + "album": "From The Depths", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -335,11 +440,20 @@ "work_disambig": null }, { + "album": "From The Depths", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/hex008.json b/tests/json/expected/hex008.json index 21eb85a..7769dec 100644 --- a/tests/json/expected/hex008.json +++ b/tests/json/expected/hex008.json @@ -5,12 +5,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "compilation", - "albumtypes": "album; compilation", + "albumtypes": [ + "album", + "compilation" + ], "artist": "Various Artists", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Various Artists" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "HEX008", "comments": "HEX008 | Angels From Hell (Various Artists)\nTriple-Red-Vinyl\n\n---\n\nSome feedback on the release:\n\n► Quail - HUGE pack, absolute killers all round. Thanks!\n► Essan - Thank you very much for sending me your promo, the tracks sound amazing, I love!!!!\n► JC Laurent - Super Solid VA! Thanks a lot :) Rommek & Cleric are my favs\n► boyd schidt - sick release thanks for the promo\n► Downwell - Great tracks ! Fav: Imperial Black Unit - Broken Tools\n► Jay Clarke - Heavy Heavy selection of tunes here. Solid release chaps! Thx for sharing!\n► takaaki itoh - great v.a!\n► slam - nice collection\n► Henning Baer - Massive!\n► Cristian Varela - AWESOME!\n► Roll Dann - Crazy Tracks, muchas gracias!\n► Luca Agnelli - super pack\n► ENDLEC - Superb selections as usual!\n► Jerm - Cleric's & Benjamin's my top picks, great compilation overall guys :)\n► Tom Page - Loads here for me, fantastic compilation! Love the Rommek, Benjamin Damage, Cleric & Imperial Black Unit tracks, but its all top notch, thanks :)\n► Alex Guerra - Brutal,Friends! Congrats for 2nd Anniversary.Thanks again!\n\n---\n\nWe're very excited to celebrate the 2nd Anniversary of \"HEX Recordings\" so for the occasion, we decided to create the most powerful release so far, a Triple-Vinyl Various Artists, which includes the creations of some of the artists that are closest to the Movement but never released on the label until now like Rebekah, Cleric, Remco Beekwilder, together with new members like Benjamin Damage, AEIT, Imperial Black Unit, End Train, Rommek, Maere, 6Siss and of course some of the ambassadors of the label like Under Black Helmet, VII Circle and the two HEX Founders Paolo Ferrara and Lorenzo Raganzini.\n\nThe title of the release is \"Angels From Hell\" and it represents the most ambitious release ever created by HEX. 3 flaming Red colour Vinyl, together with some new T-shirts + Hoodie characterised by the VA's unique design.\n\n15 Artists will represent the unity under Techno of 7 different countries: France, England, Italy, Netherlands, Lithuania, Belgium and Israel.\n\n---\n\nVinyl 1\nA1 - Rebekah - You Be The Leader\nA2 - Paolo Ferrara & Lorenzo Raganzini - Sanitary Dictature\nA3 - AEIT - 12 Gauge\nB1 - VII Circle - Demons\nB2 - Rommek - Mezcal Worm\n\n\nVinyl 2\nC1 - Cleric - The Puppet Master \nC2 - Remco Beekwilder - Air Of The 90s\nD1 - AnD - Fearless\nD2 - Benjamin Damage - Matriachy\n\n\nVinyl 3 \nE1 - Under Black Helmet - The Purist\nE2 - MAERE & 6SISS - Organisms\nF1 - Imperial Black Unit - Broken Tools\nF2 - End Train - Ctrl+Alt+Delete The System\n\n\nMasters by Alain Paul (Germany)\nDesign by Giambrone Studio", "country": "ES", @@ -29,17 +41,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Angels From Hell", "arranger": null, "artist": "Rebekah", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Rebekah" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +86,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Paolo Ferrara & Lorenzo Raganzini", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Paolo Ferrara & Lorenzo Raganzini" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +124,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "AEIT", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "AEIT" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +162,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +200,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Rommek", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Rommek" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -180,11 +238,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Cleric", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Cleric" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -209,11 +276,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Remco Beekwilder", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Remco Beekwilder" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -238,11 +314,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "AnD", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "AnD" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -267,11 +352,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Benjamin Damage", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Benjamin Damage" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -296,11 +390,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Under Black Helmet ", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Under Black Helmet" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -325,11 +428,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "MAERE & 6SISS", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "MAERE & 6SISS" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -354,11 +466,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Imperial Black Unit", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Imperial Black Unit" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -383,11 +504,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "End Train", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "End Train" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -421,12 +551,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "compilation", - "albumtypes": "album; compilation", + "albumtypes": [ + "album", + "compilation" + ], "artist": "Various Artists", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Various Artists" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "XXX008", "comments": "HEX008 | Angels From Hell (Various Artists)\nTriple-Red-Vinyl\n\n---\n\nSome feedback on the release:\n\n► Quail - HUGE pack, absolute killers all round. Thanks!\n► Essan - Thank you very much for sending me your promo, the tracks sound amazing, I love!!!!\n► JC Laurent - Super Solid VA! Thanks a lot :) Rommek & Cleric are my favs\n► boyd schidt - sick release thanks for the promo\n► Downwell - Great tracks ! Fav: Imperial Black Unit - Broken Tools\n► Jay Clarke - Heavy Heavy selection of tunes here. Solid release chaps! Thx for sharing!\n► takaaki itoh - great v.a!\n► slam - nice collection\n► Henning Baer - Massive!\n► Cristian Varela - AWESOME!\n► Roll Dann - Crazy Tracks, muchas gracias!\n► Luca Agnelli - super pack\n► ENDLEC - Superb selections as usual!\n► Jerm - Cleric's & Benjamin's my top picks, great compilation overall guys :)\n► Tom Page - Loads here for me, fantastic compilation! Love the Rommek, Benjamin Damage, Cleric & Imperial Black Unit tracks, but its all top notch, thanks :)\n► Alex Guerra - Brutal,Friends! Congrats for 2nd Anniversary.Thanks again!\n\n---\n\nWe're very excited to celebrate the 2nd Anniversary of \"HEX Recordings\" so for the occasion, we decided to create the most powerful release so far, a Triple-Vinyl Various Artists, which includes the creations of some of the artists that are closest to the Movement but never released on the label until now like Rebekah, Cleric, Remco Beekwilder, together with new members like Benjamin Damage, AEIT, Imperial Black Unit, End Train, Rommek, Maere, 6Siss and of course some of the ambassadors of the label like Under Black Helmet, VII Circle and the two HEX Founders Paolo Ferrara and Lorenzo Raganzini.\n\nThe title of the release is \"Angels From Hell\" and it represents the most ambitious release ever created by HEX. 3 flaming Red colour Vinyl, together with some new T-shirts + Hoodie characterised by the VA's unique design.\n\n15 Artists will represent the unity under Techno of 7 different countries: France, England, Italy, Netherlands, Lithuania, Belgium and Israel.\n\n---\n\nVinyl 1\nA1 - Rebekah - You Be The Leader\nA2 - Paolo Ferrara & Lorenzo Raganzini - Sanitary Dictature\nA3 - AEIT - 12 Gauge\nB1 - VII Circle - Demons\nB2 - Rommek - Mezcal Worm\n\n\nVinyl 2\nC1 - Cleric - The Puppet Master \nC2 - Remco Beekwilder - Air Of The 90s\nD1 - AnD - Fearless\nD2 - Benjamin Damage - Matriachy\n\n\nVinyl 3 \nE1 - Under Black Helmet - The Purist\nE2 - MAERE & 6SISS - Organisms\nF1 - Imperial Black Unit - Broken Tools\nF2 - End Train - Ctrl+Alt+Delete The System\n\n\nMasters by Alain Paul (Germany)\nDesign by Giambrone Studio\n---\nTriple-Red Flamed-Vinyl\n(only 300 copies)\n\nNo black version\n\nXXX008 | Angels From Hell\n3x12\" special red edition", "country": "ES", @@ -445,17 +587,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Angels From Hell", "arranger": null, "artist": "Rebekah", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Rebekah" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -480,11 +632,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Paolo Ferrara & Lorenzo Raganzini", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Paolo Ferrara & Lorenzo Raganzini" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -509,11 +670,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "AEIT", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "AEIT" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -538,11 +708,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "VII Circle", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "VII Circle" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -567,11 +746,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Rommek", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Rommek" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -596,11 +784,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Cleric", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Cleric" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -625,11 +822,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Remco Beekwilder", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Remco Beekwilder" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -654,11 +860,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "AnD", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "AnD" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -683,11 +898,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Benjamin Damage", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Benjamin Damage" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -712,11 +936,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Under Black Helmet ", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Under Black Helmet" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -741,11 +974,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "MAERE & 6SISS", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "MAERE & 6SISS" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -770,11 +1012,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "Imperial Black Unit", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "Imperial Black Unit" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -799,11 +1050,20 @@ "work_disambig": null }, { + "album": "Angels From Hell", "arranger": null, "artist": "End Train", "artist_credit": null, "artist_id": "https://hexbarcelona.bandcamp.com", "artist_sort": null, + "artists": [ + "End Train" + ], + "artists_credit": [], + "artists_ids": [ + "https://hexbarcelona.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/issue-18.json b/tests/json/expected/issue-18.json index ca7b0da..8115c1e 100644 --- a/tests/json/expected/issue-18.json +++ b/tests/json/expected/issue-18.json @@ -5,12 +5,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album", + "albumtypes": [ + "album" + ], "artist": "General Dicon", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": null, "country": "US", @@ -29,17 +40,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": null, "tracks": [ { + "album": "FALL IN", "arranger": null, "artist": "General Dicon", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +85,20 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +123,21 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon ft.nation", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon", + "nation" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +162,20 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +200,20 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -180,11 +238,21 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon ft.spellbinder", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon", + "spellbinder" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -209,11 +277,21 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon ft.spellbinder", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon", + "spellbinder" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -238,11 +316,21 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon ft.Spellbinder", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon", + "Spellbinder" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -267,11 +355,20 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -296,11 +393,20 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -325,11 +431,21 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon ft. scrilla scratch", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon", + "scrilla scratch" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -354,11 +470,21 @@ "work_disambig": null }, { + "album": "FALL IN", "arranger": null, "artist": "General Dicon ft.Spellbinder", "artist_credit": null, "artist_id": "https://54thregiment.bandcamp.com", "artist_sort": null, + "artists": [ + "General Dicon", + "Spellbinder" + ], + "artists_credit": [], + "artists_ids": [ + "https://54thregiment.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/media_with_track_alts_in_desc.json b/tests/json/expected/media_with_track_alts_in_desc.json index 8d90dfd..71f6752 100644 --- a/tests/json/expected/media_with_track_alts_in_desc.json +++ b/tests/json/expected/media_with_track_alts_in_desc.json @@ -5,12 +5,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album; lp", + "albumtypes": [ + "album", + "lp" + ], "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": "Finally. More than eight years after Diorama, Dominik Eulberg releases his long awaited fifth studio album Mannigfaltig. With twelve elaborate pieces of music, he creates a burning plea to preserve the breathtaking biodiversity of nature and at the same time warns of the threat posed to it by humans. It is a detailed record that demands close listening and showcases Eulberg's considerable synth craft, with drawn out pads and delicate keys laid over undulating rhythms that slowly take you through a wide range of emotions. Elements of ambient, downtempo, electronica, pop and minimal are infused with the sounds of nature, a choral sense of musicality and wistful air of grace across all the majestically composed pieces.\n\nOn his return and finally serving up a new album, Eulberg says, “music only makes sense for me if it has something to say. And I have something to say now! \nHe feels he has found a holistic and fulfilling way to use his musical platform to continue to advocate for the importance of biodiversity. “It's my mission—my calling, if you will —to sensitise people to nature,” says the qualified biologist and ecologist, specialist nature author, ambassador and accomplished producer. \n\nHe came up with the idea for the new album’s concept during a hiking tour in his home town when he first happened upon a butterfly whose name is literally translated as ‘golden-eight.’ Then he saw a songbird called ‘nine-slayer’ and heard the calls of a dormouse, whose name in German is ‘seven-sleeper.’ This is when he discovered that the seemingly casual chain went further - that for every number from one to twelve there is a name of a native animal species.\n\nOur nature is so diverse, or more beautifully expressed so manifold (hence the album title, ‘mannigfaltig,’ which means manifold in German). But the threat to it from human behaviour has never been more real, with more species than ever before going extinct in such a short space of time. This record is his attempt to point out the importance of “giving our animal friends back the space they need.”\n\nMannigfaltig is an album about the variety and colourfulness of nature, which for Eulberg is “the greatest artist of all” and something that soothes his soul and is the “easiest, healthiest and most cost-effective key to happiness”. With a clear concept behind each album, this latest one is a musical attempt to mirror the endless variation of nature and “highlight the entire colour palette” while always going with the flow of his inner feelings. “I always look for an innovative momentum, and never try to imitate anything, or even myself.” The album is an artistic advancement on Diorama thanks to new synths, mixers and developing new production techniques.\n\nIt is a positive record, a mosaic of many small pleasures that can be listened to in a range of settings, from comedowns to long drives thanks to many rewarding layers of richness and complexity. “The most beautiful setting would be of course along with contemplative observations of nature, for that is indeed its origin.”\n\nEulberg uses his synths like a water-colour painter, spreading them across the airwaves in soft tones and with blurred edges. Gentle rhythms propel the tracks as glistening percussion and angelic harmonies lift your spirits. Reconciling the beauty of nature with the beauty of sound, Eulberg takes you through dewy mornings, spring afternoons and brightly lit forest rambles with a real deftness and delicacy that replicates the majesty of the natural world in which we live.\n\nFrom melancholy to euphoria and back again, this is an invigorating, inspiring record that washed over you in waves of soul-stirring sound.\n---\n2019, !K7 Music", "country": "DE", @@ -29,17 +41,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +86,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +124,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +162,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +200,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -180,11 +238,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -209,11 +276,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -238,11 +314,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -267,11 +352,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -296,11 +390,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -325,11 +428,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -354,11 +466,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -392,12 +513,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album; lp", + "albumtypes": [ + "album", + "lp" + ], "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": "Finally. More than eight years after Diorama, Dominik Eulberg releases his long awaited fifth studio album Mannigfaltig. With twelve elaborate pieces of music, he creates a burning plea to preserve the breathtaking biodiversity of nature and at the same time warns of the threat posed to it by humans. It is a detailed record that demands close listening and showcases Eulberg's considerable synth craft, with drawn out pads and delicate keys laid over undulating rhythms that slowly take you through a wide range of emotions. Elements of ambient, downtempo, electronica, pop and minimal are infused with the sounds of nature, a choral sense of musicality and wistful air of grace across all the majestically composed pieces.\n\nOn his return and finally serving up a new album, Eulberg says, “music only makes sense for me if it has something to say. And I have something to say now! \nHe feels he has found a holistic and fulfilling way to use his musical platform to continue to advocate for the importance of biodiversity. “It's my mission—my calling, if you will —to sensitise people to nature,” says the qualified biologist and ecologist, specialist nature author, ambassador and accomplished producer. \n\nHe came up with the idea for the new album’s concept during a hiking tour in his home town when he first happened upon a butterfly whose name is literally translated as ‘golden-eight.’ Then he saw a songbird called ‘nine-slayer’ and heard the calls of a dormouse, whose name in German is ‘seven-sleeper.’ This is when he discovered that the seemingly casual chain went further - that for every number from one to twelve there is a name of a native animal species.\n\nOur nature is so diverse, or more beautifully expressed so manifold (hence the album title, ‘mannigfaltig,’ which means manifold in German). But the threat to it from human behaviour has never been more real, with more species than ever before going extinct in such a short space of time. This record is his attempt to point out the importance of “giving our animal friends back the space they need.”\n\nMannigfaltig is an album about the variety and colourfulness of nature, which for Eulberg is “the greatest artist of all” and something that soothes his soul and is the “easiest, healthiest and most cost-effective key to happiness”. With a clear concept behind each album, this latest one is a musical attempt to mirror the endless variation of nature and “highlight the entire colour palette” while always going with the flow of his inner feelings. “I always look for an innovative momentum, and never try to imitate anything, or even myself.” The album is an artistic advancement on Diorama thanks to new synths, mixers and developing new production techniques.\n\nIt is a positive record, a mosaic of many small pleasures that can be listened to in a range of settings, from comedowns to long drives thanks to many rewarding layers of richness and complexity. “The most beautiful setting would be of course along with contemplative observations of nature, for that is indeed its origin.”\n\nEulberg uses his synths like a water-colour painter, spreading them across the airwaves in soft tones and with blurred edges. Gentle rhythms propel the tracks as glistening percussion and angelic harmonies lift your spirits. Reconciling the beauty of nature with the beauty of sound, Eulberg takes you through dewy mornings, spring afternoons and brightly lit forest rambles with a real deftness and delicacy that replicates the majesty of the natural world in which we live.\n\nFrom melancholy to euphoria and back again, this is an invigorating, inspiring record that washed over you in waves of soul-stirring sound.\n---\nA1: Eintagsfliege\nA2: Zweibrütiger Scheckenfalter\n\nB1: Dreizehenspecht\nB2: Vierfleck\n\nC1: Fünffleck-Widderchen\nC2: Sechslinien-Bodeneule\n\nD1: Siebenschläfer\nD2: Goldene Acht\n\nE1: Neuntöter\nE2: Zehnpunkt-Marienkäfer\n\nF1 Elfenbein-Flechtenbärchen\nF2 Zwölfpunkt-Spargelkäfer\n---\n2019, !K7 Music", "country": "DE", @@ -416,17 +549,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -451,11 +594,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -480,11 +632,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -509,11 +670,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -538,11 +708,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -567,11 +746,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -596,11 +784,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -625,11 +822,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -654,11 +860,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -683,11 +898,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -712,11 +936,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -741,11 +974,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -779,12 +1021,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album; lp", + "albumtypes": [ + "album", + "lp" + ], "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": "Finally. More than eight years after Diorama, Dominik Eulberg releases his long awaited fifth studio album Mannigfaltig. With twelve elaborate pieces of music, he creates a burning plea to preserve the breathtaking biodiversity of nature and at the same time warns of the threat posed to it by humans. It is a detailed record that demands close listening and showcases Eulberg's considerable synth craft, with drawn out pads and delicate keys laid over undulating rhythms that slowly take you through a wide range of emotions. Elements of ambient, downtempo, electronica, pop and minimal are infused with the sounds of nature, a choral sense of musicality and wistful air of grace across all the majestically composed pieces.\n\nOn his return and finally serving up a new album, Eulberg says, “music only makes sense for me if it has something to say. And I have something to say now! \nHe feels he has found a holistic and fulfilling way to use his musical platform to continue to advocate for the importance of biodiversity. “It's my mission—my calling, if you will —to sensitise people to nature,” says the qualified biologist and ecologist, specialist nature author, ambassador and accomplished producer. \n\nHe came up with the idea for the new album’s concept during a hiking tour in his home town when he first happened upon a butterfly whose name is literally translated as ‘golden-eight.’ Then he saw a songbird called ‘nine-slayer’ and heard the calls of a dormouse, whose name in German is ‘seven-sleeper.’ This is when he discovered that the seemingly casual chain went further - that for every number from one to twelve there is a name of a native animal species.\n\nOur nature is so diverse, or more beautifully expressed so manifold (hence the album title, ‘mannigfaltig,’ which means manifold in German). But the threat to it from human behaviour has never been more real, with more species than ever before going extinct in such a short space of time. This record is his attempt to point out the importance of “giving our animal friends back the space they need.”\n\nMannigfaltig is an album about the variety and colourfulness of nature, which for Eulberg is “the greatest artist of all” and something that soothes his soul and is the “easiest, healthiest and most cost-effective key to happiness”. With a clear concept behind each album, this latest one is a musical attempt to mirror the endless variation of nature and “highlight the entire colour palette” while always going with the flow of his inner feelings. “I always look for an innovative momentum, and never try to imitate anything, or even myself.” The album is an artistic advancement on Diorama thanks to new synths, mixers and developing new production techniques.\n\nIt is a positive record, a mosaic of many small pleasures that can be listened to in a range of settings, from comedowns to long drives thanks to many rewarding layers of richness and complexity. “The most beautiful setting would be of course along with contemplative observations of nature, for that is indeed its origin.”\n\nEulberg uses his synths like a water-colour painter, spreading them across the airwaves in soft tones and with blurred edges. Gentle rhythms propel the tracks as glistening percussion and angelic harmonies lift your spirits. Reconciling the beauty of nature with the beauty of sound, Eulberg takes you through dewy mornings, spring afternoons and brightly lit forest rambles with a real deftness and delicacy that replicates the majesty of the natural world in which we live.\n\nFrom melancholy to euphoria and back again, this is an invigorating, inspiring record that washed over you in waves of soul-stirring sound.\n---\n1.Eintagsfliege\n2.Zweibrütiger Scheckenfalter\n3.Dreizehenspecht\n4.Vierfleck\n5.Fünffleck-Widderchen\n6.Sechslinien-Bodeneule\n7.Siebenschläfer\n8.Goldene Acht\n9.Neuntöter\n10.Zehnpunkt-Marienkäfer\n11.Elfenbein-Flechtenbärchen\n12.Zwölfpunkt-Spargelkäfer\n---\n2019, !K7 Music", "country": "DE", @@ -803,17 +1057,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -838,11 +1102,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -867,11 +1140,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -896,11 +1178,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -925,11 +1216,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -954,11 +1254,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -983,11 +1292,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -1012,11 +1330,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -1041,11 +1368,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -1070,11 +1406,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -1099,11 +1444,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -1128,11 +1482,20 @@ "work_disambig": null }, { + "album": "Mannigfaltig", "arranger": null, "artist": "Dominik Eulberg", "artist_credit": null, "artist_id": "https://dominikeulberg.bandcamp.com", "artist_sort": null, + "artists": [ + "Dominik Eulberg" + ], + "artists_credit": [], + "artists_ids": [ + "https://dominikeulberg.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/remix_artists.json b/tests/json/expected/remix_artists.json index ff937bc..04dbb95 100644 --- a/tests/json/expected/remix_artists.json +++ b/tests/json/expected/remix_artists.json @@ -5,12 +5,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "ep", - "albumtypes": "ep; remix", + "albumtypes": [ + "ep", + "remix" + ], "artist": "UNREALNUMBERS", "artist_credit": null, "artist_id": "https://maisoncloserecords.bandcamp.com", "artist_sort": null, + "artists": [ + "UNREALNUMBERS" + ], + "artists_credit": [], + "artists_ids": [ + "https://maisoncloserecords.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": "Supported by Dax J, SPFDJ, Wallis, u.r.trax, Rezystor, DYEN, VII Circle, VII Circle & more ...", "country": "FR", @@ -29,17 +41,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Unseen EP", "arranger": null, "artist": "UNREALNUMBERS", "artist_credit": null, "artist_id": "https://maisoncloserecords.bandcamp.com", "artist_sort": null, + "artists": [ + "UNREALNUMBERS" + ], + "artists_credit": [], + "artists_ids": [ + "https://maisoncloserecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +86,20 @@ "work_disambig": null }, { + "album": "Unseen EP", "arranger": null, "artist": "UNREALNUMBERS", "artist_credit": null, "artist_id": "https://maisoncloserecords.bandcamp.com", "artist_sort": null, + "artists": [ + "UNREALNUMBERS" + ], + "artists_credit": [], + "artists_ids": [ + "https://maisoncloserecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +124,20 @@ "work_disambig": null }, { + "album": "Unseen EP", "arranger": null, "artist": "UNREALNUMBERS", "artist_credit": null, "artist_id": "https://maisoncloserecords.bandcamp.com", "artist_sort": null, + "artists": [ + "UNREALNUMBERS" + ], + "artists_credit": [], + "artists_ids": [ + "https://maisoncloserecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +162,20 @@ "work_disambig": null }, { + "album": "Unseen EP", "arranger": null, "artist": "UNREALNUMBERS", "artist_credit": null, "artist_id": "https://maisoncloserecords.bandcamp.com", "artist_sort": null, + "artists": [ + "UNREALNUMBERS" + ], + "artists_credit": [], + "artists_ids": [ + "https://maisoncloserecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +200,20 @@ "work_disambig": null }, { + "album": "Unseen EP", "arranger": null, "artist": "UNREALNUMBERS", "artist_credit": null, "artist_id": "https://maisoncloserecords.bandcamp.com", "artist_sort": null, + "artists": [ + "UNREALNUMBERS" + ], + "artists_credit": [], + "artists_ids": [ + "https://maisoncloserecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -180,11 +238,20 @@ "work_disambig": null }, { + "album": "Unseen EP", "arranger": null, "artist": "UNREALNUMBERS", "artist_credit": null, "artist_id": "https://maisoncloserecords.bandcamp.com", "artist_sort": null, + "artists": [ + "UNREALNUMBERS" + ], + "artists_credit": [], + "artists_ids": [ + "https://maisoncloserecords.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/remix_without_brackets.json b/tests/json/expected/remix_without_brackets.json index 222bcda..3e207e5 100644 --- a/tests/json/expected/remix_without_brackets.json +++ b/tests/json/expected/remix_without_brackets.json @@ -5,12 +5,25 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "ep", - "albumtypes": "ep; single", + "albumtypes": [ + "ep", + "single" + ], "artist": "Aluphobia, Astatine", "artist_credit": null, "artist_id": "https://purehate000.bandcamp.com", "artist_sort": null, + "artists": [ + "Aluphobia", + "Astatine" + ], + "artists_credit": [], + "artists_ids": [ + "https://purehate000.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": null, "country": "HU", @@ -29,17 +42,28 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Problem Child EP", "arranger": null, "artist": "Aluphobia x Astatine", "artist_credit": null, "artist_id": "https://purehate000.bandcamp.com", "artist_sort": null, + "artists": [ + "Aluphobia", + "Astatine" + ], + "artists_credit": [], + "artists_ids": [ + "https://purehate000.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +88,21 @@ "work_disambig": null }, { + "album": "Problem Child EP", "arranger": null, "artist": "Aluphobia x Astatine", "artist_credit": null, "artist_id": "https://purehate000.bandcamp.com", "artist_sort": null, + "artists": [ + "Aluphobia", + "Astatine" + ], + "artists_credit": [], + "artists_ids": [ + "https://purehate000.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +127,21 @@ "work_disambig": null }, { + "album": "Problem Child EP", "arranger": null, "artist": "Aluphobia x Astatine", "artist_credit": null, "artist_id": "https://purehate000.bandcamp.com", "artist_sort": null, + "artists": [ + "Aluphobia", + "Astatine" + ], + "artists_credit": [], + "artists_ids": [ + "https://purehate000.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/rr2.json b/tests/json/expected/rr2.json index 55eb64f..c39517d 100644 --- a/tests/json/expected/rr2.json +++ b/tests/json/expected/rr2.json @@ -5,12 +5,25 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album; remix; single", + "albumtypes": [ + "album", + "remix", + "single" + ], "artist": "RADICAL G & THE HORRORIST", "artist_credit": null, "artist_id": "https://44labelgroup.bandcamp.com", "artist_sort": null, + "artists": [ + "RADICAL G & THE HORRORIST" + ], + "artists_credit": [], + "artists_ids": [ + "https://44labelgroup.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "", "comments": null, "country": "DE", @@ -29,17 +42,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": null, "tracks": [ { + "album": "RR2", "arranger": null, "artist": "RADICAL G & THE HORRORIST", "artist_credit": null, "artist_id": "https://44labelgroup.bandcamp.com", "artist_sort": null, + "artists": [ + "RADICAL G & THE HORRORIST" + ], + "artists_credit": [], + "artists_ids": [ + "https://44labelgroup.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/single_only_track_name.json b/tests/json/expected/single_only_track_name.json index f62c25e..6a47d0d 100644 --- a/tests/json/expected/single_only_track_name.json +++ b/tests/json/expected/single_only_track_name.json @@ -1,11 +1,17 @@ { + "album": null, "albumtype": "single", - "albumtypes": "single", + "albumtypes": ["single"], "arranger": null, "artist": "GUTKEIN", "artist_credit": null, "artist_id": "https://gutkeinforu.bandcamp.com", "artist_sort": null, + "artists": ["GUTKEIN"], + "artists_credit": [], + "artists_ids": ["https://gutkeinforu.bandcamp.com"], + "artists_sort": [], + "barcode": null, "bpm": null, "catalognum": "", "comments": "little distorted", @@ -29,6 +35,7 @@ "medium_total": null, "month": 1, "release_track_id": null, + "release_group_title": null, "style": "electronic", "title": "OENERA", "track_alt": null, diff --git a/tests/json/expected/single_track_release.json b/tests/json/expected/single_track_release.json index 5bd4a48..4abb0f6 100644 --- a/tests/json/expected/single_track_release.json +++ b/tests/json/expected/single_track_release.json @@ -1,11 +1,17 @@ { + "album": null, "albumtype": "single", - "albumtypes": "single", + "albumtypes": ["single"], "arranger": null, "artist": "Matriark", "artist_credit": null, "artist_id": "https://mega-tech.bandcamp.com", "artist_sort": null, + "artists": ["Matriark"], + "artists_credit": [], + "artists_ids": ["https://mega-tech.bandcamp.com"], + "artists_sort": [], + "barcode": null, "bpm": null, "catalognum": "mt004", "comments": "mt004\n\nmastering by alexander salomonsen\n\n\nI'm very happy to announce Andrea's debut track. <3\n\nhttps://soundcloud.com/matriarkcph\nhttps://www.instagram.com/andreaapettersen/", @@ -29,6 +35,7 @@ "medium_total": null, "month": 11, "release_track_id": null, + "release_group_title": null, "style": null, "title": "Arangel", "track_alt": null, diff --git a/tests/json/expected/single_with_remixes.json b/tests/json/expected/single_with_remixes.json index d78f2cc..a398802 100644 --- a/tests/json/expected/single_with_remixes.json +++ b/tests/json/expected/single_with_remixes.json @@ -5,12 +5,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album; single", + "albumtypes": [ + "album", + "single" + ], "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "Kulør 008", "comments": "W/P by Reece Cox \nMastered by Joel Krozer, Six Bit Deep\nCreative direction: Najaaraq Vestbirk \nArtwork: Holler in the Green by Miriam Kongstad \nGraphic design: Spine Studio \n\nA1 Reece Cox - Emotion 1 (4:55) \nWritten and produced by Reece Cox. \n\nA2 Reece Cox - Emotion 1 (Ibon's Dizzy Stomp Mix) (8:44) \nRemix by DJ Ibon.\n\nB1 Reece Cox - Emotion 1 (Parris Remix) (5:40) \nRemix by Dwayne Parris-Robinson, mixed by Call Super. \n\nB2 Reece Cox - Emotion 1 (Call Super Remix) (6.40) \nRemix by Call Super. \n\nB3 Reece Cox - Emotion 1 (Upsammy Remix) (4:26) \nRemix by Thessa Torsing.", "country": "DE", @@ -29,17 +41,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Emotion 1", "arranger": null, "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +86,20 @@ "work_disambig": null }, { + "album": "Emotion 1", "arranger": null, "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +124,20 @@ "work_disambig": null }, { + "album": "Emotion 1", "arranger": null, "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -122,11 +162,20 @@ "work_disambig": null }, { + "album": "Emotion 1", "arranger": null, "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -151,11 +200,20 @@ "work_disambig": null }, { + "album": "Emotion 1", "arranger": null, "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -189,12 +247,24 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album; single", + "albumtypes": [ + "album", + "single" + ], "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "Kulør 008", "comments": "Vinyl is expected later in March.\nPostage price includes tracking\n\nPlease be aware that we are still experiencing covid related issues with shipping companies. The package might therefore take longer than usual to arrive\n---\nW/P by Reece Cox \nMastered by Joel Krozer, Six Bit Deep\nCreative direction: Najaaraq Vestbirk \nArtwork: Holler in the Green by Miriam Kongstad \nGraphic design: Spine Studio \n\nA1 Reece Cox - Emotion 1 (4:55) \nWritten and produced by Reece Cox. \n\nA2 Reece Cox - Emotion 1 (Ibon's Dizzy Stomp Mix) (8:44) \nRemix by DJ Ibon.\n\nB1 Reece Cox - Emotion 1 (Parris Remix) (5:40) \nRemix by Dwayne Parris-Robinson, mixed by Call Super. \n\nB2 Reece Cox - Emotion 1 (Call Super Remix) (6.40) \nRemix by Call Super. \n\nB3 Reece Cox - Emotion 1 (Upsammy Remix) (4:26) \nRemix by Thessa Torsing.", "country": "DE", @@ -213,17 +283,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "Emotion 1", "arranger": null, "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -248,11 +328,20 @@ "work_disambig": null }, { + "album": "Emotion 1", "arranger": null, "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -277,11 +366,20 @@ "work_disambig": null }, { + "album": "Emotion 1", "arranger": null, "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -306,11 +404,20 @@ "work_disambig": null }, { + "album": "Emotion 1", "arranger": null, "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -335,11 +442,20 @@ "work_disambig": null }, { + "album": "Emotion 1", "arranger": null, "artist": "Reece Cox", "artist_credit": null, "artist_id": "https://reececox.bandcamp.com", "artist_sort": null, + "artists": [ + "Reece Cox" + ], + "artists_credit": [], + "artists_ids": [ + "https://reececox.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, diff --git a/tests/json/expected/track_alt_edge_case.json b/tests/json/expected/track_alt_edge_case.json index 5d5e62c..23f4e12 100644 --- a/tests/json/expected/track_alt_edge_case.json +++ b/tests/json/expected/track_alt_edge_case.json @@ -5,12 +5,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album", + "albumtypes": [ + "album" + ], "artist": "Barker", "artist_credit": null, "artist_id": "https://sambarker.bandcamp.com", "artist_sort": null, + "artists": [ + "Barker" + ], + "artists_credit": [], + "artists_ids": [ + "https://sambarker.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "BARKER002", "comments": "Follow-up to 2019’s BARKER001.\n\nAvailable now for digital download and hand-stamped 12\" vinyl in all shops.\n---\nWritten and produced by Sam Barker\nPublished by Ostgut Verlag\nMastering Stefan Betke at Scape Mastering, Berlin", "country": "DE", @@ -29,17 +40,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "BARKER002", "arranger": null, "artist": "Barker", "artist_credit": null, "artist_id": "https://sambarker.bandcamp.com", "artist_sort": null, + "artists": [ + "Barker" + ], + "artists_credit": [], + "artists_ids": [ + "https://sambarker.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -64,11 +85,20 @@ "work_disambig": null }, { + "album": "BARKER002", "arranger": null, "artist": "Barker", "artist_credit": null, "artist_id": "https://sambarker.bandcamp.com", "artist_sort": null, + "artists": [ + "Barker" + ], + "artists_credit": [], + "artists_ids": [ + "https://sambarker.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -93,11 +123,20 @@ "work_disambig": null }, { + "album": "BARKER002", "arranger": null, "artist": "Barker", "artist_credit": null, "artist_id": "https://sambarker.bandcamp.com", "artist_sort": null, + "artists": [ + "Barker" + ], + "artists_credit": [], + "artists_ids": [ + "https://sambarker.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -131,12 +170,23 @@ "albumdisambig": null, "albumstatus": "Official", "albumtype": "album", - "albumtypes": "album", + "albumtypes": [ + "album" + ], "artist": "Barker", "artist_credit": null, "artist_id": "https://sambarker.bandcamp.com", "artist_sort": null, + "artists": [ + "Barker" + ], + "artists_credit": [], + "artists_ids": [ + "https://sambarker.bandcamp.com" + ], + "artists_sort": [], "asin": null, + "barcode": null, "catalognum": "BARKER002", "comments": "Follow-up to 2019’s BARKER001.\n\nAvailable now for digital download and hand-stamped 12\" vinyl in all shops.\n---\nHand-stamped vinyl.\n\nTracklisting:\nA1. E7-E5\nA2. Bent\nB. Polytely\n---\nWritten and produced by Sam Barker\nPublished by Ostgut Verlag\nMastering Stefan Betke at Scape Mastering, Berlin", "country": "DE", @@ -155,17 +205,27 @@ "original_day": null, "original_month": null, "original_year": null, + "release_group_title": null, "releasegroup_id": null, "releasegroupdisambig": null, "script": null, "style": "electronic", "tracks": [ { + "album": "BARKER002", "arranger": null, "artist": "Barker", "artist_credit": null, "artist_id": "https://sambarker.bandcamp.com", "artist_sort": null, + "artists": [ + "Barker" + ], + "artists_credit": [], + "artists_ids": [ + "https://sambarker.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -190,11 +250,20 @@ "work_disambig": null }, { + "album": "BARKER002", "arranger": null, "artist": "Barker", "artist_credit": null, "artist_id": "https://sambarker.bandcamp.com", "artist_sort": null, + "artists": [ + "Barker" + ], + "artists_credit": [], + "artists_ids": [ + "https://sambarker.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null, @@ -219,11 +288,20 @@ "work_disambig": null }, { + "album": "BARKER002", "arranger": null, "artist": "Barker", "artist_credit": null, "artist_id": "https://sambarker.bandcamp.com", "artist_sort": null, + "artists": [ + "Barker" + ], + "artists_credit": [], + "artists_ids": [ + "https://sambarker.bandcamp.com" + ], + "artists_sort": [], "bpm": null, "composer": null, "composer_sort": null,