Musica.cs
using System.Text.Json.Serialization;
namespace ScreenSoundAPI.Modelos;
internal class Musica
{
private string[] tonalidades = { "C", "C#", "D", "Eb", "E", "F", "F#", "G", "Ab", "A", "Bb", "B" };
[JsonPropertyName("song")]
public string? Nome { get; set; }
[JsonPropertyName("artist")]
public string? Artista { get; set; }
[JsonPropertyName("duration_ms")]
public int Duracao { get; set; }
[JsonPropertyName("genre")]
public string? Genero { get; set; }
[JsonPropertyName("key")]
public int Key { get; set; }
public string Tonalidade
{
get
{
if (Key >= 0 && Key < tonalidades.Length)
return tonalidades[Key];
else
return "Desconhecido";
}
}
public void ExibirDetalhesDaMusica()
{
Console.WriteLine($"Artista: {Artista}");
Console.WriteLine($"Música: {Nome}");
Console.WriteLine($"Duração em segundos: {Duracao / 1000}");
Console.WriteLine($"Gênero musical: {Genero}");
Console.WriteLine($"Tonalidade: {Tonalidade}");
}
}
Program.cs
using ScreenSoundAPI.Filtros;
using ScreenSoundAPI.Modelos;
using System.Text.Json;
using (HttpClient client = new HttpClient())
{
try
{
string resposta = await client.GetStringAsync("https://guilhermeonrails.github.io/api-csharp-songs/songs.json");
var musicas = JsonSerializer.Deserialize<List<Musica>>(resposta)!;
foreach (var musica in musicas)
{
musica.ExibirDetalhesDaMusica();
Console.WriteLine("-------------------");
}
}
catch (Exception ex)
{
Console.WriteLine($"Temos um problema: {ex.Message}");
}
}