Harden release label display
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
defmodule MusicBrainz.Release do
|
||||
@enforce_keys [:id, :title, :artists, :date, :barcode, :media]
|
||||
defstruct [:id, :title, :artists, :date, :barcode, :media]
|
||||
@enforce_keys [:id, :title, :disambiguation, :artists, :date, :barcode, :country, :media]
|
||||
defstruct [:id, :title, :disambiguation, :artists, :date, :barcode, :country, :media]
|
||||
|
||||
defmodule Artist do
|
||||
@enforce_keys [:id, :name, :sort_name]
|
||||
@@ -37,9 +37,11 @@ defmodule MusicBrainz.Release do
|
||||
%__MODULE__{
|
||||
id: r["id"],
|
||||
title: r["title"],
|
||||
disambiguation: r["disambiguation"],
|
||||
artists: parse_artists(r["artist-credit"] || []),
|
||||
date: r["date"],
|
||||
barcode: r["barcode"],
|
||||
country: r["country"],
|
||||
media: parse_media(r["media"] || [])
|
||||
}
|
||||
end
|
||||
@@ -51,7 +53,7 @@ defmodule MusicBrainz.Release do
|
||||
format: m["format"],
|
||||
number: m["position"],
|
||||
track_count: m["track-count"],
|
||||
tracks: parse_tracks(m["tracks"])
|
||||
tracks: parse_tracks(m["tracks"] || [])
|
||||
}
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -46,16 +46,18 @@ defmodule MusicBrainz.ReleaseSearchResult do
|
||||
end)
|
||||
end
|
||||
|
||||
defp parse_format(nil), do: :unknown
|
||||
defp parse_format("CD"), do: :cd
|
||||
defp parse_format("DVD-Audio"), do: :dvd
|
||||
defp parse_format("DVD-Video"), do: :dvd
|
||||
defp parse_format("Blu-ray"), do: :blu_ray
|
||||
defp parse_format("Digital Media"), do: :digital_download
|
||||
|
||||
defp parse_format(maybe_vinyl) do
|
||||
if String.contains?(maybe_vinyl, "Vinyl") do
|
||||
:vinyl
|
||||
else
|
||||
:unknown
|
||||
defp parse_format(format) do
|
||||
cond do
|
||||
String.contains?(format, "Vinyl") -> :vinyl
|
||||
String.contains?(format, "CD") -> :cd
|
||||
true -> :unknown
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,7 +2,7 @@ defmodule MusicLibrary.Records.Record do
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
|
||||
alias MusicBrainz.ReleaseGroup
|
||||
alias MusicBrainz.{Release, ReleaseGroup}
|
||||
alias MusicLibrary.Records.{Artist, Cover}
|
||||
|
||||
@formats [:cd, :backup, :vinyl, :blu_ray, :dvd, :multi]
|
||||
@@ -74,13 +74,14 @@ defmodule MusicLibrary.Records.Record do
|
||||
def releases(record) do
|
||||
record.musicbrainz_data
|
||||
|> ReleaseGroup.releases()
|
||||
|> Enum.sort_by(fn r -> {r["date"], r["country"]} end, :desc)
|
||||
|> Enum.map(&Release.from_api_response/1)
|
||||
|> Enum.sort_by(fn r -> {r.date, r.country} end, :desc)
|
||||
end
|
||||
|
||||
def selected_release(record) do
|
||||
record
|
||||
|> releases()
|
||||
|> Enum.find(fn release -> release["id"] == record.selected_release_id end)
|
||||
|> Enum.find(fn release -> release.id == record.selected_release_id end)
|
||||
end
|
||||
|
||||
def changeset(record, attrs) do
|
||||
|
||||
@@ -192,7 +192,7 @@ defmodule MusicLibraryWeb.FormComponent do
|
||||
|> Enum.map(fn release ->
|
||||
{
|
||||
release_label(release),
|
||||
release["id"]
|
||||
release.id
|
||||
}
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
defmodule MusicLibraryWeb.RecordComponents do
|
||||
use MusicLibraryWeb, :html
|
||||
|
||||
alias MusicBrainz.ReleaseSearchResult
|
||||
alias MusicLibrary.Records
|
||||
alias Phoenix.LiveView.JS
|
||||
|
||||
@@ -303,10 +304,10 @@ defmodule MusicLibraryWeb.RecordComponents do
|
||||
|
||||
def release_label(release) do
|
||||
[
|
||||
release["date"],
|
||||
release["country"] |> country_label(),
|
||||
release["packaging"] |> packaging_label(),
|
||||
release["disambiguation"]
|
||||
release.date,
|
||||
release.country |> country_label(),
|
||||
ReleaseSearchResult.format(release),
|
||||
release.disambiguation
|
||||
]
|
||||
|> Enum.reject(fn fragment -> fragment in [nil, ""] end)
|
||||
|> Enum.join(" ")
|
||||
@@ -324,9 +325,6 @@ defmodule MusicLibraryWeb.RecordComponents do
|
||||
end
|
||||
end
|
||||
|
||||
defp packaging_label("None"), do: gettext("Digital download")
|
||||
defp packaging_label(other), do: other
|
||||
|
||||
def format_duration(milliseconds) do
|
||||
milliseconds
|
||||
|> System.convert_time_unit(:millisecond, :second)
|
||||
|
||||
@@ -743,11 +743,6 @@ msgstr ""
|
||||
msgid "Selected Release"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Digital download"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/release_component.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Error loading tracks"
|
||||
|
||||
@@ -743,11 +743,6 @@ msgstr ""
|
||||
msgid "Selected Release"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/record_components.ex
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Digital download"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/components/release_component.ex
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "Error loading tracks"
|
||||
|
||||
Reference in New Issue
Block a user