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