package tv import ( "fmt" "path" "github.com/ollien/gobbler/categorize/location" ) type Location struct { showTitle string seasons []int } func NewLocation(showTitle string, seasons []int) Location { seasonsCopy := make([]int, len(seasons)) copy(seasonsCopy, seasons) return Location{ showTitle: showTitle, seasons: seasonsCopy, } } func (loc Location) MediaTitle() string { return loc.showTitle } func (loc Location) Seasons() []int { ret := make([]int, len(loc.seasons)) copy(ret, loc.seasons) return ret } func (loc Location) MediaType() location.MediaType { return location.MediaTypeTV } func (loc Location) Path() (string, error) { if !loc.IsFullyResolved() { return "", location.ErrUnresolvedLocation } return makeSeasonPath(loc.showTitle, loc.seasons[0]), nil } func (loc Location) IsFullyResolved() bool { return len(loc.seasons) == 1 } // makeSeasonPath makes the final path for a season-categorized TV show func makeSeasonPath(showFolder string, seasonNumber int) string { seasonFolderName := fmt.Sprintf("Season-%d", seasonNumber) return path.Join(showFolder, seasonFolderName) }