mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-23 06:45:19 -07:00
Update Plex Movie Sections
This commit is contained in:
parent
290c4e1f2e
commit
6bbd64e59a
3 changed files with 71 additions and 5 deletions
|
@ -22,23 +22,24 @@ namespace NzbDrone.Core.Notifications.Plex
|
||||||
|
|
||||||
public override void OnDownload(DownloadMessage message)
|
public override void OnDownload(DownloadMessage message)
|
||||||
{
|
{
|
||||||
UpdateIfEnabled(message.Series);
|
UpdateIfEnabled(message.Movie);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnMovieRename(Movie movie)
|
public override void OnMovieRename(Movie movie)
|
||||||
{
|
{
|
||||||
|
UpdateIfEnabled(movie);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnRename(Series series)
|
public override void OnRename(Series series)
|
||||||
{
|
{
|
||||||
UpdateIfEnabled(series);
|
//UpdateIfEnabled(movie);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateIfEnabled(Series series)
|
private void UpdateIfEnabled(Movie movie)
|
||||||
{
|
{
|
||||||
if (Settings.UpdateLibrary)
|
if (Settings.UpdateLibrary)
|
||||||
{
|
{
|
||||||
_plexServerService.UpdateLibrary(series, Settings);
|
_plexServerService.UpdateMovieSections(movie, Settings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ namespace NzbDrone.Core.Notifications.Plex
|
||||||
public interface IPlexServerProxy
|
public interface IPlexServerProxy
|
||||||
{
|
{
|
||||||
List<PlexSection> GetTvSections(PlexServerSettings settings);
|
List<PlexSection> GetTvSections(PlexServerSettings settings);
|
||||||
|
List<PlexSection> GetMovieSections(PlexServerSettings settings);
|
||||||
void Update(int sectionId, PlexServerSettings settings);
|
void Update(int sectionId, PlexServerSettings settings);
|
||||||
void UpdateSeries(int metadataId, PlexServerSettings settings);
|
void UpdateSeries(int metadataId, PlexServerSettings settings);
|
||||||
string Version(PlexServerSettings settings);
|
string Version(PlexServerSettings settings);
|
||||||
|
@ -66,6 +67,37 @@ namespace NzbDrone.Core.Notifications.Plex
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<PlexSection> GetMovieSections(PlexServerSettings settings)
|
||||||
|
{
|
||||||
|
var request = GetPlexServerRequest("library/sections", Method.GET, settings);
|
||||||
|
var client = GetPlexServerClient(settings);
|
||||||
|
var response = client.Execute(request);
|
||||||
|
|
||||||
|
_logger.Trace("Sections response: {0}", response.Content);
|
||||||
|
CheckForError(response, settings);
|
||||||
|
|
||||||
|
if (response.Content.Contains("_children"))
|
||||||
|
{
|
||||||
|
return Json.Deserialize<PlexMediaContainerLegacy>(response.Content)
|
||||||
|
.Sections
|
||||||
|
.Where(d => d.Type == "movie")
|
||||||
|
.Select(s => new PlexSection
|
||||||
|
{
|
||||||
|
Id = s.Id,
|
||||||
|
Language = s.Language,
|
||||||
|
Locations = s.Locations,
|
||||||
|
Type = s.Type
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Json.Deserialize<PlexResponse<PlexSectionsContainer>>(response.Content)
|
||||||
|
.MediaContainer
|
||||||
|
.Sections
|
||||||
|
.Where(d => d.Type == "movie")
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
public void Update(int sectionId, PlexServerSettings settings)
|
public void Update(int sectionId, PlexServerSettings settings)
|
||||||
{
|
{
|
||||||
var resource = string.Format("library/sections/{0}/refresh", sectionId);
|
var resource = string.Format("library/sections/{0}/refresh", sectionId);
|
||||||
|
|
|
@ -14,6 +14,7 @@ namespace NzbDrone.Core.Notifications.Plex
|
||||||
public interface IPlexServerService
|
public interface IPlexServerService
|
||||||
{
|
{
|
||||||
void UpdateLibrary(Series series, PlexServerSettings settings);
|
void UpdateLibrary(Series series, PlexServerSettings settings);
|
||||||
|
void UpdateMovieSections(Movie movie, PlexServerSettings settings);
|
||||||
ValidationFailure Test(PlexServerSettings settings);
|
ValidationFailure Test(PlexServerSettings settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,11 +63,43 @@ namespace NzbDrone.Core.Notifications.Plex
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void UpdateMovieSections(Movie movie, PlexServerSettings settings)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_logger.Debug("Sending Update Request to Plex Server");
|
||||||
|
|
||||||
|
var version = _versionCache.Get(settings.Host, () => GetVersion(settings), TimeSpan.FromHours(2));
|
||||||
|
ValidateVersion(version);
|
||||||
|
|
||||||
|
var sections = GetSections(settings);
|
||||||
|
var partialUpdates = _partialUpdateCache.Get(settings.Host, () => PartialUpdatesAllowed(settings, version), TimeSpan.FromHours(2));
|
||||||
|
|
||||||
|
// TODO: Investiate partial updates later, for now just update all movie sections...
|
||||||
|
|
||||||
|
//if (partialUpdates)
|
||||||
|
//{
|
||||||
|
// UpdatePartialSection(series, sections, settings);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
sections.ForEach(s => UpdateSection(s.Id, settings));
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.Warn(ex, "Failed to Update Plex host: " + settings.Host);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private List<PlexSection> GetSections(PlexServerSettings settings)
|
private List<PlexSection> GetSections(PlexServerSettings settings)
|
||||||
{
|
{
|
||||||
_logger.Debug("Getting sections from Plex host: {0}", settings.Host);
|
_logger.Debug("Getting sections from Plex host: {0}", settings.Host);
|
||||||
|
|
||||||
return _plexServerProxy.GetTvSections(settings).ToList();
|
return _plexServerProxy.GetMovieSections(settings).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool PartialUpdatesAllowed(PlexServerSettings settings, Version version)
|
private bool PartialUpdatesAllowed(PlexServerSettings settings, Version version)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue