Store MusicBrainz release group data on records

This commit is contained in:
Claudio Ortolina
2024-10-07 08:36:56 +01:00
parent 2c3babdf13
commit 11a8149bcc
4 changed files with 36 additions and 0 deletions
+1
View File
@@ -111,6 +111,7 @@ defmodule MusicLibrary.Records do
%{
"musicbrainz_id" => musicbrainz_id,
"musicbrainz_data" => release_group,
"title" => release_group["title"],
"artists" => artists_attrs,
"release" => release_group["first-release-date"],
+19
View File
@@ -105,6 +105,25 @@ defmodule MusicLibrary.Records.Importer do
end)
end
def import_missing_musicbrainz_data do
q = from(r in Rec, where: is_nil(r.musicbrainz_data))
q
|> Repo.all()
|> Enum.each(fn r ->
import_musicbrainz_data(r)
Process.sleep(1000)
end)
end
def import_musicbrainz_data(record) do
with {:ok, data} <- musicbrainz().get_release_group(record.musicbrainz_id) do
record
|> Rec.add_musicbrainz_data(data)
|> Repo.update!()
end
end
def generate_cover_hash(record) do
record
|> Rec.generate_cover_hash()
+7
View File
@@ -15,6 +15,7 @@ defmodule MusicLibrary.Records.Record do
field :cover_data, :binary
field :cover_hash, :string
field :musicbrainz_id, Ecto.UUID
field :musicbrainz_data, :map
field :genres, {:array, :string}
field :release, :string
@@ -36,6 +37,7 @@ defmodule MusicLibrary.Records.Record do
:format,
:title,
:musicbrainz_id,
:musicbrainz_data,
:release,
:genres,
:cover_url,
@@ -65,6 +67,11 @@ defmodule MusicLibrary.Records.Record do
|> generate_cover_hash()
end
def add_musicbrainz_data(record, musicbrainz_data) do
record
|> change(musicbrainz_data: musicbrainz_data)
end
def generate_cover_hash(record = %__MODULE__{cover_data: cover_data}) do
hash = :crypto.hash(:sha256, cover_data) |> Base.encode16()
@@ -0,0 +1,9 @@
defmodule MusicLibrary.Repo.Migrations.AddMusicbrainzDataToRecords do
use Ecto.Migration
def change do
alter table(:records) do
add :musicbrainz_data, :map
end
end
end