using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.IO; using System.Net.Mime; using System.Threading; using System.Threading.Tasks; using Jellyfin.Api.Attributes; using Jellyfin.Api.Extensions; using Jellyfin.Api.Helpers; using Jellyfin.Extensions; using MediaBrowser.Common.Api; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Lyrics; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.IO; using MediaBrowser.Model.Lyrics; using MediaBrowser.Model.Providers; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace Jellyfin.Api.Controllers; /// /// Lyrics controller. /// [Route("")] public class LyricsController : BaseJellyfinApiController { private readonly ILibraryManager _libraryManager; private readonly ILyricManager _lyricManager; private readonly IProviderManager _providerManager; private readonly IFileSystem _fileSystem; private readonly IUserManager _userManager; /// /// Initializes a new instance of the class. /// /// Instance of the interface. /// Instance of the interface. /// Instance of the interface. /// Instance of the interface. /// Instance of the interface. public LyricsController( ILibraryManager libraryManager, ILyricManager lyricManager, IProviderManager providerManager, IFileSystem fileSystem, IUserManager userManager) { _libraryManager = libraryManager; _lyricManager = lyricManager; _providerManager = providerManager; _fileSystem = fileSystem; _userManager = userManager; } /// /// Gets an item's lyrics. /// /// Item id. /// Lyrics returned. /// Something went wrong. No Lyrics will be returned. /// An containing the item's lyrics. [HttpGet("Audio/{itemId}/Lyrics")] [Authorize] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task> GetLyrics([FromRoute, Required] Guid itemId) { var item = _libraryManager.GetItemById