Use release instead of year
This commit is contained in:
@@ -4,7 +4,7 @@ defmodule MusicLibrary.Records do
|
||||
|
||||
alias MusicLibrary.Records.{MusicBrainz, Record}
|
||||
|
||||
@fields [:id, :type, :format, :title, :year, :genres, :musicbrainz_id, :image_data_hash]
|
||||
@fields [:id, :type, :format, :title, :release, :genres, :musicbrainz_id, :image_data_hash]
|
||||
|
||||
def list_records(opts \\ []) do
|
||||
limit = Keyword.get(opts, :limit, 20)
|
||||
@@ -104,7 +104,7 @@ defmodule MusicLibrary.Records do
|
||||
"musicbrainz_id" => musicbrainz_id,
|
||||
"title" => release_group["title"],
|
||||
"artists" => artists_attrs,
|
||||
"year" => parse_year(release_group["first-release-date"]),
|
||||
"release" => release_group["first-release-date"],
|
||||
"type" => parse_subtype(release_group["primary-type"]),
|
||||
"format" => format,
|
||||
"genres" => Enum.map(release_group["genres"], fn g -> g["name"] end),
|
||||
@@ -113,17 +113,6 @@ defmodule MusicLibrary.Records do
|
||||
}
|
||||
end
|
||||
|
||||
defp parse_year(iso_date) when is_binary(iso_date) do
|
||||
case Date.from_iso8601(iso_date) do
|
||||
{:ok, date} ->
|
||||
date.year
|
||||
|
||||
_error ->
|
||||
{year, _rest} = Integer.parse(iso_date)
|
||||
{:ok, year}
|
||||
end
|
||||
end
|
||||
|
||||
defp parse_subtype("Album"), do: :album
|
||||
defp parse_subtype("EP"), do: :ep
|
||||
defp parse_subtype("Live"), do: :live
|
||||
|
||||
@@ -173,7 +173,7 @@ defmodule MusicLibrary.Records.MusicBrainz do
|
||||
rg["artist-credit"]
|
||||
|> Enum.map(fn ac -> ac["artist"]["name"] end)
|
||||
|> Enum.join(", "),
|
||||
year: parse_year(rg["first-release-date"])
|
||||
release: rg["first-release-date"]
|
||||
}
|
||||
end)}
|
||||
end
|
||||
@@ -231,15 +231,6 @@ defmodule MusicLibrary.Records.MusicBrainz do
|
||||
end
|
||||
end
|
||||
|
||||
defp parse_year(nil), do: ""
|
||||
|
||||
defp parse_year(iso_date) do
|
||||
case Date.from_iso8601(iso_date) do
|
||||
{:ok, date} -> date.year
|
||||
_error -> nil
|
||||
end
|
||||
end
|
||||
|
||||
defp parse_subtype("Album"), do: :album
|
||||
defp parse_subtype("EP"), do: :ep
|
||||
defp parse_subtype("Live"), do: :live
|
||||
|
||||
@@ -16,6 +16,7 @@ defmodule MusicLibrary.Records.Record do
|
||||
field :year, :integer
|
||||
field :musicbrainz_id, Ecto.UUID
|
||||
field :genres, {:array, :string}
|
||||
field :release, :string
|
||||
|
||||
embeds_many :artists, Artist do
|
||||
field :name, :string
|
||||
@@ -35,14 +36,14 @@ defmodule MusicLibrary.Records.Record do
|
||||
:format,
|
||||
:title,
|
||||
:musicbrainz_id,
|
||||
:year,
|
||||
:release,
|
||||
:genres,
|
||||
:image_url,
|
||||
:image_data
|
||||
])
|
||||
|> cast_embed(:artists, with: &artist_changeset/2)
|
||||
|> generate_image_data_hash()
|
||||
|> validate_required([:type, :title, :musicbrainz_id, :year, :genres])
|
||||
|> validate_required([:type, :title, :musicbrainz_id, :release, :genres])
|
||||
end
|
||||
|
||||
@doc false
|
||||
|
||||
Reference in New Issue
Block a user