You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jellyfin/MediaBrowser.Controller/ServerApplicationPaths.cs

279 lines
8.3 KiB

using System.IO;
using MediaBrowser.Common.Kernel;
namespace MediaBrowser.Controller
{
/// <summary>
/// Extends BaseApplicationPaths to add paths that are only applicable on the server
/// </summary>
public class ServerApplicationPaths : BaseApplicationPaths
{
private string _rootFolderPath;
/// <summary>
/// Gets the path to the root media directory
/// </summary>
public string RootFolderPath
{
get
{
if (_rootFolderPath == null)
{
_rootFolderPath = Path.Combine(ProgramDataPath, "root");
if (!Directory.Exists(_rootFolderPath))
{
Directory.CreateDirectory(_rootFolderPath);
}
}
return _rootFolderPath;
}
}
private string _ibnPath;
/// <summary>
/// Gets the path to the Images By Name directory
/// </summary>
public string ImagesByNamePath
{
get
{
if (_ibnPath == null)
{
_ibnPath = Path.Combine(ProgramDataPath, "ImagesByName");
if (!Directory.Exists(_ibnPath))
{
Directory.CreateDirectory(_ibnPath);
}
}
return _ibnPath;
}
}
private string _PeoplePath;
/// <summary>
/// Gets the path to the People directory
/// </summary>
public string PeoplePath
{
get
{
if (_PeoplePath == null)
{
_PeoplePath = Path.Combine(ImagesByNamePath, "People");
if (!Directory.Exists(_PeoplePath))
{
Directory.CreateDirectory(_PeoplePath);
}
}
return _PeoplePath;
}
}
private string _GenrePath;
/// <summary>
/// Gets the path to the Genre directory
/// </summary>
public string GenrePath
{
get
{
if (_GenrePath == null)
{
_GenrePath = Path.Combine(ImagesByNamePath, "Genre");
if (!Directory.Exists(_GenrePath))
{
Directory.CreateDirectory(_GenrePath);
}
}
return _GenrePath;
}
}
private string _StudioPath;
/// <summary>
/// Gets the path to the Studio directory
/// </summary>
public string StudioPath
{
get
{
if (_StudioPath == null)
{
_StudioPath = Path.Combine(ImagesByNamePath, "Studio");
if (!Directory.Exists(_StudioPath))
{
Directory.CreateDirectory(_StudioPath);
}
}
return _StudioPath;
}
}
private string _yearPath;
/// <summary>
/// Gets the path to the Year directory
/// </summary>
public string YearPath
{
get
{
if (_yearPath == null)
{
_yearPath = Path.Combine(ImagesByNamePath, "Year");
if (!Directory.Exists(_yearPath))
{
Directory.CreateDirectory(_yearPath);
}
}
return _yearPath;
}
}
private string _userConfigurationDirectoryPath;
/// <summary>
/// Gets the path to the user configuration directory
/// </summary>
public string UserConfigurationDirectoryPath
{
get
{
if (_userConfigurationDirectoryPath == null)
{
_userConfigurationDirectoryPath = Path.Combine(ConfigurationDirectoryPath, "user");
if (!Directory.Exists(_userConfigurationDirectoryPath))
{
Directory.CreateDirectory(_userConfigurationDirectoryPath);
}
}
return _userConfigurationDirectoryPath;
}
}
private string _CacheDirectory;
/// <summary>
/// Gets the folder path to the cache directory
/// </summary>
public string CacheDirectory
{
get
{
if (_CacheDirectory == null)
{
_CacheDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.ProgramDataPath, "cache");
if (!Directory.Exists(_CacheDirectory))
{
Directory.CreateDirectory(_CacheDirectory);
}
}
return _CacheDirectory;
}
}
private string _FFProbeAudioCacheDirectory;
/// <summary>
/// Gets the folder path to the ffprobe audio cache directory
/// </summary>
public string FFProbeAudioCacheDirectory
{
get
{
if (_FFProbeAudioCacheDirectory == null)
{
_FFProbeAudioCacheDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.CacheDirectory, "ffprobe-audio");
if (!Directory.Exists(_FFProbeAudioCacheDirectory))
{
Directory.CreateDirectory(_FFProbeAudioCacheDirectory);
}
}
return _FFProbeAudioCacheDirectory;
}
}
private string _FFProbeVideoCacheDirectory;
/// <summary>
/// Gets the folder path to the ffprobe video cache directory
/// </summary>
public string FFProbeVideoCacheDirectory
{
get
{
if (_FFProbeVideoCacheDirectory == null)
{
_FFProbeVideoCacheDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.CacheDirectory, "ffprobe-video");
if (!Directory.Exists(_FFProbeVideoCacheDirectory))
{
Directory.CreateDirectory(_FFProbeVideoCacheDirectory);
}
}
return _FFProbeVideoCacheDirectory;
}
}
private string _FFMpegDirectory;
/// <summary>
/// Gets the folder path to ffmpeg
/// </summary>
public string FFMpegDirectory
{
get
{
if (_FFMpegDirectory == null)
{
_FFMpegDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.ProgramDataPath, "FFMpeg");
if (!Directory.Exists(_FFMpegDirectory))
{
Directory.CreateDirectory(_FFMpegDirectory);
}
}
return _FFMpegDirectory;
}
}
private string _FFMpegPath;
/// <summary>
/// Gets the path to ffmpeg.exe
/// </summary>
public string FFMpegPath
{
get
{
if (_FFMpegPath == null)
{
_FFMpegPath = Path.Combine(FFMpegDirectory, "ffmpeg.exe");
}
return _FFMpegPath;
}
}
private string _FFProbePath;
/// <summary>
/// Gets the path to ffprobe.exe
/// </summary>
public string FFProbePath
{
get
{
if (_FFProbePath == null)
{
_FFProbePath = Path.Combine(FFMpegDirectory, "ffprobe.exe");
}
return _FFProbePath;
}
}
}
}