Skip to content

Commit

Permalink
Merge pull request #4 from tidusjar/develop
Browse files Browse the repository at this point in the history
Getting develop up to date
  • Loading branch information
anojht authored Apr 10, 2018
2 parents bf47d4e + 7f12ab5 commit 3de5160
Show file tree
Hide file tree
Showing 27 changed files with 1,421 additions and 103 deletions.
63 changes: 60 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,62 @@
# Changelog

## (unreleased)

### **New Features**

- Added the ability to send newsletter out to users that are not in Ombi. [Jamie]

- Added the ability to turn off TV or Movies from the newsletter. [Jamie]

- Update about.component.html. [Jamie]

- Update about.component.html. [Jamie]

- Added random versioning prefix to the translations so the users don't have to clear the cache. [Jamie]

- Added more information to the about page. [Jamie]

- Changed let to const to adhere to linting. [Anojh]

- Update _Layout.cshtml. [goldenpipes]

- Update _Layout.cshtml. [goldenpipes]

- Changed the TV Request API. We now only require the TvDbId and the seasons and episodes that you want to request. This should make integration regarding TV a lot easier. [Jamie]

### **Fixes**

- Emby improvments on the way we sync/cache the data. [Jamie]

- Memory improvements. [Jamie]

- Made some improvements to the Sonarr Sync job #2127. [Jamie]

- Turn off Server GC to hopefully help with #2127. [Jamie Rees]

- Fixed #2109. [Jamie]

- Fixed #2101. [Jamie]

- Fixed #2105. [Jamie]

- Fixed some styling on the issues detail page. [Jamie]

- Fixed #2116. [Jamie]

- Limit the amount of FileSystemWatchers being spawned. [Jamie]

- Fixed the issue where Emby connect users could not log in #2115. [Jamie]

- Had to update some base styles since currently some styling does not look right... [Anojh]

- Adding wrappers and classes for LC and toggling active style for UI elements. [Anojh]

- Fixed a little bug in the newsletter. [Jamie]

- Fixed the issue where movies were not appearing in the newsletter for users with Emby #2111. [Jamie]


## v3.0.3111 (2018-03-27)

### **New Features**
Expand Down Expand Up @@ -732,7 +789,7 @@

- Switch to use a single HTTPClient rather than a new one every request !dev. [tidusjar]

- Fix non-admin rights (#1820) [Rob Gökemeijer]
- Fix non-admin rights (#1820) [Rob Gökemeijer]

- Fix duplicated "Requests" element ID on new Issues link (#1817) [Shoghi Cervantes]

Expand Down Expand Up @@ -2582,7 +2639,7 @@

- WIP hide tv request options based on admin settings. [Matt McHughes]

- Set meta charset to be utf-8. [Madeleine Schönemann]
- Set meta charset to be utf-8. [Madeleine Schönemann]

- F#552: updated labels text. [Jim MacKenize]

Expand Down Expand Up @@ -2939,7 +2996,7 @@

- Fixed issues from the merge. [tidusjar]

- Stupid &$(*£ merge. [tidusjar]
- Stupid &$(*£ merge. [tidusjar]

- Angular. [tidusjar]

Expand Down
2 changes: 1 addition & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: 3.0.{build}
configuration: Release
os: Visual Studio 2017
environment:
nodejs_version: "7.8.0"
nodejs_version: "Current"

install:
# Get the latest stable version of Node.js or io.js
Expand Down
4 changes: 2 additions & 2 deletions src/Ombi.Core.Tests/Rule/Search/EmbyAvailabilityRuleTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public void Setup()
[Test]
public async Task Movie_ShouldBe_Available_WhenFoundInEmby()
{
ContextMock.Setup(x => x.Get(It.IsAny<string>())).ReturnsAsync(new EmbyContent
ContextMock.Setup(x => x.GetByTheMovieDbId(It.IsAny<string>())).ReturnsAsync(new EmbyContent
{
ProviderId = "123"
});
Expand All @@ -39,7 +39,7 @@ public async Task Movie_ShouldBe_Available_WhenFoundInEmby()
[Test]
public async Task Movie_ShouldBe_NotAvailable_WhenNotFoundInEmby()
{
ContextMock.Setup(x => x.Get(It.IsAny<string>())).Returns(Task.FromResult(default(EmbyContent)));
ContextMock.Setup(x => x.GetByTheMovieDbId(It.IsAny<string>())).Returns(Task.FromResult(default(EmbyContent)));
var search = new SearchMovieViewModel();
var result = await Rule.Execute(search);

Expand Down
8 changes: 6 additions & 2 deletions src/Ombi.Core/Engine/RecentlyAddedEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,9 @@ private static void TransformEmbyMovies(IQueryable<EmbyContent> embyMovies, Hash
model.Add(new RecentlyAddedMovieModel
{
Id = emby.Id,
ImdbId = emby.ProviderId,
ImdbId = emby.ImdbId,
TheMovieDbId = emby.TheMovieDbId,
TvDbId = emby.TvDbId,
AddedAt = emby.AddedAt,
Title = emby.Title,
});
Expand Down Expand Up @@ -211,7 +213,9 @@ private static void TransformEmbyShows(IQueryable<EmbyContent> embyShows, HashSe
model.Add(new RecentlyAddedTvModel
{
Id = emby.Id,
ImdbId = emby.ProviderId,
ImdbId = emby.ImdbId,
TvDbId = emby.TvDbId,
TheMovieDbId = emby.TheMovieDbId,
AddedAt = emby.AddedAt,
Title = emby.Title,
EpisodeNumber = episode.EpisodeNumber,
Expand Down
6 changes: 3 additions & 3 deletions src/Ombi.Core/Rule/Rules/Search/EmbyAvailabilityRule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,20 @@ public async Task<RuleResult> Execute(SearchViewModel obj)
EmbyContent item = null;
if (obj.ImdbId.HasValue())
{
item = await EmbyContentRepository.Get(obj.ImdbId);
item = await EmbyContentRepository.GetByImdbId(obj.ImdbId);
}
if (item == null)
{
if (obj.TheMovieDbId.HasValue())
{
item = await EmbyContentRepository.Get(obj.TheMovieDbId);
item = await EmbyContentRepository.GetByTheMovieDbId(obj.TheMovieDbId);
}

if (item == null)
{
if (obj.TheTvDbId.HasValue())
{
item = await EmbyContentRepository.Get(obj.TheTvDbId);
item = await EmbyContentRepository.GetByTvDbId(obj.TheTvDbId);
}
}
}
Expand Down
36 changes: 34 additions & 2 deletions src/Ombi.Schedule/JobSetup.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Hangfire;
using System;
using Hangfire;
using Ombi.Core.Settings;
using Ombi.Schedule.Jobs;
using Ombi.Schedule.Jobs.Couchpotato;
Expand All @@ -12,7 +13,7 @@

namespace Ombi.Schedule
{
public class JobSetup : IJobSetup
public class JobSetup : IJobSetup, IDisposable
{
public JobSetup(IPlexContentSync plexContentSync, IRadarrSync radarrSync,
IOmbiAutomaticUpdater updater, IEmbyContentSync embySync, IPlexUserImporter userImporter,
Expand Down Expand Up @@ -65,5 +66,36 @@ public void Setup()
RecurringJob.AddOrUpdate(() => _plexUserImporter.Start(), JobSettingsHelper.UserImporter(s));
RecurringJob.AddOrUpdate(() => _newsletter.Start(), JobSettingsHelper.Newsletter(s));
}


private bool _disposed;
protected virtual void Dispose(bool disposing)
{
if (_disposed)
return;

if (disposing)
{
_plexContentSync?.Dispose();
_radarrSync?.Dispose();
_updater?.Dispose();
_plexUserImporter?.Dispose();
_embyContentSync?.Dispose();
_embyUserImporter?.Dispose();
_sonarrSync?.Dispose();
_cpCache?.Dispose();
_srSync?.Dispose();
_jobSettings?.Dispose();
_refreshMetadata?.Dispose();
_newsletter?.Dispose();
}
_disposed = true;
}

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
}
27 changes: 24 additions & 3 deletions src/Ombi.Schedule/Jobs/Emby/EmbyAvaliabilityChecker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,16 @@ private async Task ProcessMovies()

foreach (var movie in movies)
{
var embyContent = await _repo.Get(movie.ImdbId);
EmbyContent embyContent = null;
if (movie.TheMovieDbId > 0)
{
embyContent = await _repo.GetByTheMovieDbId(movie.TheMovieDbId.ToString());
}
else if(movie.ImdbId.HasValue())
{
embyContent = await _repo.GetByImdbId(movie.ImdbId);
}

if (embyContent == null)
{
// We don't have this yet
Expand Down Expand Up @@ -112,8 +121,20 @@ private async Task ProcessTv()

foreach (var child in tv)
{
var tvDbId = child.ParentRequest.TvDbId;
var seriesEpisodes = embyEpisodes.Where(x => x.Series.ProviderId == tvDbId.ToString());
IQueryable<EmbyEpisode> seriesEpisodes;
if (child.ParentRequest.TvDbId > 0)
{
seriesEpisodes = embyEpisodes.Where(x => x.Series.TvDbId == child.ParentRequest.TvDbId.ToString());
}
else if(child.ParentRequest.ImdbId.HasValue())
{
seriesEpisodes = embyEpisodes.Where(x => x.Series.ImdbId == child.ParentRequest.ImdbId);
}
else
{
continue;
}

foreach (var season in child.SeasonRequests)
{
foreach (var episode in season.Episodes)
Expand Down
30 changes: 20 additions & 10 deletions src/Ombi.Schedule/Jobs/Emby/EmbyContentSync.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,21 @@ public EmbyContentSync(ISettingsService<EmbySettings> settings, IEmbyApi api, IL

public async Task Start()
{
var embySettings = await _settings.GetSettingsAsync();
var embySettings = await _settings.GetSettingsAsync();
if (!embySettings.Enable)
return;

foreach (var server in embySettings.Servers)
await StartServerCache(server);
{
try
{
await StartServerCache(server);
}
catch (Exception e)
{
_logger.LogError(e, "Exception when caching Emby for server {0}", server.Name);
}
}

// Episodes
BackgroundJob.Enqueue(() => _episodeSync.Start());
Expand All @@ -55,8 +64,11 @@ private async Task StartServerCache(EmbyServers server)
if (!ValidateSettings(server))
return;

await _repo.ExecuteSql("DELETE FROM EmbyEpisode");
await _repo.ExecuteSql("DELETE FROM EmbyContent");

var movies = await _api.GetAllMovies(server.ApiKey, server.AdministratorId, server.FullUri);
var mediaToAdd = new List<EmbyContent>();
var mediaToAdd = new HashSet<EmbyContent>();
foreach (var movie in movies.Items)
{
if (movie.Type.Equals("boxset", StringComparison.CurrentCultureIgnoreCase))
Expand Down Expand Up @@ -96,7 +108,9 @@ private async Task StartServerCache(EmbyServers server)
if (existingTv == null)
mediaToAdd.Add(new EmbyContent
{
ProviderId = tvInfo.ProviderIds.Tvdb,
TvDbId = tvInfo.ProviderIds?.Tvdb,
ImdbId = tvInfo.ProviderIds?.Imdb,
TheMovieDbId = tvInfo.ProviderIds?.Tmdb,
Title = tvInfo.Name,
Type = EmbyMediaType.Series,
EmbyId = tvShow.Id,
Expand All @@ -110,18 +124,14 @@ private async Task StartServerCache(EmbyServers server)

private async Task ProcessMovies(MovieInformation movieInfo, ICollection<EmbyContent> content)
{
if (string.IsNullOrEmpty(movieInfo.ProviderIds.Imdb))
{
Log.Error("Provider Id on movie {0} is null", movieInfo.Name);
return;
}
// Check if it exists
var existingMovie = await _repo.GetByEmbyId(movieInfo.Id);

if (existingMovie == null)
content.Add(new EmbyContent
{
ProviderId = movieInfo.ProviderIds.Imdb,
ImdbId = movieInfo.ProviderIds.Imdb,
TheMovieDbId = movieInfo.ProviderIds?.Tmdb,
Title = movieInfo.Name,
Type = EmbyMediaType.Movie,
EmbyId = movieInfo.Id,
Expand Down
12 changes: 7 additions & 5 deletions src/Ombi.Schedule/Jobs/Emby/EmbyEpisodeSync.cs
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,10 @@ private async Task CacheEpisodes(EmbyServers server)
}

var epInfo = await _api.GetEpisodeInformation(ep.Id, server.ApiKey, server.AdministratorId, server.FullUri);
if (epInfo?.ProviderIds?.Tvdb == null)
{
continue;
}
//if (epInfo?.ProviderIds?.Tvdb == null)
//{
// continue;
//}

// Let's make sure we have the parent request, stop those pesky forign key errors,
// Damn me having data integrity
Expand All @@ -109,7 +109,9 @@ private async Task CacheEpisodes(EmbyServers server)
EpisodeNumber = ep.IndexNumber,
SeasonNumber = ep.ParentIndexNumber,
ParentId = ep.SeriesId,
ProviderId = epInfo.ProviderIds.Tvdb,
TvDbId = epInfo.ProviderIds.Tvdb,
TheMovieDbId = epInfo.ProviderIds.Tmdb,
ImdbId = epInfo.ProviderIds.Imdb,
Title = ep.Name,
AddedAt = DateTime.UtcNow
});
Expand Down
Loading

0 comments on commit 3de5160

Please sign in to comment.