mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-06-03 14:28:46 +01:00
added sync job database
This commit is contained in:
@@ -529,10 +529,10 @@ namespace MediaBrowser.Controller.Entities
|
||||
.Where(i => string.Equals(i.Name, TrailerFolderName, StringComparison.OrdinalIgnoreCase))
|
||||
.SelectMany(i => i.EnumerateFiles("*", SearchOption.TopDirectoryOnly))
|
||||
.ToList();
|
||||
|
||||
|
||||
// Support plex/xbmc convention
|
||||
files.AddRange(fileSystemChildren.OfType<FileInfo>()
|
||||
.Where(i => System.IO.Path.GetFileNameWithoutExtension(i.Name).EndsWith(XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) && !string.Equals(Path, i.FullName, StringComparison.OrdinalIgnoreCase))
|
||||
.Where(i => FileSystem.GetFileNameWithoutExtension(i).EndsWith(XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) && !string.Equals(Path, i.FullName, StringComparison.OrdinalIgnoreCase))
|
||||
);
|
||||
|
||||
return LibraryManager.ResolvePaths<Trailer>(files, directoryService, null).Select(video =>
|
||||
@@ -564,7 +564,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
|
||||
// Support plex/xbmc convention
|
||||
files.AddRange(fileSystemChildren.OfType<FileInfo>()
|
||||
.Where(i => string.Equals(System.IO.Path.GetFileNameWithoutExtension(i.Name), ThemeSongFilename, StringComparison.OrdinalIgnoreCase))
|
||||
.Where(i => string.Equals(FileSystem.GetFileNameWithoutExtension(i), ThemeSongFilename, StringComparison.OrdinalIgnoreCase))
|
||||
);
|
||||
|
||||
return LibraryManager.ResolvePaths<Audio.Audio>(files, directoryService, null).Select(audio =>
|
||||
@@ -1564,7 +1564,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
|
||||
if (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(Path))
|
||||
{
|
||||
Name = System.IO.Path.GetFileNameWithoutExtension(Path);
|
||||
Name = FileSystem.GetFileNameWithoutExtension(Path);
|
||||
hasChanges = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Common.IO;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Controller.Resolvers;
|
||||
using System;
|
||||
@@ -189,11 +190,14 @@ namespace MediaBrowser.Controller.Library
|
||||
/// </summary>
|
||||
/// <param name="path">The path.</param>
|
||||
/// <param name="directoryService">The directory service.</param>
|
||||
/// <param name="fileSystem">The file system.</param>
|
||||
/// <returns><c>true</c> if [is season folder] [the specified path]; otherwise, <c>false</c>.</returns>
|
||||
private static bool IsSeasonFolder(string path, IDirectoryService directoryService)
|
||||
private static bool IsSeasonFolder(string path, IDirectoryService directoryService, IFileSystem fileSystem)
|
||||
{
|
||||
// It's a season folder if it's named as such and does not contain any audio files, apart from theme.mp3
|
||||
return GetSeasonNumberFromPath(path) != null && !directoryService.GetFiles(path).Any(i => EntityResolutionHelper.IsAudioFile(i.FullName) && !string.Equals(Path.GetFileNameWithoutExtension(i.FullName), BaseItem.ThemeSongFilename));
|
||||
return GetSeasonNumberFromPath(path) != null &&
|
||||
!directoryService.GetFiles(path)
|
||||
.Any(i => EntityResolutionHelper.IsAudioFile(i.FullName) && !string.Equals(fileSystem.GetFileNameWithoutExtension(i), BaseItem.ThemeSongFilename));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -204,7 +208,7 @@ namespace MediaBrowser.Controller.Library
|
||||
/// <param name="fileSystemChildren">The file system children.</param>
|
||||
/// <param name="directoryService">The directory service.</param>
|
||||
/// <returns><c>true</c> if [is series folder] [the specified path]; otherwise, <c>false</c>.</returns>
|
||||
public static bool IsSeriesFolder(string path, bool considerSeasonlessSeries, IEnumerable<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService)
|
||||
public static bool IsSeriesFolder(string path, bool considerSeasonlessSeries, IEnumerable<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService, IFileSystem fileSystem)
|
||||
{
|
||||
// A folder with more than 3 non-season folders in will not becounted as a series
|
||||
var nonSeriesFolders = 0;
|
||||
@@ -225,7 +229,7 @@ namespace MediaBrowser.Controller.Library
|
||||
|
||||
if ((attributes & FileAttributes.Directory) == FileAttributes.Directory)
|
||||
{
|
||||
if (IsSeasonFolder(child.FullName, directoryService))
|
||||
if (IsSeasonFolder(child.FullName, directoryService, fileSystem))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -322,6 +322,7 @@
|
||||
<Compile Include="Sync\ICloudSyncProvider.cs" />
|
||||
<Compile Include="Sync\ISyncManager.cs" />
|
||||
<Compile Include="Sync\ISyncProvider.cs" />
|
||||
<Compile Include="Sync\ISyncRepository.cs" />
|
||||
<Compile Include="Themes\IAppThemeManager.cs" />
|
||||
<Compile Include="Themes\InternalThemeImage.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace MediaBrowser.Controller.Sync
|
||||
/// </summary>
|
||||
/// <param name="request">The request.</param>
|
||||
/// <returns>Task.</returns>
|
||||
Task<List<SyncJob>> CreateJob(SyncJobRequest request);
|
||||
Task<SyncJobCreationResult> CreateJob(SyncJobRequest request);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the jobs.
|
||||
@@ -21,25 +21,12 @@ namespace MediaBrowser.Controller.Sync
|
||||
/// <returns>QueryResult<SyncJob>.</returns>
|
||||
QueryResult<SyncJob> GetJobs(SyncJobQuery query);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the schedules.
|
||||
/// </summary>
|
||||
/// <returns>QueryResult<SyncSchedule>.</returns>
|
||||
QueryResult<SyncSchedule> GetSchedules(SyncScheduleQuery query);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the job.
|
||||
/// </summary>
|
||||
/// <param name="id">The identifier.</param>
|
||||
/// <returns>SyncJob.</returns>
|
||||
SyncJob GetJob(string id);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the schedule.
|
||||
/// </summary>
|
||||
/// <param name="id">The identifier.</param>
|
||||
/// <returns>SyncSchedule.</returns>
|
||||
SyncSchedule GetSchedule(string id);
|
||||
|
||||
/// <summary>
|
||||
/// Cancels the job.
|
||||
@@ -48,13 +35,6 @@ namespace MediaBrowser.Controller.Sync
|
||||
/// <returns>Task.</returns>
|
||||
Task CancelJob(string id);
|
||||
|
||||
/// <summary>
|
||||
/// Cancels the schedule.
|
||||
/// </summary>
|
||||
/// <param name="id">The identifier.</param>
|
||||
/// <returns>Task.</returns>
|
||||
Task CancelSchedule(string id);
|
||||
|
||||
/// <summary>
|
||||
/// Adds the parts.
|
||||
/// </summary>
|
||||
|
||||
58
MediaBrowser.Controller/Sync/ISyncRepository.cs
Normal file
58
MediaBrowser.Controller/Sync/ISyncRepository.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using MediaBrowser.Model.Querying;
|
||||
using MediaBrowser.Model.Sync;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MediaBrowser.Controller.Sync
|
||||
{
|
||||
public interface ISyncRepository
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the job.
|
||||
/// </summary>
|
||||
/// <param name="id">The identifier.</param>
|
||||
/// <returns>SyncJob.</returns>
|
||||
SyncJob GetJob(string id);
|
||||
|
||||
/// <summary>
|
||||
/// Creates the specified job.
|
||||
/// </summary>
|
||||
/// <param name="job">The job.</param>
|
||||
/// <returns>Task.</returns>
|
||||
Task Create(SyncJob job);
|
||||
|
||||
/// <summary>
|
||||
/// Updates the specified job.
|
||||
/// </summary>
|
||||
/// <param name="job">The job.</param>
|
||||
/// <returns>Task.</returns>
|
||||
Task Update(SyncJob job);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the jobs.
|
||||
/// </summary>
|
||||
/// <param name="query">The query.</param>
|
||||
/// <returns>QueryResult<SyncJob>.</returns>
|
||||
QueryResult<SyncJob> GetJobs(SyncJobQuery query);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the job item.
|
||||
/// </summary>
|
||||
/// <param name="id">The identifier.</param>
|
||||
/// <returns>SyncJobItem.</returns>
|
||||
SyncJobItem GetJobItem(string id);
|
||||
|
||||
/// <summary>
|
||||
/// Creates the specified job item.
|
||||
/// </summary>
|
||||
/// <param name="jobItem">The job item.</param>
|
||||
/// <returns>Task.</returns>
|
||||
Task Create(SyncJobItem jobItem);
|
||||
|
||||
/// <summary>
|
||||
/// Updates the specified job item.
|
||||
/// </summary>
|
||||
/// <param name="jobItem">The job item.</param>
|
||||
/// <returns>Task.</returns>
|
||||
Task Update(SyncJobItem jobItem);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user