using MediaBrowser.Controller; namespace Jellyfin.Plugin.SmartPlaylist { public interface ISmartPlaylistFileSystem { public string StoragePath { get; } public string GetSmartPlaylistFilePath(SmartPlaylistId smartPlaylistId); public string FindSmartPlaylistFilePath(SmartPlaylistId smartPlaylistId); public string[] FindAllSmartPlaylistFilePaths(); } public class SmartPlaylistFileSystem : ISmartPlaylistFileSystem { public SmartPlaylistFileSystem(IServerApplicationPaths serverApplicationPaths) { StoragePath = Path.Combine(serverApplicationPaths.DataPath, "smartplaylists"); if (!Directory.Exists(StoragePath)) { Directory.CreateDirectory(StoragePath); } } public string StoragePath { get; } public string GetSmartPlaylistFilePath(SmartPlaylistId smartPlaylistId) { return Path.Combine(StoragePath, $"{smartPlaylistId}.json"); } public string FindSmartPlaylistFilePath(SmartPlaylistId smartPlaylistId) { return Directory.GetFiles(StoragePath, $"{smartPlaylistId}.json", SearchOption.AllDirectories).First(); } public string[] FindAllSmartPlaylistFilePaths() { return Directory.GetFiles(StoragePath, "*.json", SearchOption.AllDirectories); } } }