コード例 #1
0
        public async Task <bool> LidarrSettings([FromBody] LidarrSettings settings)
        {
            var lidarr = await Save(settings);

            if (lidarr)
            {
                await OmbiQuartz.TriggerJob(nameof(ILidarrArtistSync), "DVR");
            }
            return(lidarr);
        }
コード例 #2
0
ファイル: TesterController.cs プロジェクト: sir-marv/Ombi
        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
                });
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: TesterController.cs プロジェクト: itzfk0/ombi
        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);
            }
        }
コード例 #5
0
ファイル: MusicSender.cs プロジェクト: jwor80/Ombi
        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"
            });
        }
コード例 #6
0
ファイル: MusicSender.cs プロジェクト: jwor80/Ombi
        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
            });
        }
コード例 #7
0
 private async Task <LidarrSettings> GetSettings()
 {
     return(_settings ?? (_settings = await _lidarrSettings.GetSettingsAsync()));
 }
コード例 #8
0
        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);
        }
コード例 #9
0
ファイル: SettingsController.cs プロジェクト: itzfk0/ombi
 public async Task <bool> LidarrSettings([FromBody] LidarrSettings settings)
 {
     return(await Save(settings));
 }
コード例 #10
0
 public async Task <IEnumerable <MetadataProfile> > GetMetadataProfiles([FromBody] LidarrSettings settings)
 {
     return(await _lidarrApi.GetMetadataProfile(settings.ApiKey, settings.FullUri));
 }
コード例 #11
0
 public async Task <IEnumerable <LidarrRootFolder> > GetRootFolders([FromBody] LidarrSettings settings)
 {
     return(await _lidarrApi.GetRootFolders(settings.ApiKey, settings.FullUri));
 }
コード例 #12
0
 public async Task <IEnumerable <LanguageProfiles> > GetLanguageProfiles([FromBody] LidarrSettings settings)
 {
     return(await _lidarrApi.GetLanguageProfile(settings.ApiKey, settings.FullUri));
 }