diff --git a/lib/music_library/records/cover.ex b/lib/music_library/assets/image.ex similarity index 92% rename from lib/music_library/records/cover.ex rename to lib/music_library/assets/image.ex index 6d2bd2bf..7041de57 100644 --- a/lib/music_library/records/cover.ex +++ b/lib/music_library/assets/image.ex @@ -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 diff --git a/lib/music_library/records.ex b/lib/music_library/records.ex index 065b9b8c..102160bc 100644 --- a/lib/music_library/records.ex +++ b/lib/music_library/records.ex @@ -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) diff --git a/lib/music_library_web/controllers/asset_controller.ex b/lib/music_library_web/controllers/asset_controller.ex index 1c18274f..c21469dc 100644 --- a/lib/music_library_web/controllers/asset_controller.ex +++ b/lib/music_library_web/controllers/asset_controller.ex @@ -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 diff --git a/priv/cover-not-found.jpg b/priv/cover-not-found.jpg deleted file mode 100644 index f01650d2..00000000 Binary files a/priv/cover-not-found.jpg and /dev/null differ diff --git a/priv/image-not-found.jpg b/priv/image-not-found.jpg new file mode 100644 index 00000000..7d51c97e Binary files /dev/null and b/priv/image-not-found.jpg differ diff --git a/test/music_library/records/cover_test.exs b/test/music_library/assets/image_test.exs similarity index 53% rename from test/music_library/records/cover_test.exs rename to test/music_library/assets/image_test.exs index e7384310..53ec303d 100644 --- a/test/music_library/records/cover_test.exs +++ b/test/music_library/assets/image_test.exs @@ -1,15 +1,13 @@ -defmodule MusicLibrary.Records.CoverTest do +defmodule MusicLibrary.Assets.ImageTest do use ExUnit.Case, async: true - import MusicLibrary.Fixtures.Records - - alias MusicLibrary.Records.Cover + alias MusicLibrary.Assets.Image describe "resize/1" do test "it resizes to the desired size" do # Use the cached cover data which is much faster than reading from disk - cover_data = marbles_cover_data() - {:ok, resized_cover} = Cover.resize(cover_data) + cover_data = Image.fallback_data() + {:ok, resized_cover} = Image.resize(cover_data) assert cover_data !== resized_cover end end diff --git a/test/music_library/records_test.exs b/test/music_library/records_test.exs index b3f60c0c..3015d467 100644 --- a/test/music_library/records_test.exs +++ b/test/music_library/records_test.exs @@ -7,7 +7,7 @@ defmodule MusicLibrary.RecordsTest do alias MusicLibrary.Assets alias MusicLibrary.Records - alias MusicLibrary.Records.{Cover, SearchIndex} + alias MusicLibrary.Records.SearchIndex defp create_records(_) do records = [ @@ -336,7 +336,7 @@ defmodule MusicLibrary.RecordsTest do assert updated_record.cover_hash == "6E0D25D1FD1019D771D7EB3F777E2C7C1B06A73A92E56A584D674D86DD8AF441" - {:ok, expected_content} = Cover.resize(raven_cover_data()) + {:ok, expected_content} = Assets.Image.resize(raven_cover_data()) assert Assets.get(updated_record.cover_hash).content == expected_content end diff --git a/test/music_library_web/live/collection_live/index_test.exs b/test/music_library_web/live/collection_live/index_test.exs index 78fe8af0..3aa3e4e9 100644 --- a/test/music_library_web/live/collection_live/index_test.exs +++ b/test/music_library_web/live/collection_live/index_test.exs @@ -8,8 +8,8 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do alias MusicBrainz.ReleaseGroupSearchResult alias MusicLibrary.Assets - alias MusicLibrary.Assets.Transform - alias MusicLibrary.Records.{Cover, Record} + alias MusicLibrary.Assets.{Image, Transform} + alias MusicLibrary.Records.Record # make it a multiple of 4 for easier calculations @default_records_page_size 8 @@ -317,7 +317,7 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do assert record.cover_hash == "E7238C742E5B8711FC5BFF01A4A1F727D9E404A4D1420429A6B37ABFFC0B5960" - {:ok, resized_cover_data} = Cover.resize(cover_data) + {:ok, resized_cover_data} = Image.resize(cover_data) assets = Assets.get(record.cover_hash) @@ -425,7 +425,7 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do "E7238C742E5B8711FC5BFF01A4A1F727D9E404A4D1420429A6B37ABFFC0B5960" asset = Assets.get(record.cover_hash) - {:ok, resized_cover_data} = Cover.resize(cover_data) + {:ok, resized_cover_data} = Image.resize(cover_data) assert asset.content == resized_cover_data