elliebot/src/EllieBot/Modules/Music/Services/LyricsService.cs

25 lines
No EOL
910 B
C#

using Musix;
namespace EllieBot.Modules.Music;
public sealed class LyricsService(HttpClient client) : ILyricsService, IEService
{
private readonly MusixMatchAPI _api = new(client);
private static string NormalizeName(string name)
=> string.Join("-", name.Split()
.Select(x => new string(x.Where(c => char.IsLetterOrDigit(c)).ToArray())))
.Trim('-');
public async Task<IReadOnlyList<TracksItem>> SearchTracksAsync(string name)
=> await _api.SearchTracksAsync(NormalizeName(name))
.Fmap(x => x
.Message
.Body
.TrackList
.Map(x => new TracksItem(x.Track.ArtistName, x.Track.TrackName, x.Track.TrackId)));
public async Task<string> GetLyricsAsync(int trackId)
=> await _api.GetTrackLyricsAsync(trackId)
.Fmap(x => x.Message.Body.Lyrics.LyricsBody);
}