private Option <EpisodeMapping> GetTvDbEpisodeMapping(int tvDbEpisodeIndex,
                                                              EpisodeGroupMapping episodeGroupMapping)
        {
            var episodeMapping =
                episodeGroupMapping.EpisodeMappings?.FirstOrDefault(m => m.TvDbEpisodeIndex == tvDbEpisodeIndex);

            return(episodeMapping);
        }
        public OptionAsync <AniDbEpisodeData> MapTvDbEpisodeAsync(int tvDbEpisodeIndex,
                                                                  EpisodeGroupMapping episodeGroupMapping, int aniDbSeriesId)
        {
            var episodeMapping = this.GetTvDbEpisodeMapping(tvDbEpisodeIndex, episodeGroupMapping);

            var aniDbEpisodeIndex =
                this.GetAniDbEpisodeIndex(tvDbEpisodeIndex, episodeGroupMapping.TvDbEpisodeIndexOffset,
                                          episodeMapping);

            return(this.GetAniDbEpisodeAsync(aniDbSeriesId, episodeGroupMapping.AniDbSeasonIndex, aniDbEpisodeIndex)
                   .Map(aniDbEpisodeData =>
            {
                this.log.Debug(
                    $"Found mapped AniDb episode: {aniDbEpisodeData}");

                return aniDbEpisodeData;
            }));
        }
        public OptionAsync <TvDbEpisodeData> MapAniDbEpisodeAsync(int aniDbEpisodeIndex,
                                                                  EpisodeGroupMapping episodeGroupMapping, int tvDbSeriesId)
        {
            var episodeMapping =
                episodeGroupMapping.EpisodeMappings?.FirstOrDefault(m => m.AniDbEpisodeIndex == aniDbEpisodeIndex);

            var tvDbEpisodeIndex =
                this.GetTvDbEpisodeIndex(aniDbEpisodeIndex, episodeGroupMapping.TvDbEpisodeIndexOffset,
                                         episodeMapping);

            return(this.GetTvDbEpisodeAsync(tvDbSeriesId, episodeGroupMapping.TvDbSeasonIndex, tvDbEpisodeIndex)
                   .Map(tvDbEpisodeData =>
            {
                this.log.Debug($"Found mapped TvDb episode: {tvDbEpisodeData}");

                return tvDbEpisodeData;
            }));
        }