Use MusicBrainz.get_all_releases in Records

This commit is contained in:
Claudio Ortolina
2026-04-11 21:28:16 +01:00
parent b7af9557c1
commit 789ce04b87
+5 -27
View File
@@ -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()