Fixed a issue where the Plex Content Sync wouldn't pick up new shows #2276 #2244 #2261

pull/2277/head
Jamie 6 years ago
parent c03c11c3e7
commit b323db1864

@ -119,7 +119,7 @@ namespace Ombi.Schedule.Jobs.Plex
{
try
{
Logger.LogInformation("Starting to cache the content on server {0}", servers.Name);
Logger.LogInformation("Starting to cache the content on server {0}", servers.Name);
if (recentlyAddedSearch)
{
@ -162,8 +162,10 @@ namespace Ombi.Schedule.Jobs.Plex
if (content.viewGroup.Equals(PlexMediaType.Episode.ToString(), StringComparison.CurrentCultureIgnoreCase))
{
Logger.LogInformation("Found some episodes, this must be a recently added sync");
var count = 0;
foreach (var epInfo in content.Metadata)
{
count++;
var grandParentKey = epInfo.grandparentRatingKey;
// Lookup the rating key
var showMetadata = await PlexApi.GetMetadata(servers.PlexAuthToken, servers.FullUri, grandParentKey);
@ -174,18 +176,59 @@ namespace Ombi.Schedule.Jobs.Plex
}
await ProcessTvShow(servers, show, contentToAdd, recentlyAddedSearch, processedContent);
if (contentToAdd.Any())
{
await Repo.AddRange(contentToAdd, false);
if (recentlyAddedSearch)
{
foreach (var plexServerContent in contentToAdd)
{
processedContent.Add(plexServerContent.Id);
}
}
contentToAdd.Clear();
}
if (count > 200)
{
await Repo.SaveChangesAsync();
}
}
// Save just to make sure we don't leave anything hanging
await Repo.SaveChangesAsync();
await EpisodeSync.ProcessEpsiodes(content.Metadata, allEps);
}
if (content.viewGroup.Equals(PlexMediaType.Show.ToString(), StringComparison.CurrentCultureIgnoreCase))
{
// Process Shows
Logger.LogInformation("Processing TV Shows");
var count = 0;
foreach (var show in content.Metadata ?? new Metadata[] { })
{
count++;
await ProcessTvShow(servers, show, contentToAdd, recentlyAddedSearch, processedContent);
if (contentToAdd.Any())
{
await Repo.AddRange(contentToAdd, false);
if (recentlyAddedSearch)
{
foreach (var plexServerContent in contentToAdd)
{
processedContent.Add(plexServerContent.Id);
}
}
contentToAdd.Clear();
}
if (count > 200)
{
await Repo.SaveChangesAsync();
}
}
await Repo.SaveChangesAsync();
}
if (content.viewGroup.Equals(PlexMediaType.Movie.ToString(), StringComparison.CurrentCultureIgnoreCase))
{
@ -464,21 +507,6 @@ namespace Ombi.Schedule.Jobs.Plex
show.title);
}
}
if (contentToAdd.Count > 500 || recentlyAdded)
{
await Repo.AddRange(contentToAdd);
foreach (var plexServerContent in contentToAdd)
{
contentProcessed.Add(plexServerContent.Id);
}
contentToAdd.Clear();
}
if (contentToAdd.Any())
{
await Repo.AddRange(contentToAdd);
}
}
/// <summary>

@ -14,7 +14,7 @@ namespace Ombi.Store.Repository
Task<T> Find(object key);
IQueryable<T> GetAll();
Task<T> FirstOrDefaultAsync(Expression<Func<T, bool>> predicate);
Task AddRange(IEnumerable<T> content);
Task AddRange(IEnumerable<T> content, bool save = true);
Task<T> Add(T content);
Task DeleteRange(IEnumerable<T> req);
Task Delete(T request);

@ -35,10 +35,13 @@ namespace Ombi.Store.Repository
return await _db.FirstOrDefaultAsync(predicate);
}
public async Task AddRange(IEnumerable<T> content)
public async Task AddRange(IEnumerable<T> content, bool save = true)
{
_db.AddRange(content);
await _ctx.SaveChangesAsync();
if (save)
{
await _ctx.SaveChangesAsync();
}
}
public async Task<T> Add(T content)

Loading…
Cancel
Save