Files
music_library/lib/last_fm.ex
T
2025-02-27 13:43:49 +00:00

44 lines
1.3 KiB
Elixir

defmodule LastFm do
def get_artist_info(musicbrainz_id, name) do
last_fm_config = last_fm_config()
case LastFm.APIImpl.get_artist_info(
{:musicbrainz_id, musicbrainz_id},
last_fm_config
) do
{:ok, info} ->
{:ok, info}
{:error, :invalid_parameters} ->
# Sometimes the artist info cannot be identified with the MusicBrainz ID,
# because Last.fm doesn't have that information. In that case, we try again with the artist name.
LastFm.APIImpl.get_artist_info({:name, name}, last_fm_config)
error ->
error
end
end
def get_similar_artists(musicbrainz_id, name) do
last_fm_config = last_fm_config()
case LastFm.APIImpl.get_similar_artists(
{:musicbrainz_id, musicbrainz_id},
last_fm_config
) do
{:ok, info} ->
{:ok, info}
{:error, :invalid_parameters} ->
# Sometimes the artist info cannot be identified with the MusicBrainz ID,
# because Last.fm doesn't have that information. In that case, we try again with the artist name.
LastFm.APIImpl.get_similar_artists({:name, name}, last_fm_config)
error ->
error
end
end
defp last_fm_config, do: LastFm.Config.resolve(:music_library)
end