Add Discogs function to fetch artist image

This commit is contained in:
Claudio Ortolina
2025-04-27 21:17:31 +01:00
parent e78026c3da
commit cacdfbaee0
2 changed files with 28 additions and 0 deletions
+6
View File
@@ -7,5 +7,11 @@ defmodule Discogs do
API.get_artist(id, discogs_config) API.get_artist(id, discogs_config)
end end
def get_artist_image(url) do
discogs_config = discogs_config()
API.get_artist_image(url, discogs_config)
end
defp discogs_config, do: Discogs.Config.resolve(:music_library) defp discogs_config, do: Discogs.Config.resolve(:music_library)
end end
+22
View File
@@ -12,6 +12,17 @@ defmodule Discogs.API do
|> get_request() |> get_request()
end end
def get_artist_image(url, config) do
case Req.new(url: url, max_retries: 1, user_agent: config.user_agent)
|> Req.Request.merge_options(config.req_options)
|> Req.Request.append_request_steps(log_attempt: &log_attempt/1)
|> Req.Request.append_response_steps(log_error: &log_error/1)
|> get_request() do
{:ok, data} -> {:ok, data}
{:error, _reason} -> {:error, :cover_not_available}
end
end
defp new_request(config) do defp new_request(config) do
Req.new( Req.new(
base_url: "https://api.discogs.com", base_url: "https://api.discogs.com",
@@ -42,4 +53,15 @@ defmodule Discogs.API do
Logger.debug("Fetching data from #{url}") Logger.debug("Fetching data from #{url}")
request request
end end
defp log_error({request, response}) do
if response.status in 400..499 or response.status in 500..599 do
Logger.error(fn ->
url = URI.to_string(request.url)
"Failed to fetch data from #{url}, reason: #{inspect(response.body)}"
end)
end
{request, response}
end
end end