Preferi colocar um readline pra buscar o nome da música e ele retornar a tonalidade da mesma
using System.Text.Json.Serialization;
namespace MusicKeyTranslator.Models;
internal class SongKey
{
[JsonPropertyName("song")]
public string? Song { get; set; }
[JsonPropertyName("key")]
public int Key { get; set; }
private readonly Dictionary<int, string> KeyMap = new()
{
{ 0, "C" },
{ 1, "C#" },
{ 2, "D" },
{ 3, "D#" },
{ 4, "E" },
{ 5, "F" },
{ 6, "F#" },
{ 7, "G" },
{ 8, "G#" },
{ 9, "A" },
{ 10, "A#" },
{ 11, "B" },
};
public string GetMusicalKey(int chave)
{
if (KeyMap.TryGetValue(chave, out string? value))
return value;
else
return "Valor não encontrado";
}
}
using System.Text.Json;
namespace MusicKeyTranslator.Models;
internal class SongKeyService
{
public static async Task SearchingAsync()
{
using (HttpClient client = new())
{
var request = await client.GetStringAsync("https://guilhermeonrails.github.io/api-csharp-songs/songs.json");
var json = JsonSerializer.Deserialize<List<SongKey>>(request)!;
SongKey model = new();
json.ForEach(c => Console.WriteLine(c.Song));
Console.WriteLine("\nVocê quer pegar a tonalidade de qual música?");
string question = Console.ReadLine()!;
foreach (var item in json)
{
if (item.Song.Equals(question))
Console.WriteLine($"\nO tom da música é: {model.GetMusicalKey(item.Key)}");
}
}
}
}