Пример #1
0
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!")
}