mirror of
https://github.com/Sonarr/Sonarr.git
synced 2026-04-17 21:26:13 -04:00
Compare commits
5 Commits
v4.0.8.198
...
v4.0.8.200
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1527f9abb | ||
|
|
291d792810 | ||
|
|
9b528eb829 | ||
|
|
4c0b896174 | ||
|
|
4ff83f9efc |
@@ -75,7 +75,6 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport
|
||||
|
||||
_downloadClientItem = Builder<DownloadClientItem>.CreateNew()
|
||||
.With(d => d.OutputPath = new OsPath(outputPath))
|
||||
.With(d => d.DownloadClientInfo = new DownloadClientItemClientInfo())
|
||||
.Build();
|
||||
}
|
||||
|
||||
@@ -202,7 +201,6 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport
|
||||
GivenNewDownload();
|
||||
_downloadClientItem.Title = "30.Rock.S01E01";
|
||||
_downloadClientItem.CanMoveFiles = false;
|
||||
_downloadClientItem.DownloadClientInfo = null;
|
||||
|
||||
Subject.Import(new List<ImportDecision> { _approvedDecisions.First() }, true, _downloadClientItem);
|
||||
|
||||
@@ -210,48 +208,6 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport
|
||||
.Verify(v => v.UpgradeEpisodeFile(It.IsAny<EpisodeFile>(), _approvedDecisions.First().LocalEpisode, true), Times.Once());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_copy_when_remove_completed_downloads_is_disabled_and_can_move_files()
|
||||
{
|
||||
GivenNewDownload();
|
||||
_downloadClientItem.Title = "30.Rock.S01E01";
|
||||
_downloadClientItem.CanMoveFiles = true;
|
||||
_downloadClientItem.DownloadClientInfo.RemoveCompletedDownloads = false;
|
||||
|
||||
Subject.Import(new List<ImportDecision> { _approvedDecisions.First() }, true, _downloadClientItem);
|
||||
|
||||
Mocker.GetMock<IUpgradeMediaFiles>()
|
||||
.Verify(v => v.UpgradeEpisodeFile(It.IsAny<EpisodeFile>(), _approvedDecisions.First().LocalEpisode, true), Times.Once());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_copy_when_remove_completed_downloads_is_enabled_and_cannot_move_files()
|
||||
{
|
||||
GivenNewDownload();
|
||||
_downloadClientItem.Title = "30.Rock.S01E01";
|
||||
_downloadClientItem.CanMoveFiles = false;
|
||||
_downloadClientItem.DownloadClientInfo.RemoveCompletedDownloads = true;
|
||||
|
||||
Subject.Import(new List<ImportDecision> { _approvedDecisions.First() }, true, _downloadClientItem);
|
||||
|
||||
Mocker.GetMock<IUpgradeMediaFiles>()
|
||||
.Verify(v => v.UpgradeEpisodeFile(It.IsAny<EpisodeFile>(), _approvedDecisions.First().LocalEpisode, true), Times.Once());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_move_when_remove_completed_downloads_is_enabled_and_can_move_files()
|
||||
{
|
||||
GivenNewDownload();
|
||||
_downloadClientItem.Title = "30.Rock.S01E01";
|
||||
_downloadClientItem.CanMoveFiles = true;
|
||||
_downloadClientItem.DownloadClientInfo.RemoveCompletedDownloads = true;
|
||||
|
||||
Subject.Import(new List<ImportDecision> { _approvedDecisions.First() }, true, _downloadClientItem);
|
||||
|
||||
Mocker.GetMock<IUpgradeMediaFiles>()
|
||||
.Verify(v => v.UpgradeEpisodeFile(It.IsAny<EpisodeFile>(), _approvedDecisions.First().LocalEpisode, false), Times.Once());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_use_override_importmode()
|
||||
{
|
||||
|
||||
@@ -220,7 +220,7 @@ namespace NzbDrone.Core.Configuration
|
||||
|
||||
public string Branch => _updateOptions.Branch ?? GetValue("Branch", "main").ToLowerInvariant();
|
||||
|
||||
public string LogLevel => _logOptions.Level ?? GetValue("LogLevel", "info").ToLowerInvariant();
|
||||
public string LogLevel => _logOptions.Level ?? GetValue("LogLevel", "debug").ToLowerInvariant();
|
||||
public string ConsoleLogLevel => _logOptions.ConsoleLevel ?? GetValue("ConsoleLogLevel", string.Empty, persist: false);
|
||||
|
||||
public string Theme => _appOptions.Theme ?? GetValue("Theme", "auto", persist: false);
|
||||
|
||||
@@ -129,10 +129,8 @@ namespace NzbDrone.Core.Download.Clients.Aria2
|
||||
|
||||
var outputPath = _remotePathMappingService.RemapRemoteToLocal(Settings.Host, new OsPath(GetOutputPath(torrent)));
|
||||
|
||||
yield return new DownloadClientItem
|
||||
var queueItem = new DownloadClientItem
|
||||
{
|
||||
CanMoveFiles = false,
|
||||
CanBeRemoved = torrent.Status == "complete",
|
||||
Category = null,
|
||||
DownloadClientInfo = DownloadClientItemClientInfo.FromDownloadClient(this, false),
|
||||
DownloadId = torrent.InfoHash?.ToUpper(),
|
||||
@@ -146,7 +144,12 @@ namespace NzbDrone.Core.Download.Clients.Aria2
|
||||
Status = status,
|
||||
Title = title,
|
||||
TotalSize = totalLength,
|
||||
CanMoveFiles = false
|
||||
};
|
||||
|
||||
queueItem.CanBeRemoved = queueItem.DownloadClientInfo.RemoveCompletedDownloads && torrent.Status == "complete";
|
||||
|
||||
yield return queueItem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
|
||||
{
|
||||
foreach (var item in _scanWatchFolder.GetItems(Settings.WatchFolder, ScanGracePeriod))
|
||||
{
|
||||
yield return new DownloadClientItem
|
||||
var queueItem = new DownloadClientItem
|
||||
{
|
||||
DownloadClientInfo = DownloadClientItemClientInfo.FromDownloadClient(this, false),
|
||||
DownloadId = Definition.Name + "_" + item.DownloadId,
|
||||
@@ -101,11 +101,14 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
|
||||
|
||||
OutputPath = item.OutputPath,
|
||||
|
||||
Status = item.Status,
|
||||
|
||||
CanMoveFiles = !Settings.ReadOnly,
|
||||
CanBeRemoved = !Settings.ReadOnly
|
||||
Status = item.Status
|
||||
};
|
||||
|
||||
queueItem.CanMoveFiles = queueItem.CanBeRemoved =
|
||||
queueItem.DownloadClientInfo.RemoveCompletedDownloads &&
|
||||
!Settings.ReadOnly;
|
||||
|
||||
yield return queueItem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -190,6 +190,7 @@ namespace NzbDrone.Core.Download.Clients.Deluge
|
||||
// Here we detect if Deluge is managing the torrent and whether the seed criteria has been met.
|
||||
// This allows Sonarr to delete the torrent as appropriate.
|
||||
item.CanMoveFiles = item.CanBeRemoved =
|
||||
item.DownloadClientInfo.RemoveCompletedDownloads &&
|
||||
torrent.IsAutoManaged &&
|
||||
torrent.StopAtRatio &&
|
||||
torrent.Ratio >= torrent.StopRatio &&
|
||||
|
||||
@@ -88,7 +88,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
|
||||
}
|
||||
}
|
||||
|
||||
var item = new DownloadClientItem()
|
||||
var item = new DownloadClientItem
|
||||
{
|
||||
Category = Settings.TvCategory,
|
||||
DownloadClientInfo = DownloadClientItemClientInfo.FromDownloadClient(this, false),
|
||||
@@ -99,11 +99,11 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
|
||||
RemainingTime = GetRemainingTime(torrent),
|
||||
SeedRatio = GetSeedRatio(torrent),
|
||||
Status = GetStatus(torrent),
|
||||
Message = GetMessage(torrent),
|
||||
CanMoveFiles = IsFinished(torrent),
|
||||
CanBeRemoved = IsFinished(torrent)
|
||||
Message = GetMessage(torrent)
|
||||
};
|
||||
|
||||
item.CanMoveFiles = item.CanBeRemoved = item.DownloadClientInfo.RemoveCompletedDownloads && IsFinished(torrent);
|
||||
|
||||
if (item.Status == DownloadItemStatus.Completed || item.Status == DownloadItemStatus.Failed)
|
||||
{
|
||||
item.OutputPath = GetOutputPath(outputPath, torrent, serialNumber);
|
||||
|
||||
@@ -153,7 +153,7 @@ namespace NzbDrone.Core.Download.Clients.Flood
|
||||
item.Status = DownloadItemStatus.Downloading;
|
||||
}
|
||||
|
||||
if (item.Status == DownloadItemStatus.Completed)
|
||||
if (item.DownloadClientInfo.RemoveCompletedDownloads && item.Status == DownloadItemStatus.Completed)
|
||||
{
|
||||
// Grab cached seedConfig
|
||||
var seedConfig = _downloadSeedConfigProvider.GetSeedConfiguration(item.DownloadId);
|
||||
@@ -165,7 +165,7 @@ namespace NzbDrone.Core.Download.Clients.Flood
|
||||
// Check if seed ratio reached
|
||||
item.CanMoveFiles = item.CanBeRemoved = true;
|
||||
}
|
||||
else if (properties.DateFinished != null && properties.DateFinished > 0)
|
||||
else if (properties.DateFinished is > 0)
|
||||
{
|
||||
// Check if seed time reached
|
||||
if ((DateTimeOffset.Now - DateTimeOffset.FromUnixTimeSeconds((long)properties.DateFinished)) >= seedConfig.SeedTime)
|
||||
|
||||
@@ -119,7 +119,7 @@ namespace NzbDrone.Core.Download.Clients.FreeboxDownload
|
||||
break;
|
||||
}
|
||||
|
||||
item.CanBeRemoved = item.CanMoveFiles = torrent.Status == FreeboxDownloadTaskStatus.Done;
|
||||
item.CanBeRemoved = item.CanMoveFiles = item.DownloadClientInfo.RemoveCompletedDownloads && torrent.Status == FreeboxDownloadTaskStatus.Done;
|
||||
|
||||
queueItems.Add(item);
|
||||
}
|
||||
|
||||
@@ -92,7 +92,10 @@ namespace NzbDrone.Core.Download.Clients.Hadouken
|
||||
item.Status = DownloadItemStatus.Downloading;
|
||||
}
|
||||
|
||||
item.CanMoveFiles = item.CanBeRemoved = torrent.IsFinished && torrent.State == HadoukenTorrentState.Paused;
|
||||
item.CanMoveFiles = item.CanBeRemoved =
|
||||
item.DownloadClientInfo.RemoveCompletedDownloads &&
|
||||
torrent.IsFinished &&
|
||||
torrent.State == HadoukenTorrentState.Paused;
|
||||
|
||||
items.Add(item);
|
||||
}
|
||||
|
||||
@@ -225,7 +225,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
||||
|
||||
foreach (var torrent in torrents)
|
||||
{
|
||||
var item = new DownloadClientItem()
|
||||
var item = new DownloadClientItem
|
||||
{
|
||||
DownloadId = torrent.Hash.ToUpper(),
|
||||
Category = torrent.Category.IsNotNullOrWhiteSpace() ? torrent.Category : torrent.Label,
|
||||
@@ -239,7 +239,10 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
||||
|
||||
// Avoid removing torrents that haven't reached the global max ratio.
|
||||
// Removal also requires the torrent to be paused, in case a higher max ratio was set on the torrent itself (which is not exposed by the api).
|
||||
item.CanMoveFiles = item.CanBeRemoved = torrent.State is "pausedUP" or "stoppedUP" && HasReachedSeedLimit(torrent, config);
|
||||
item.CanMoveFiles = item.CanBeRemoved =
|
||||
item.DownloadClientInfo.RemoveCompletedDownloads &&
|
||||
torrent.State is "pausedUP" or "stoppedUP" &&
|
||||
HasReachedSeedLimit(torrent, config);
|
||||
|
||||
switch (torrent.State)
|
||||
{
|
||||
|
||||
@@ -117,7 +117,7 @@ namespace NzbDrone.Core.Download.Clients.Transmission
|
||||
item.Status = DownloadItemStatus.Downloading;
|
||||
}
|
||||
|
||||
item.CanBeRemoved = HasReachedSeedLimit(torrent, item.SeedRatio, configFunc);
|
||||
item.CanBeRemoved = item.DownloadClientInfo.RemoveCompletedDownloads && HasReachedSeedLimit(torrent, item.SeedRatio, configFunc);
|
||||
item.CanMoveFiles = item.CanBeRemoved && torrent.Status == TransmissionTorrentStatus.Stopped;
|
||||
|
||||
items.Add(item);
|
||||
|
||||
@@ -185,7 +185,7 @@ namespace NzbDrone.Core.Download.Clients.RTorrent
|
||||
// Grab cached seedConfig
|
||||
var seedConfig = _downloadSeedConfigProvider.GetSeedConfiguration(torrent.Hash);
|
||||
|
||||
if (torrent.IsFinished && seedConfig != null)
|
||||
if (item.DownloadClientInfo.RemoveCompletedDownloads && torrent.IsFinished && seedConfig != null)
|
||||
{
|
||||
var canRemove = false;
|
||||
|
||||
|
||||
@@ -167,6 +167,7 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
|
||||
|
||||
// 'Started' without 'Queued' is when the torrent is 'forced seeding'
|
||||
item.CanMoveFiles = item.CanBeRemoved =
|
||||
item.DownloadClientInfo.RemoveCompletedDownloads &&
|
||||
!torrent.Status.HasFlag(UTorrentTorrentStatus.Queued) &&
|
||||
!torrent.Status.HasFlag(UTorrentTorrentStatus.Started);
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
{
|
||||
"AddAutoTag": "أضف كلمات دلالية تلقائيا",
|
||||
"AddCondition": "إضافة شرط"
|
||||
"AddCondition": "إضافة شرط",
|
||||
"AutoTaggingNegateHelpText": "إذا تم تحديده ، فلن يتم تطبيق التنسيق المخصص إذا تطابق شرط {implementationName} هذا.",
|
||||
"ConnectionLostReconnect": "سيحاول {appName} الاتصال تلقائيًا ، أو يمكنك النقر فوق إعادة التحميل أدناه."
|
||||
}
|
||||
|
||||
@@ -1325,8 +1325,8 @@
|
||||
"NotificationsEmailSettingsUseEncryption": "Use Encryption",
|
||||
"NotificationsEmailSettingsUseEncryptionHelpText": "Whether to prefer using encryption if configured on the server, to always use encryption via SSL (Port 465 only) or StartTLS (any other port) or to never use encryption",
|
||||
"NotificationsEmbySettingsSendNotifications": "Send Notifications",
|
||||
"NotificationsEmbySettingsSendNotificationsHelpText": "Have MediaBrowser send notifications to configured providers",
|
||||
"NotificationsEmbySettingsUpdateLibraryHelpText": "Update Library on Import, Rename, or Delete?",
|
||||
"NotificationsEmbySettingsSendNotificationsHelpText": "Have Emby send notifications to configured providers. Not supported on Jellyfin.",
|
||||
"NotificationsEmbySettingsUpdateLibraryHelpText": "Update Library on Import, Rename, or Delete",
|
||||
"NotificationsGotifySettingIncludeSeriesPoster": "Include Series Poster",
|
||||
"NotificationsGotifySettingIncludeSeriesPosterHelpText": "Include series poster in message",
|
||||
"NotificationsGotifySettingsAppToken": "App Token",
|
||||
|
||||
@@ -2098,5 +2098,7 @@
|
||||
"SeasonsMonitoredNone": "Ninguna",
|
||||
"SeasonsMonitoredStatus": "Temporadas monitorizadas",
|
||||
"NoBlocklistItems": "Ningún elemento en la lista de bloqueo",
|
||||
"SeasonsMonitoredPartial": "Parcial"
|
||||
"SeasonsMonitoredPartial": "Parcial",
|
||||
"NotificationsTelegramSettingsMetadataLinksHelpText": "Añade un enlace a los metadatos de la serie cuando se envían notificaciones",
|
||||
"NotificationsTelegramSettingsMetadataLinks": "Enlaces de metadatos"
|
||||
}
|
||||
|
||||
@@ -2098,5 +2098,7 @@
|
||||
"SeasonsMonitoredPartial": "Parcial",
|
||||
"SeasonsMonitoredNone": "Nenhuma",
|
||||
"SeasonsMonitoredStatus": "Temporadas monitoradas",
|
||||
"NoBlocklistItems": "Sem itens na lista de bloqueio"
|
||||
"NoBlocklistItems": "Sem itens na lista de bloqueio",
|
||||
"NotificationsTelegramSettingsMetadataLinks": "Links de Metadados",
|
||||
"NotificationsTelegramSettingsMetadataLinksHelpText": "Adicione links aos metadados da série ao enviar notificações"
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport
|
||||
{
|
||||
default:
|
||||
case ImportMode.Auto:
|
||||
copyOnly = downloadClientItem is { CanMoveFiles: false } or { DownloadClientInfo.RemoveCompletedDownloads: false };
|
||||
copyOnly = downloadClientItem is { CanMoveFiles: false };
|
||||
break;
|
||||
case ImportMode.Move:
|
||||
copyOnly = false;
|
||||
|
||||
@@ -7,6 +7,7 @@ using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.CustomFormats;
|
||||
using NzbDrone.Core.DecisionEngine;
|
||||
using NzbDrone.Core.Download;
|
||||
using NzbDrone.Core.Download.TrackedDownloads;
|
||||
using NzbDrone.Core.MediaFiles.EpisodeImport.Aggregation;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Tv;
|
||||
@@ -29,6 +30,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport
|
||||
private readonly IAggregationService _aggregationService;
|
||||
private readonly IDiskProvider _diskProvider;
|
||||
private readonly IDetectSample _detectSample;
|
||||
private readonly ITrackedDownloadService _trackedDownloadService;
|
||||
private readonly ICustomFormatCalculationService _formatCalculator;
|
||||
private readonly Logger _logger;
|
||||
|
||||
@@ -37,6 +39,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport
|
||||
IAggregationService aggregationService,
|
||||
IDiskProvider diskProvider,
|
||||
IDetectSample detectSample,
|
||||
ITrackedDownloadService trackedDownloadService,
|
||||
ICustomFormatCalculationService formatCalculator,
|
||||
Logger logger)
|
||||
{
|
||||
@@ -45,6 +48,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport
|
||||
_aggregationService = aggregationService;
|
||||
_diskProvider = diskProvider;
|
||||
_detectSample = detectSample;
|
||||
_trackedDownloadService = trackedDownloadService;
|
||||
_formatCalculator = formatCalculator;
|
||||
_logger = logger;
|
||||
}
|
||||
@@ -145,6 +149,16 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport
|
||||
}
|
||||
else
|
||||
{
|
||||
if (downloadClientItem?.DownloadId.IsNotNullOrWhiteSpace() == true)
|
||||
{
|
||||
var trackedDownload = _trackedDownloadService.Find(downloadClientItem.DownloadId);
|
||||
|
||||
if (trackedDownload?.RemoteEpisode?.Release?.IndexerFlags != null)
|
||||
{
|
||||
localEpisode.IndexerFlags = trackedDownload.RemoteEpisode.Release.IndexerFlags;
|
||||
}
|
||||
}
|
||||
|
||||
localEpisode.CustomFormats = _formatCalculator.ParseCustomFormat(localEpisode);
|
||||
localEpisode.CustomFormatScore = localEpisode.Series.QualityProfile?.Value.CalculateCustomFormatScore(localEpisode.CustomFormats) ?? 0;
|
||||
|
||||
|
||||
@@ -215,7 +215,6 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Manual
|
||||
{
|
||||
DownloadClientItem downloadClientItem = null;
|
||||
Series series = null;
|
||||
TrackedDownload trackedDownload = null;
|
||||
|
||||
var directoryInfo = new DirectoryInfo(baseFolder);
|
||||
|
||||
@@ -237,7 +236,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Manual
|
||||
|
||||
if (downloadId.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
trackedDownload = _trackedDownloadService.Find(downloadId);
|
||||
var trackedDownload = _trackedDownloadService.Find(downloadId);
|
||||
downloadClientItem = trackedDownload.DownloadItem;
|
||||
|
||||
if (series == null)
|
||||
@@ -273,11 +272,6 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Manual
|
||||
var seriesFiles = _diskScanService.FilterPaths(rootFolder, _diskScanService.GetVideoFiles(baseFolder).ToList());
|
||||
var decisions = _importDecisionMaker.GetImportDecisions(seriesFiles, series, downloadClientItem, folderInfo, SceneSource(series, baseFolder), filterExistingFiles);
|
||||
|
||||
foreach (var decision in decisions)
|
||||
{
|
||||
decision.LocalEpisode.IndexerFlags = trackedDownload?.RemoteEpisode?.Release?.IndexerFlags ?? 0;
|
||||
}
|
||||
|
||||
return decisions.Select(decision => MapItem(decision, rootFolder, downloadId, directoryInfo.Name)).ToList();
|
||||
}
|
||||
|
||||
@@ -337,10 +331,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Manual
|
||||
|
||||
if (importDecisions.Any())
|
||||
{
|
||||
var importDecision = importDecisions.First();
|
||||
importDecision.LocalEpisode.IndexerFlags = trackedDownload?.RemoteEpisode?.Release?.IndexerFlags ?? 0;
|
||||
|
||||
return MapItem(importDecision, rootFolder, downloadId, null);
|
||||
return MapItem(importDecisions.First(), rootFolder, downloadId, null);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
@@ -24,6 +25,7 @@ namespace NzbDrone.Core.Notifications.Emby
|
||||
var path = "/Notifications/Admin";
|
||||
var request = BuildRequest(path, settings);
|
||||
request.Headers.ContentType = "application/json";
|
||||
request.LogHttpError = false;
|
||||
|
||||
request.SetContent(new
|
||||
{
|
||||
@@ -32,7 +34,21 @@ namespace NzbDrone.Core.Notifications.Emby
|
||||
ImageUrl = "https://raw.github.com/Sonarr/Sonarr/develop/Logo/64.png"
|
||||
}.ToJson());
|
||||
|
||||
ProcessRequest(request, settings);
|
||||
try
|
||||
{
|
||||
ProcessRequest(request, settings);
|
||||
}
|
||||
catch (HttpException e)
|
||||
{
|
||||
if (e.Response.StatusCode == HttpStatusCode.NotFound)
|
||||
{
|
||||
_logger.Warn("Unable to send notification to Emby. If you're using Jellyfin disable 'Send Notifications'");
|
||||
}
|
||||
else
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public HashSet<string> GetPaths(MediaBrowserSettings settings, Series series)
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace NzbDrone.Core.Notifications.Emby
|
||||
public MediaBrowserSettings()
|
||||
{
|
||||
Port = 8096;
|
||||
UpdateLibrary = true;
|
||||
}
|
||||
|
||||
[FieldDefinition(0, Label = "Host")]
|
||||
|
||||
Reference in New Issue
Block a user