Consolidate cover resize logic
Moves resizing out of the MusicBrainz namespace to Records - which improves division of responsibilities, and removes double resizing during import.
This commit is contained in:
@@ -418,14 +418,14 @@ defmodule MusicBrainz.APIImpl do
|
||||
end
|
||||
|
||||
def get_cover_art({:url, url}) do
|
||||
with {:ok, cover_data} <- blob_get(url),
|
||||
{:ok, thumb} = Vix.Vips.Operation.thumbnail_buffer(cover_data, 600) do
|
||||
Vix.Vips.Image.write_to_buffer(thumb, ".jpg")
|
||||
else
|
||||
case blob_get(url) do
|
||||
{:error, reason} ->
|
||||
Logger.error("Failed to fetch cover art for #{url}, reason: #{inspect(reason)}")
|
||||
|
||||
{:error, :cover_not_available}
|
||||
|
||||
success ->
|
||||
success
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ defmodule MusicLibrary.Records do
|
||||
import Ecto.Query, warn: false
|
||||
alias MusicLibrary.Repo
|
||||
|
||||
alias MusicLibrary.Records.{Record, SearchParser}
|
||||
alias MusicLibrary.Records.{Cover, Record, SearchParser}
|
||||
|
||||
def essential_fields do
|
||||
[
|
||||
@@ -131,14 +131,13 @@ defmodule MusicLibrary.Records do
|
||||
defp get_cover_art_or_default(musicbrainz_id) do
|
||||
case musicbrainz().get_cover_art({:musicbrainz_id, musicbrainz_id}) do
|
||||
{:error, :cover_not_available} -> {:ok, Record.fallback_cover_data()}
|
||||
success -> success
|
||||
{:ok, cover_data} -> Cover.resize(cover_data)
|
||||
end
|
||||
end
|
||||
|
||||
def refresh_cover(record) do
|
||||
with {:ok, cover_data} <- musicbrainz().get_cover_art({:url, record.cover_url}) do
|
||||
{:ok, thumb} = Vix.Vips.Operation.thumbnail_buffer(cover_data, 600)
|
||||
{:ok, thumb_data} = Vix.Vips.Image.write_to_buffer(thumb, ".jpg")
|
||||
{:ok, thumb_data} = Cover.resize(cover_data)
|
||||
|
||||
record
|
||||
|> Record.add_cover_data(thumb_data)
|
||||
@@ -147,8 +146,7 @@ defmodule MusicLibrary.Records do
|
||||
end
|
||||
|
||||
def resize_cover(record) do
|
||||
{:ok, thumb} = Vix.Vips.Operation.thumbnail_buffer(record.cover_data, 600)
|
||||
{:ok, thumb_data} = Vix.Vips.Image.write_to_buffer(thumb, ".jpg")
|
||||
{:ok, thumb_data} = Cover.resize(record.cover_data)
|
||||
|
||||
record
|
||||
|> Record.add_cover_data(thumb_data)
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
defmodule MusicLibrary.Records.Cover do
|
||||
def resize(cover_data) do
|
||||
{:ok, thumb} = Vix.Vips.Operation.thumbnail_buffer(cover_data, 600)
|
||||
Vix.Vips.Image.write_to_buffer(thumb, ".jpg")
|
||||
end
|
||||
end
|
||||
@@ -2,6 +2,7 @@ defmodule MusicLibraryWeb.RecordLive.FormComponent do
|
||||
use MusicLibraryWeb, :live_component
|
||||
|
||||
alias MusicLibrary.Records
|
||||
alias MusicLibrary.Records.Cover
|
||||
|
||||
@impl true
|
||||
def mount(socket) do
|
||||
@@ -109,8 +110,7 @@ defmodule MusicLibraryWeb.RecordLive.FormComponent do
|
||||
record_params
|
||||
|
||||
[cover_data] ->
|
||||
{:ok, thumb} = Vix.Vips.Operation.thumbnail_buffer(cover_data, 600)
|
||||
{:ok, thumb_data} = Vix.Vips.Image.write_to_buffer(thumb, ".jpg")
|
||||
{:ok, thumb_data} = Cover.resize(cover_data)
|
||||
Map.put(record_params, "cover_data", thumb_data)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user