From fa0be0d7404a1beb20d2c880a468a4e7b1849657 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Mon, 7 Oct 2024 10:19:24 +0100 Subject: [PATCH] Use fallback cover when not found --- .../records/music_brainz/api_impl.ex | 10 ++++++++++ priv/cover-not-found.jpg | Bin 0 -> 4313 bytes 2 files changed, 10 insertions(+) create mode 100644 priv/cover-not-found.jpg diff --git a/lib/music_library/records/music_brainz/api_impl.ex b/lib/music_library/records/music_brainz/api_impl.ex index 504cc476..503b02b0 100644 --- a/lib/music_library/records/music_brainz/api_impl.ex +++ b/lib/music_library/records/music_brainz/api_impl.ex @@ -217,6 +217,10 @@ defmodule MusicLibrary.Records.MusicBrainz.APIImpl do end end + @fallback_cover File.read!( + (:code.priv_dir(:music_library) |> to_string()) <> "/cover-not-found.jpg" + ) + @doc """ Uses the [cover art](https://musicbrainz.org/doc/Cover_Art_Archive/API) endpoint with the release group id to get the cover image. """ @@ -227,6 +231,9 @@ defmodule MusicLibrary.Records.MusicBrainz.APIImpl do with {:ok, cover_data} <- blob_get(url), {:ok, thumb} = Vix.Vips.Operation.thumbnail_buffer(cover_data, 400) do Vix.Vips.Image.write_to_buffer(thumb, ".jpg") + else + {:error, :not_found} -> {:ok, @fallback_cover} + error -> error end end @@ -266,6 +273,9 @@ defmodule MusicLibrary.Records.MusicBrainz.APIImpl do Logger.debug("Following redirect to #{location}") blob_get(location) + {:ok, response} when response.status == 404 -> + {:error, :not_found} + other -> msg = "Failed to fetch data from #{url}, reason: #{inspect(other)}" Logger.error(msg) diff --git a/priv/cover-not-found.jpg b/priv/cover-not-found.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c60603e93d76cf9115d5d58758f12499e0a6f939 GIT binary patch literal 4313 zcmeHJdpJ~S82`?kxwvJ_kV{&VOQ_@)NwlSPUFEh#C_V19%DQEgn%pn7Ws;HYF@}&@ zL<~u}Q!I-qmqyY|t0JCex}YXz$0hB5+j^e$m)|+xIq&(N_q@ON_kPcJ;rH`dpv{cv z?*qWzyb_U(6cI^gW$>E-R?>*s$YBsA=JI5FZxOl(|yLSj<##nek_l=RCPzvW!b z&C9=5aQ()uvT}Mwgnz4f6QdDpZ_)d;^nK6QSRG!?>|gT zPJR3&7^itTg6F)Vf9Syp^dOK(7>SwH10li%4aOl+iaKb#i9N#Pe{OcpfbiPtP*(^ez)m-!k#6%%7#KQ852M%%7VbJllb@P1}p?sSYqdl7^8(pJjRiHEKkN0* z$UYfm#>a_QADIY#I%2yvoNT6r9o8#tOLh*f>bJxU*Vhv=sJhefr?;E1`9SgzQLW|E zpLw47uN1^jAy%1%x>_6Y-iVDl^>y{{(FpDLju!Rd8JTl6EVf8=Y*eG9qZD$!PfMMM zp33AHH7O`^_+VUL^VjPGBQ>~MZd!3R&85R*O`nB&W!DaRb93vUOeS>RULB87_Bi^| zy5X=CANX~OL|Sm15^8qT(@w>(C8{dR6RhHinxRGJqQ3WBovF?*T>^LTd}p)4L%{1+6LhpWy_;H z+Nqx2t)_LICahIP&nKIQ)_yjsnW|<98?PrcwyO4M75m(!S6^`G@hZu(vG<*b@JbyU z(7Z;bvbU*pQjjF#?_JoEFp|tv_^#gfwc@W02)=iEsg?mT$^n!EsqH!mE%mB(?FE)T z`#fl|0SdBQQbMF}U|0m}$_0A8Z`pc3j3>hrkg{4Dap07 zlF!n}kdPk8yP6jpMqO&cwb}X~)7XdO2nq>}Ly1|p95Yz{n&nu+5$3?a6wS?LI=R!D zYy9@$kT5O6@y)mdy`!OlY@%{3@|M>w*T9jYJw;uJWc31BdowBUFAd_a>}X3{F;{l9 UrPXcaM7XrNt(*v#R=3B00~j7I-~a#s literal 0 HcmV?d00001