Refactor Records.Cover to Assets.Image

This commit is contained in:
Claudio Ortolina
2025-09-20 07:42:38 +03:00
parent c5d856fdd8
commit 90b3fa1fdc
8 changed files with 20 additions and 23 deletions
@@ -1,7 +1,7 @@
defmodule MusicLibrary.Records.Cover do
defmodule MusicLibrary.Assets.Image do
alias Vix.Vips.{Image, Operation}
fallback_path = Application.app_dir(:music_library, ["priv", "cover-not-found.jpg"])
fallback_path = Application.app_dir(:music_library, ["priv", "image-not-found.jpg"])
fallback_data = File.read!(fallback_path)
@external_resource fallback_path
+5 -5
View File
@@ -7,7 +7,7 @@ defmodule MusicLibrary.Records do
alias MusicLibrary.Artists
alias MusicLibrary.Assets
alias MusicLibrary.Records.{ArtistRecord, Cover, Record, SearchParser}
alias MusicLibrary.Records.{ArtistRecord, Record, SearchParser}
alias MusicLibrary.{BackgroundRepo, Repo, Worker}
def essential_fields do
@@ -228,8 +228,8 @@ 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, Cover.fallback_data()}
{:ok, cover_data} -> Cover.resize(cover_data)
{:error, :cover_not_available} -> {:ok, Assets.Image.fallback_data()}
{:ok, cover_data} -> Assets.Image.resize(cover_data)
end
end
@@ -259,7 +259,7 @@ defmodule MusicLibrary.Records do
def refresh_cover(record) do
with {:ok, cover_data} <- MusicBrainz.get_cover_art({:url, record.cover_url}),
{:ok, thumb_data} <- Cover.resize(cover_data),
{:ok, thumb_data} <- Assets.Image.resize(cover_data),
{:ok, asset} <- Assets.store_image(%{content: thumb_data, format: "image/jpeg"}) do
record
|> Record.set_cover_hash(asset.hash)
@@ -286,7 +286,7 @@ defmodule MusicLibrary.Records do
end
def resize_cover(record) do
with {:ok, thumb_data} <- Cover.resize(record.cover_data),
with {:ok, thumb_data} <- Assets.Image.resize(record.cover_data),
{:ok, asset} <- Assets.store_image(%{content: thumb_data, format: "image/jpeg"}) do
record
|> Record.set_cover_hash(asset.hash)
@@ -2,8 +2,7 @@ defmodule MusicLibraryWeb.AssetController do
use MusicLibraryWeb, :controller
alias MusicLibrary.Assets
alias MusicLibrary.Assets.{Cache, Transform}
alias MusicLibrary.Records.Cover
alias MusicLibrary.Assets.{Cache, Image, Transform}
# 1 year in seconds
@cache_duration 60 * 60 * 24 * 365
@@ -31,10 +30,10 @@ defmodule MusicLibraryWeb.AssetController do
image_data =
if transform.width do
# TODO: find a way to cache computation, or pre-compute thumb and store it
{:ok, data} = Cover.resize(asset.content, transform.width, format)
{:ok, data} = Image.resize(asset.content, transform.width, format)
data
else
{:ok, data} = Cover.convert(asset.content, asset.format, format)
{:ok, data} = Image.convert(asset.content, asset.format, format)
data
end