added auto-organize setting

pull/702/head
Luke Pulverenti 9 years ago
parent de8bf2b396
commit 795a8ab33b

@ -7,6 +7,7 @@ namespace MediaBrowser.Model.LiveTv
public int? GuideDays { get; set; } public int? GuideDays { get; set; }
public bool EnableMovieProviders { get; set; } public bool EnableMovieProviders { get; set; }
public string RecordingPath { get; set; } public string RecordingPath { get; set; }
public bool EnableAutoOrganize { get; set; }
public List<TunerHostInfo> TunerHosts { get; set; } public List<TunerHostInfo> TunerHosts { get; set; }
public List<ListingsProviderInfo> ListingProviders { get; set; } public List<ListingsProviderInfo> ListingProviders { get; set; }

@ -43,6 +43,13 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
_providerManager = providerManager; _providerManager = providerManager;
} }
public Task<FileOrganizationResult> OrganizeEpisodeFile(string path, CancellationToken cancellationToken)
{
var options = _config.GetAutoOrganizeOptions().TvOptions;
return OrganizeEpisodeFile(path, options, false, cancellationToken);
}
public async Task<FileOrganizationResult> OrganizeEpisodeFile(string path, TvFileOrganizationOptions options, bool overwriteExisting, CancellationToken cancellationToken) public async Task<FileOrganizationResult> OrganizeEpisodeFile(string path, TvFileOrganizationOptions options, bool overwriteExisting, CancellationToken cancellationToken)
{ {
_logger.Info("Sorting file {0}", path); _logger.Info("Sorting file {0}", path);

@ -48,8 +48,6 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
progress.Report(10); progress.Report(10);
var scanLibrary = false;
if (eligibleFiles.Count > 0) if (eligibleFiles.Count > 0)
{ {
var numComplete = 0; var numComplete = 0;
@ -61,12 +59,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
try try
{ {
var result = await organizer.OrganizeEpisodeFile(file.FullName, options, options.OverwriteExistingEpisodes, cancellationToken).ConfigureAwait(false); await organizer.OrganizeEpisodeFile(file.FullName, options, options.OverwriteExistingEpisodes, cancellationToken).ConfigureAwait(false);
if (result.Status == FileSortingStatus.Success)
{
scanLibrary = true;
}
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -106,12 +99,6 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
} }
} }
if (scanLibrary)
{
await _libraryManager.ValidateMediaLibrary(new Progress<double>(), CancellationToken.None)
.ConfigureAwait(false);
}
progress.Report(100); progress.Report(100);
} }

@ -3,14 +3,20 @@ using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.IO; using MediaBrowser.Common.IO;
using MediaBrowser.Common.Net; using MediaBrowser.Common.Net;
using MediaBrowser.Common.Security; using MediaBrowser.Common.Security;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.FileOrganization;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Dto; using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Events; using MediaBrowser.Model.Events;
using MediaBrowser.Model.FileOrganization;
using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.LiveTv;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Serialization;
using MediaBrowser.Server.Implementations.FileOrganization;
using System; using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
@ -21,12 +27,12 @@ using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{ {
public class EmbyTV : ILiveTvService/*, IHasRegistrationInfo*/, IDisposable public class EmbyTV : ILiveTvService, IHasRegistrationInfo, IDisposable
{ {
private readonly IApplicationHost _appHpst; private readonly IApplicationHost _appHpst;
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IHttpClient _httpClient; private readonly IHttpClient _httpClient;
private readonly IConfigurationManager _config; private readonly IServerConfigurationManager _config;
private readonly IJsonSerializer _jsonSerializer; private readonly IJsonSerializer _jsonSerializer;
private readonly ItemDataProvider<RecordingInfo> _recordingProvider; private readonly ItemDataProvider<RecordingInfo> _recordingProvider;
@ -37,9 +43,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
private readonly IFileSystem _fileSystem; private readonly IFileSystem _fileSystem;
private readonly ISecurityManager _security; private readonly ISecurityManager _security;
private readonly ILibraryMonitor _libraryMonitor;
private readonly ILibraryManager _libraryManager;
private readonly IProviderManager _providerManager;
private readonly IFileOrganizationService _organizationService;
public static EmbyTV Current; public static EmbyTV Current;
public EmbyTV(IApplicationHost appHost, ILogger logger, IJsonSerializer jsonSerializer, IHttpClient httpClient, IConfigurationManager config, ILiveTvManager liveTvManager, IFileSystem fileSystem, ISecurityManager security) public EmbyTV(IApplicationHost appHost, ILogger logger, IJsonSerializer jsonSerializer, IHttpClient httpClient, IServerConfigurationManager config, ILiveTvManager liveTvManager, IFileSystem fileSystem, ISecurityManager security, ILibraryManager libraryManager, ILibraryMonitor libraryMonitor, IProviderManager providerManager, IFileOrganizationService organizationService)
{ {
Current = this; Current = this;
@ -49,6 +60,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
_config = config; _config = config;
_fileSystem = fileSystem; _fileSystem = fileSystem;
_security = security; _security = security;
_libraryManager = libraryManager;
_libraryMonitor = libraryMonitor;
_providerManager = providerManager;
_organizationService = organizationService;
_liveTvManager = (LiveTvManager)liveTvManager; _liveTvManager = (LiveTvManager)liveTvManager;
_jsonSerializer = jsonSerializer; _jsonSerializer = jsonSerializer;
@ -610,6 +625,36 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
_recordingProvider.Update(recording); _recordingProvider.Update(recording);
_timerProvider.Delete(timer); _timerProvider.Delete(timer);
_logger.Info("Recording was a success"); _logger.Info("Recording was a success");
if (recording.Status == RecordingStatus.Completed)
{
OnSuccessfulRecording(recording);
}
}
private async void OnSuccessfulRecording(RecordingInfo recording)
{
if (GetConfiguration().EnableAutoOrganize)
{
if (recording.IsSeries)
{
try
{
var organize = new EpisodeFileOrganizer(_organizationService, _config, _fileSystem, _logger, _libraryManager, _libraryMonitor, _providerManager);
var result = await organize.OrganizeEpisodeFile(recording.Path, CancellationToken.None).ConfigureAwait(false);
if (result.Status == FileSortingStatus.Success)
{
_recordingProvider.Delete(recording);
}
}
catch (Exception ex)
{
_logger.ErrorException("Error processing new recording", ex);
}
}
}
} }
private ProgramInfo GetProgramInfoFromCache(string channelId, string programId) private ProgramInfo GetProgramInfoFromCache(string channelId, string programId)

Loading…
Cancel
Save