42 lines
912 B
Go
42 lines
912 B
Go
package tmdb
|
|
|
|
import "sort"
|
|
|
|
type BilledCrew struct {
|
|
Name string
|
|
Roles []string
|
|
}
|
|
|
|
func (credits *Credits) BilledCrew() []BilledCrew {
|
|
crewmap := make(map[string][]string)
|
|
billedcrew := []BilledCrew{}
|
|
for _, crew := range credits.Crew {
|
|
if crew.Job == "Director" ||
|
|
crew.Job == "Screenplay" ||
|
|
crew.Job == "Writer" ||
|
|
crew.Job == "Novel" ||
|
|
crew.Job == "Story" {
|
|
crewmap[crew.Name] = append(crewmap[crew.Name], crew.Job)
|
|
}
|
|
}
|
|
|
|
for name, jobs := range crewmap {
|
|
billedcrew = append(billedcrew, BilledCrew{Name: name, Roles: jobs})
|
|
}
|
|
for i := range billedcrew {
|
|
sort.Strings(billedcrew[i].Roles)
|
|
}
|
|
sort.Slice(billedcrew, func(i, j int) bool {
|
|
return billedcrew[i].Roles[0] < billedcrew[j].Roles[0]
|
|
})
|
|
return billedcrew
|
|
}
|
|
|
|
func (billedcrew *BilledCrew) FRoles() string {
|
|
jobs := ""
|
|
for _, job := range billedcrew.Roles {
|
|
jobs += job + ", "
|
|
}
|
|
return jobs[:len(jobs)-2]
|
|
}
|