Files
music_library/lib/music_brainz/release_group.ex
T
2024-12-11 23:54:21 +03:00

28 lines
742 B
Elixir

defmodule MusicBrainz.ReleaseGroup do
defstruct [:id, :type, :title, :artists, :release]
def from_api_response(rg) do
%__MODULE__{
id: rg["id"],
type: parse_subtype(rg["primary-type"]),
title: rg["title"],
artists:
rg["artist-credit"]
|> Enum.map(fn ac -> ac["artist"]["name"] end)
|> Enum.join(", "),
release: rg["first-release-date"]
}
end
def url(id) do
"https://musicbrainz.org/release-group/#{id}"
end
defp parse_subtype("Album"), do: :album
defp parse_subtype("EP"), do: :ep
defp parse_subtype("Live"), do: :live
defp parse_subtype("Compilation"), do: :compilation
defp parse_subtype("Single"), do: :single
defp parse_subtype(_), do: :other
end