diff --git a/lib/music_brainz/release_search_result.ex b/lib/music_brainz/release_search_result.ex index 70b36bcb..9970a573 100644 --- a/lib/music_brainz/release_search_result.ex +++ b/lib/music_brainz/release_search_result.ex @@ -19,6 +19,18 @@ defmodule MusicBrainz.ReleaseSearchResult do } end + def format(release_search_result) do + sorted_frequencies = + release_search_result.media + |> Enum.frequencies_by(& &1.format) + |> Enum.sort_by(fn {_, count} -> count end) + + case sorted_frequencies do + [{format, _}] -> parse_format(format) + _ -> :multi + end + end + defp parse_release_group(rg) do %{ id: rg["id"], @@ -36,4 +48,17 @@ defmodule MusicBrainz.ReleaseSearchResult do } end) end + + 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(maybe_vinyl) do + if String.contains?(maybe_vinyl, "Vinyl") do + :vinyl + else + :unknown + end + end end diff --git a/lib/music_library_web/live/record_live/barcode_scanner_component.ex b/lib/music_library_web/live/record_live/barcode_scanner_component.ex index 23c7e90b..e6268b71 100644 --- a/lib/music_library_web/live/record_live/barcode_scanner_component.ex +++ b/lib/music_library_web/live/record_live/barcode_scanner_component.ex @@ -1,6 +1,7 @@ defmodule MusicLibraryWeb.RecordLive.BarcodeScannerComponent do use MusicLibraryWeb, :live_component + alias MusicLibraryWeb.RecordComponents alias MusicLibrary.Records require Logger @@ -10,9 +11,8 @@ defmodule MusicLibraryWeb.RecordLive.BarcodeScannerComponent do {:ok, socket |> assign(:camera, :pending) - |> assign(:barcodes, MapSet.new()) - |> assign(:releases, [ - %MusicBrainz.ReleaseSearchResult{ + |> assign(:releases, %{ + "639842709422" => %MusicBrainz.ReleaseSearchResult{ id: "dc393148-be34-4056-be66-b2b95905c5c1", title: "Equally Cursed and Blessed", release_group: %{ @@ -25,7 +25,7 @@ defmodule MusicLibraryWeb.RecordLive.BarcodeScannerComponent do barcode: "639842709422", media: [%{format: "CD", disc_count: 5, track_count: 11}] } - ])} + })} end @impl true @@ -67,13 +67,13 @@ defmodule MusicLibraryWeb.RecordLive.BarcodeScannerComponent do -
- {Records.Record.format_release(@release.date)} · {@release.barcode} + {release_format_label(@release)} · {Records.Record.format_release(@release.date)} · {RecordComponents.type_label( + @release.release_group.type + )}