func (self *SeriesIndex) AddEpisode(episode *renamer.Episode) (bool, error) { // test for all possible series names if they exist in index and take the // first matching ExtractorLoop: for _, extractor := range self.nameExtractors { names, err := extractor.Names(episode) if err != nil { fmt.Printf("!!! Error asking extractor for series names: %s", err) continue } for _, possible_series := range names { series_name := self.SeriesNameInIndex(possible_series) if series_name != "" { episode.Series = series_name break ExtractorLoop } } } series, existing := self.seriesMap[episode.Series] if !existing { return false, errors.New("Series does not exist in index") } // Handle episodes where no language is set if episode.Language == "" { self.GuessEpisodeLanguage(episode, series) } _, language_exist := series.languageMap[episode.Language] if !language_exist { return false, errors.New("Series is not watched in this language") } if self.IsEpisodeInIndex(*episode) { return false, errors.New("Episode already exists in Index") } episode_entry := Episode{Name: episode.CleanedFileName()} // find the right EpisodeSet so we can add our new episode to it set, exist := series.languageMap[episode.Language] if exist { set.EpisodeList = append(set.EpisodeList, episode_entry) set.BuildUpEpisodeMap() return true, nil } return false, errors.New("Episode couldn't be added to index. This shouldn't occur!") }