|
|
|
@ -1,17 +1,14 @@
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel.DataAnnotations;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Jellyfin.Api.Constants;
|
|
|
|
|
using Jellyfin.Api.Extensions;
|
|
|
|
|
using Jellyfin.Api.Helpers;
|
|
|
|
|
using Jellyfin.Api.ModelBinders;
|
|
|
|
|
using Jellyfin.Api.Models.UserDtos;
|
|
|
|
|
using Jellyfin.Data.Enums;
|
|
|
|
|
using Jellyfin.Extensions;
|
|
|
|
|
using MediaBrowser.Controller.Dto;
|
|
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
|
|
using MediaBrowser.Controller.Entities.Audio;
|
|
|
|
@ -40,6 +37,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
|
private readonly IDtoService _dtoService;
|
|
|
|
|
private readonly IUserViewManager _userViewManager;
|
|
|
|
|
private readonly IFileSystem _fileSystem;
|
|
|
|
|
private readonly IEnumerable<ILyricsProvider> _lyricProviders;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Initializes a new instance of the <see cref="UserLibraryController"/> class.
|
|
|
|
@ -50,13 +48,15 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
|
/// <param name="dtoService">Instance of the <see cref="IDtoService"/> interface.</param>
|
|
|
|
|
/// <param name="userViewManager">Instance of the <see cref="IUserViewManager"/> interface.</param>
|
|
|
|
|
/// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
|
|
|
|
|
/// <param name="lyricProviders">Collection of all registered <see cref="ILyricsProvider"/> interfaces.</param>
|
|
|
|
|
public UserLibraryController(
|
|
|
|
|
IUserManager userManager,
|
|
|
|
|
IUserDataManager userDataRepository,
|
|
|
|
|
ILibraryManager libraryManager,
|
|
|
|
|
IDtoService dtoService,
|
|
|
|
|
IUserViewManager userViewManager,
|
|
|
|
|
IFileSystem fileSystem)
|
|
|
|
|
IFileSystem fileSystem,
|
|
|
|
|
IEnumerable<ILyricsProvider> lyricProviders)
|
|
|
|
|
{
|
|
|
|
|
_userManager = userManager;
|
|
|
|
|
_userDataRepository = userDataRepository;
|
|
|
|
@ -64,6 +64,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
|
_dtoService = dtoService;
|
|
|
|
|
_userViewManager = userViewManager;
|
|
|
|
|
_fileSystem = fileSystem;
|
|
|
|
|
_lyricProviders = lyricProviders;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -413,10 +414,14 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
|
return NotFound();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var result = ItemHelper.GetLyricData(item);
|
|
|
|
|
if (result is not null)
|
|
|
|
|
// Super nieve implementation. I would suggest building a lyric service of some sort and doing this there.
|
|
|
|
|
foreach (var provider in _lyricProviders)
|
|
|
|
|
{
|
|
|
|
|
return Ok(result);
|
|
|
|
|
provider.Process(item);
|
|
|
|
|
if (provider.HasData)
|
|
|
|
|
{
|
|
|
|
|
return Ok(provider.Data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return NotFound();
|
|
|
|
|