public async Task <MovieSenderResult> Send(RequestedModel model, string qualityId = "") { var cpSettings = await CouchPotatoSettings.GetSettingsAsync(); var watcherSettings = await WatcherSettings.GetSettingsAsync(); var radarrSettings = await RadarrSettings.GetSettingsAsync(); if (cpSettings.Enabled) { return(SendToCp(model, cpSettings, string.IsNullOrEmpty(qualityId) ? cpSettings.ProfileId : qualityId)); } if (watcherSettings.Enabled) { return(SendToWatcher(model, watcherSettings)); } if (radarrSettings.Enabled) { return(SendToRadarr(model, radarrSettings)); } return(new MovieSenderResult { Result = false, MovieSendingEnabled = false }); }
public async Task <IEnumerable <RadarrRootFolder> > GetRootFolders() { var settings = await RadarrSettings.GetSettingsAsync(); if (settings.Enabled) { return(await RadarrApi.GetRootFolders(settings.ApiKey, settings.FullUri)); } return(null); }
public async Task CacheContent() { await SemaphoreSlim.WaitAsync(); try { var settings = await RadarrSettings.GetSettingsAsync(); if (settings.Enabled) { try { var movies = await RadarrApi.GetMovies(settings.ApiKey, settings.FullUri); if (movies != null) { // Let's remove the old cached data await _ctx.Database.ExecuteSqlCommandAsync("DELETE FROM RadarrCache"); var movieIds = new List <RadarrCache>(); foreach (var m in movies) { if (m.tmdbId > 0) { movieIds.Add(new RadarrCache { TheMovieDbId = m.tmdbId, HasFile = m.hasFile }); } else { Logger.LogError("TMDBId is not > 0 for movie {0}", m.title); } } await _ctx.RadarrCache.AddRangeAsync(movieIds); await _ctx.SaveChangesAsync(); } } catch (System.Exception ex) { Logger.LogError(LoggingEvents.Cacher, ex, "Failed caching queued items from Radarr"); } } } catch (Exception) { Logger.LogInformation(LoggingEvents.RadarrCacher, "Radarr is not setup, cannot cache episodes"); } finally { SemaphoreSlim.Release(); } }
public async Task <IEnumerable <RadarrRootFolder> > GetRootFolders() { return(await Cache.GetOrAdd(CacheKeys.RadarrRootProfiles, async() => { var settings = await RadarrSettings.GetSettingsAsync(); if (settings.Enabled) { return await RadarrApi.GetRootFolders(settings.ApiKey, settings.FullUri); } return null; }, DateTime.Now.AddHours(1))); }
private async Task <Response> SaveCouchPotato() { var couchPotatoSettings = this.Bind <CouchPotatoSettings>(); var valid = this.Validate(couchPotatoSettings); if (!valid.IsValid) { return(Response.AsJson(valid.SendJsonError())); } var watcherSettings = await WatcherSettings.GetSettingsAsync(); if (watcherSettings.Enabled) { return (Response.AsJson(new JsonResponseModel { Result = false, Message = "Cannot have Watcher and CouchPotato both enabled." })); } var radarrSettings = await RadarrSettings.GetSettingsAsync(); if (radarrSettings.Enabled) { return (Response.AsJson(new JsonResponseModel { Result = false, Message = "Cannot have Radarr and CouchPotato both enabled." })); } couchPotatoSettings.ApiKey = couchPotatoSettings.ApiKey.Trim(); var result = await CpService.SaveSettingsAsync(couchPotatoSettings); return(Response.AsJson(result ? new JsonResponseModel { Result = true, Message = "Successfully Updated the Settings for CouchPotato!" } : new JsonResponseModel { Result = false, Message = "Could not update the settings, take a look at the logs." })); }
public async Task <SenderResult> Send(MovieRequests model) { var cpSettings = await CouchPotatoSettings.GetSettingsAsync(); //var watcherSettings = await WatcherSettings.GetSettingsAsync(); var radarrSettings = await RadarrSettings.GetSettingsAsync(); if (radarrSettings.Enabled) { return(await SendToRadarr(model, radarrSettings)); } var dogSettings = await DogNzbSettings.GetSettingsAsync(); if (dogSettings.Enabled) { await SendToDogNzb(model, dogSettings); return(new SenderResult { Success = true, Sent = true, }); } if (cpSettings.Enabled) { return(await SendToCp(model, cpSettings, cpSettings.DefaultProfileId)); } //if (watcherSettings.Enabled) //{ // return SendToWatcher(model, watcherSettings); //} return(new SenderResult { Success = true, Sent = false, }); }
public async Task <SenderResult> Send(MovieRequests model) { try { var cpSettings = await CouchPotatoSettings.GetSettingsAsync(); //var watcherSettings = await WatcherSettings.GetSettingsAsync(); var radarrSettings = await RadarrSettings.GetSettingsAsync(); if (radarrSettings.Enabled) { return(await SendToRadarr(model, radarrSettings)); } var dogSettings = await DogNzbSettings.GetSettingsAsync(); if (dogSettings.Enabled) { await SendToDogNzb(model, dogSettings); return(new SenderResult { Success = true, Sent = true, }); } if (cpSettings.Enabled) { return(await SendToCp(model, cpSettings, cpSettings.DefaultProfileId)); } } catch (Exception e) { Log.LogError(e, "Error when seing movie to DVR app, added to the request queue"); // Check if already in request quee var existingQueue = await _requestQueuRepository.FirstOrDefaultAsync(x => x.RequestId == model.Id); if (existingQueue != null) { existingQueue.RetryCount++; existingQueue.Error = e.Message; await _requestQueuRepository.SaveChangesAsync(); } else { await _requestQueuRepository.Add(new RequestQueue { Dts = DateTime.UtcNow, Error = e.Message, RequestId = model.Id, Type = RequestType.Movie, RetryCount = 0 }); _notificationHelper.Notify(model, NotificationType.ItemAddedToFaultQueue); } } return(new SenderResult { Success = true, Sent = false, }); }
public async Task Execute(IJobExecutionContext job) { await SemaphoreSlim.WaitAsync(); try { var settings = await RadarrSettings.GetSettingsAsync(); if (settings.Enabled) { try { var movies = await RadarrApi.GetMovies(settings.ApiKey, settings.FullUri); if (movies != null) { var strat = _ctx.Database.CreateExecutionStrategy(); await strat.ExecuteAsync(async() => { // Let's remove the old cached data using (var tran = await _ctx.Database.BeginTransactionAsync()) { await _ctx.Database.ExecuteSqlRawAsync("DELETE FROM RadarrCache"); tran.Commit(); } }); var movieIds = new List <RadarrCache>(); foreach (var m in movies) { if (m.monitored || m.hasFile) { if (m.tmdbId > 0) { movieIds.Add(new RadarrCache { TheMovieDbId = m.tmdbId, HasFile = m.hasFile }); } else { Logger.LogError("TMDBId is not > 0 for movie {0}", m.title); } } } strat = _ctx.Database.CreateExecutionStrategy(); await strat.ExecuteAsync(async() => { using (var tran = await _ctx.Database.BeginTransactionAsync()) { await _ctx.RadarrCache.AddRangeAsync(movieIds); await _ctx.SaveChangesAsync(); tran.Commit(); } }); } await OmbiQuartz.TriggerJob(nameof(IArrAvailabilityChecker), "DVR"); } catch (System.Exception ex) { Logger.LogError(LoggingEvents.Cacher, ex, "Failed caching queued items from Radarr"); } } } catch (Exception) { Logger.LogInformation(LoggingEvents.RadarrCacher, "Radarr is not setup, cannot cache episodes"); } finally { SemaphoreSlim.Release(); } }
private async Task <Negotiator> Radarr() { var settings = await RadarrSettings.GetSettingsAsync(); return(View["Radarr", settings]); }