private List <EpisodeMapping> GetEpisodeMappings(AnimelistMapping mapping) { if (mapping.ParsedMappings == null) { var pairs = mapping.Value.Split(';'); mapping.ParsedMappings = pairs .Where(x => !string.IsNullOrEmpty(x)) .Select(x => { var parts = x.Split('-'); return(new EpisodeMapping { Anidb = int.Parse(parts[0]), Tvdb = int.Parse(parts[1]) }); }).ToList(); } return(mapping.ParsedMappings); }
private int?FindAnidbEpisodeMapping(AnidbEpisode anidb, AnimelistMapping mapping) { var maps = GetEpisodeMappings(mapping); var exact = maps.FirstOrDefault(x => x.Anidb == anidb.Index); if (exact != null) { return(exact.Tvdb); } if (mapping.OffsetSpecified) { var startInRange = !mapping.StartSpecified || mapping.Start <= anidb.Index; var endInRange = !mapping.EndSpecified || mapping.End >= anidb.Index; if (startInRange && endInRange) { return(anidb.Index + mapping.Offset); } } return(null); }
private List<EpisodeMapping> GetEpisodeMappings(AnimelistMapping mapping) { if (mapping.ParsedMappings == null) { var pairs = mapping.Value.Split(';'); mapping.ParsedMappings = pairs .Where(x => !string.IsNullOrEmpty(x)) .Select(x => { var parts = x.Split('-'); return new EpisodeMapping { Anidb = int.Parse(parts[0]), Tvdb = int.Parse(parts[1]) }; }).ToList(); } return mapping.ParsedMappings; }
private int? FindAnidbEpisodeMapping(AnidbEpisode anidb, AnimelistMapping mapping) { var maps = GetEpisodeMappings(mapping); var exact = maps.FirstOrDefault(x => x.Anidb == anidb.Index); if (exact != null) return exact.Tvdb; if (mapping.OffsetSpecified) { var startInRange = !mapping.StartSpecified || mapping.Start <= anidb.Index; var endInRange = !mapping.EndSpecified || mapping.End >= anidb.Index; if (startInRange && endInRange) return anidb.Index + mapping.Offset; } return null; }
private int? FindTvdbEpisodeMapping(TvdbEpisode tvdb, AnimelistMapping mapping) { var maps = GetEpisodeMappings(mapping); var exact = maps.FirstOrDefault(x => x.Tvdb == tvdb.Index); if (exact != null) return exact.Anidb; if (mapping.OffsetSpecified) { var startInRange = !mapping.StartSpecified || (mapping.Start + mapping.Offset) <= tvdb.Index; var endInRange = !mapping.EndSpecified || (mapping.End + mapping.Offset) >= tvdb.Index; if (startInRange && endInRange) return tvdb.Index - mapping.Offset; } return null; }