This commit is contained in:
@@ -1,7 +1,24 @@
|
||||
using System.Collections.Generic;
|
||||
using MediaBrowser.Model.Plugins;
|
||||
|
||||
namespace Jellyfin.Plugin.JellyLMS.Configuration;
|
||||
|
||||
/// <summary>
|
||||
/// Represents a path mapping between Jellyfin and LMS file paths.
|
||||
/// </summary>
|
||||
public class PathMapping
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the path prefix as seen by Jellyfin.
|
||||
/// </summary>
|
||||
public string JellyfinPath { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the same path prefix as seen by LMS.
|
||||
/// </summary>
|
||||
public string LmsPath { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Plugin configuration for JellyLMS.
|
||||
/// </summary>
|
||||
@@ -72,14 +89,46 @@ public class PluginConfiguration : BasePluginConfiguration
|
||||
/// <summary>
|
||||
/// Gets or sets the media path prefix as seen by Jellyfin.
|
||||
/// Used for path mapping when UseDirectFilePath is enabled.
|
||||
/// Example: /media/music or C:\Music.
|
||||
/// Deprecated: Use PathMappings instead. Kept for backwards compatibility.
|
||||
/// </summary>
|
||||
public string JellyfinMediaPath { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the media path prefix as seen by LMS.
|
||||
/// Used for path mapping when UseDirectFilePath is enabled.
|
||||
/// Example: /mnt/music or //nas/music.
|
||||
/// Deprecated: Use PathMappings instead. Kept for backwards compatibility.
|
||||
/// </summary>
|
||||
public string LmsMediaPath { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the list of path mappings between Jellyfin and LMS.
|
||||
/// Each mapping allows files from different locations to be played via direct file access.
|
||||
/// </summary>
|
||||
public List<PathMapping> PathMappings { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets all effective path mappings, including legacy single mapping if configured.
|
||||
/// </summary>
|
||||
/// <returns>Enumerable of all configured path mappings.</returns>
|
||||
public IEnumerable<PathMapping> GetAllPathMappings()
|
||||
{
|
||||
// Return configured list mappings first
|
||||
foreach (var mapping in PathMappings)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(mapping.JellyfinPath) && !string.IsNullOrEmpty(mapping.LmsPath))
|
||||
{
|
||||
yield return mapping;
|
||||
}
|
||||
}
|
||||
|
||||
// Fall back to legacy single mapping for backwards compatibility
|
||||
if (!string.IsNullOrEmpty(JellyfinMediaPath) && !string.IsNullOrEmpty(LmsMediaPath))
|
||||
{
|
||||
yield return new PathMapping
|
||||
{
|
||||
JellyfinPath = JellyfinMediaPath,
|
||||
LmsPath = LmsMediaPath
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user