Beispiel #1
0
func (self *SeriesIndex) GuessEpisodeLanguage(episode *renamer.Episode, series *Series) {
	// This methods tries to find the right language for the supplied episode
	// based on several heuristics

	// When there is no language set and the series is only watched in one
	// language we can take this series
	if len(series.languageMap) == 1 {
		for k, _ := range series.languageMap {
			episode.Language = k
			break
		}
	}

	// Find the language which is most likely the right language
	if len(series.languageMap) > 1 {
		possible_languages := []string{}

		// when episode has not been watched in only one of the languages
		for lang, _ := range series.languageMap {
			episode.Language = lang
			if !self.IsEpisodeInIndex(*episode) {
				possible_languages = append(possible_languages, lang)
			}

			episode.Language = ""
		}

		if len(possible_languages) == 1 {
			episode.Language = possible_languages[0]

		} else if len(possible_languages) > 1 {
			// take the language where the previous episode exist
			previous_existing := []string{}

			for _, lang := range possible_languages {
				epi := *episode
				epi.Language = lang
				if (epi.Episode - 1) > 0 {
					epi.Episode -= 1
				}

				if self.IsEpisodeInIndex(epi) {
					previous_existing = append(previous_existing, lang)
				}
			}

			if len(previous_existing) == 1 {
				episode.Language = previous_existing[0]
			}
		}
	}
}
Beispiel #2
0
func (s *MySuite) TestEpisodeExistanceCheckWithExactSeriesName(c *C) {
	episode := renamer.Episode{Series: "Shameless US", Season: 1, Episode: 1,
		Language: "de"}
	c.Assert(s.index.IsEpisodeInIndex(episode), Equals, true)

	episode.Language = "en"
	c.Assert(s.index.IsEpisodeInIndex(episode), Equals, true)

	episode.Language = "fr"
	c.Assert(s.index.IsEpisodeInIndex(episode), Equals, false)

	episode.Season = 100
	c.Assert(s.index.IsEpisodeInIndex(episode), Equals, false)
}