From 789ce04b8783b4d96b46d7f8e0fabd7224d9c0e7 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sat, 11 Apr 2026 21:28:16 +0100 Subject: [PATCH] Use MusicBrainz.get_all_releases in Records --- lib/music_library/records.ex | 32 +++++--------------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/lib/music_library/records.ex b/lib/music_library/records.ex index d62b4f79..c4fd26d3 100644 --- a/lib/music_library/records.ex +++ b/lib/music_library/records.ex @@ -242,7 +242,8 @@ defmodule MusicLibrary.Records do selected_release_id = Keyword.get(opts, :selected_release_id, nil) with {:ok, release_group} <- MusicBrainz.get_release_group(musicbrainz_id), - {:ok, release_group_with_releases} <- merge_releases(musicbrainz_id, release_group), + {:ok, releases} <- MusicBrainz.get_all_releases(musicbrainz_id), + release_group_with_releases = Map.put(release_group, "releases", releases), {:ok, cover_data} <- get_cover_art_or_default(musicbrainz_id), {:ok, asset} <- Assets.store_image(%{content: cover_data, format: "image/jpeg"}) do release_group_with_releases @@ -360,7 +361,9 @@ defmodule MusicLibrary.Records do @spec refresh_musicbrainz_data(Record.t()) :: {:ok, Record.t()} | {:error, term()} def refresh_musicbrainz_data(record) do with {:ok, data} <- MusicBrainz.get_release_group(record.musicbrainz_id), - {:ok, data_with_releases} <- merge_releases(record.musicbrainz_id, data) do + {:ok, releases} <- MusicBrainz.get_all_releases(record.musicbrainz_id) do + data_with_releases = Map.put(data, "releases", releases) + record |> Record.add_musicbrainz_data(data_with_releases) |> Repo.update() @@ -373,31 +376,6 @@ defmodule MusicLibrary.Records do enqueue_worker(Worker.RecordRefreshMusicBrainzData, %{"id" => record.id}, record_meta(record)) end - defp merge_releases(musicbrainz_id, musicbrainz_data) do - with {:ok, releases} <- stream_releases(musicbrainz_id) do - {:ok, Map.put(musicbrainz_data, "releases", releases)} - end - end - - defp stream_releases(musicbrainz_id) do - do_stream_releases(musicbrainz_id, [], 0) - end - - defp do_stream_releases(musicbrainz_id, releases, offset) do - limit = 100 - opts = [limit: limit, offset: offset] - - with {:ok, data} <- MusicBrainz.get_releases(musicbrainz_id, opts) do - %{"releases" => new_releases} = data - - if Enum.count(new_releases) < limit do - {:ok, releases ++ new_releases} - else - do_stream_releases(musicbrainz_id, releases ++ new_releases, offset + 100) - end - end - end - defp build_record_attrs(release_group, attrs) do release_group |> Record.attrs_from_release_group()