public async Task <bool> LidarrSettings([FromBody] LidarrSettings settings) { var lidarr = await Save(settings); if (lidarr) { await OmbiQuartz.TriggerJob(nameof(ILidarrArtistSync), "DVR"); } return(lidarr); }
public async Task <TesterResultModel> LidarrTest([FromBody] LidarrSettings settings) { try { var status = await LidarrApi.Status(settings.ApiKey, settings.FullUri); return(new TesterResultModel { IsValid = status?.urlBase == settings.SubDir || string.IsNullOrEmpty(status.urlBase) && string.IsNullOrEmpty(settings.SubDir), ExpectedSubDir = status?.urlBase }); } catch (Exception e) { Log.LogError(LoggingEvents.Api, e, "Could not test Lidarr"); return(new TesterResultModel { IsValid = false }); } }
private async Task <SearchAlbumViewModel> MapIntoAlbumVm(AlbumLookup a, LidarrSettings settings) { var vm = new SearchAlbumViewModel { ForeignAlbumId = a.foreignAlbumId, Monitored = a.monitored, Rating = a.ratings?.value ?? 0m, ReleaseDate = a.releaseDate, Title = a.title, Disk = a.images?.FirstOrDefault(x => x.coverType.Equals("disc"))?.url?.Replace("http", "https"), Genres = a.genres }; if (a.artistId > 0) { //TODO THEY HAVE FIXED THIS IN DEV // The JSON is different for some stupid reason // Need to lookup the artist now and all the images -.-" var artist = await _lidarrApi.GetArtist(a.artistId, settings.ApiKey, settings.FullUri); vm.ArtistName = artist.artistName; vm.ForeignArtistId = artist.foreignArtistId; } else { vm.ForeignArtistId = a.artist?.foreignArtistId; vm.ArtistName = a.artist?.artistName; } vm.Cover = a.images?.FirstOrDefault(x => x.coverType.Equals("cover"))?.url?.Replace("http", "https"); if (vm.Cover.IsNullOrEmpty()) { vm.Cover = a.remoteCover; } await Rules.StartSpecificRules(vm, SpecificRules.LidarrAlbum); await RunSearchRules(vm); return(vm); }
public async Task <bool> LidarrTest([FromBody] LidarrSettings settings) { try { var status = await LidarrApi.Status(settings.ApiKey, settings.FullUri); if (status != null & status?.version.HasValue() ?? false) { return(true); } else { return(false); } } catch (Exception e) { Log.LogError(LoggingEvents.Api, e, "Could not test Mobile Notifications"); return(false); } }
private async Task <SenderResult> SendToLidarr(AlbumRequest model, LidarrSettings settings) { var qualityToUse = int.Parse(settings.DefaultQualityProfile); //if (model.QualityOverride > 0) //{ // qualityToUse = model.QualityOverride; //} var rootFolderPath = /*model.RootPathOverride <= 0 ?*/ settings.DefaultRootPath /*: await RadarrRootPath(model.RootPathOverride, settings)*/; // Need to get the artist var artist = await _lidarrApi.GetArtistByForeignId(model.ForeignArtistId, settings.ApiKey, settings.FullUri); if (artist == null || artist.id <= 0) { // Create artist var newArtist = new ArtistAdd { foreignArtistId = model.ForeignArtistId, addOptions = new Addoptions { monitored = true, searchForMissingAlbums = false, selectedOption = 6, // None AlbumsToMonitor = new[] { model.ForeignAlbumId } }, added = DateTime.Now, monitored = true, albumFolder = settings.AlbumFolder, artistName = model.ArtistName, cleanName = model.ArtistName.ToLowerInvariant().RemoveSpaces(), images = new Image[] { }, languageProfileId = settings.LanguageProfileId, links = new Link[] {}, metadataProfileId = settings.MetadataProfileId, qualityProfileId = qualityToUse, rootFolderPath = rootFolderPath, }; var result = await _lidarrApi.AddArtist(newArtist, settings.ApiKey, settings.FullUri); if (result != null && result.id > 0) { // Search for it if (!settings.AddOnly) { // get the album var album = await _lidarrApi.GetAllAlbumsByArtistId(result.id, settings.ApiKey, settings.FullUri); var albumToSearch = album.FirstOrDefault(x => x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase)); var maxRetryCount = 10; // 5 seconds var currentRetry = 0; while (albumToSearch != null) { if (currentRetry >= maxRetryCount) { break; } currentRetry++; await Task.Delay(500); album = await _lidarrApi.GetAllAlbumsByArtistId(result.id, settings.ApiKey, settings.FullUri); albumToSearch = album.FirstOrDefault(x => x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase)); } if (albumToSearch != null) { await _lidarrApi.AlbumSearch(new[] { albumToSearch.id }, settings.ApiKey, settings.FullUri); } } return(new SenderResult { Message = "Album has been requested!", Sent = true, Success = true }); } } else { SenderResult result = await SetupAlbum(model, artist, settings); return(result); } return(new SenderResult { Success = false, Sent = false, Message = "Album is already monitored" }); }
private async Task <SenderResult> SetupAlbum(AlbumRequest model, ArtistResult artist, LidarrSettings settings) { // Get the album id var albums = await _lidarrApi.GetAllAlbumsByArtistId(artist.id, settings.ApiKey, settings.FullUri); var album = albums.FirstOrDefault(x => x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase)); var maxRetryCount = 10; // 5 seconds var currentRetry = 0; while (!albums.Any() || album == null) { if (currentRetry >= maxRetryCount) { break; } currentRetry++; await Task.Delay(500); albums = await _lidarrApi.GetAllAlbumsByArtistId(artist.id, settings.ApiKey, settings.FullUri); album = albums.FirstOrDefault(x => x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase)); } // Get the album we want. if (album == null) { return(new SenderResult { Message = "Could not find album in Lidarr", Sent = false, Success = false }); } var result = await _lidarrApi.MontiorAlbum(album.id, settings.ApiKey, settings.FullUri); if (!settings.AddOnly) { await _lidarrApi.AlbumSearch(new[] { result.id }, settings.ApiKey, settings.FullUri); } if (result.monitored) { return(new SenderResult { Message = "Album has been requested!", Sent = true, Success = true }); } return(new SenderResult { Message = "Could not set album to monitored", Sent = false, Success = false }); }
private async Task <LidarrSettings> GetSettings() { return(_settings ?? (_settings = await _lidarrSettings.GetSettingsAsync())); }
private async Task <SearchAlbumViewModel> MapIntoAlbumVm(Album a, string artistId, string artistName, LidarrSettings settings) { var fullAlbum = await _lidarrApi.GetAlbumByForeignId(a.Id, settings.ApiKey, settings.FullUri); var vm = new SearchAlbumViewModel { ForeignAlbumId = a.Id, Monitored = fullAlbum.monitored, Rating = fullAlbum.ratings?.value ?? 0m, ReleaseDate = fullAlbum.releaseDate, Title = a.Title, Disk = fullAlbum.images?.FirstOrDefault(x => x.coverType.Equals("disc"))?.url, ForeignArtistId = artistId, ArtistName = artistName, Cover = fullAlbum.images?.FirstOrDefault(x => x.coverType.Equals("cover"))?.url }; if (vm.Cover.IsNullOrEmpty()) { vm.Cover = fullAlbum.remoteCover; } await Rules.StartSpecificRules(vm, SpecificRules.LidarrAlbum); await RunSearchRules(vm); return(vm); }
public async Task <bool> LidarrSettings([FromBody] LidarrSettings settings) { return(await Save(settings)); }
public async Task <IEnumerable <MetadataProfile> > GetMetadataProfiles([FromBody] LidarrSettings settings) { return(await _lidarrApi.GetMetadataProfile(settings.ApiKey, settings.FullUri)); }
public async Task <IEnumerable <LidarrRootFolder> > GetRootFolders([FromBody] LidarrSettings settings) { return(await _lidarrApi.GetRootFolders(settings.ApiKey, settings.FullUri)); }
public async Task <IEnumerable <LanguageProfiles> > GetLanguageProfiles([FromBody] LidarrSettings settings) { return(await _lidarrApi.GetLanguageProfile(settings.ApiKey, settings.FullUri)); }