package main import ( "fmt" "strconv" "github.com/yinhui87/go-component/language" ) type episode struct { Index int64 `json:"index"` Cid int64 `json:"cid"` Title string `json:"title"` } func main() { episodeProvider := new(mockProvider) epdatas, err := getEPData(episodeProvider, "av1742161") // epdatas, err := getEPData(episodeProvider, "ep173262") if err != nil { panic(err) } for i, epdata := range epdatas { fmt.Printf("%dep %d Cid: %v, Title: %s\n", i, epdata.Index, epdata.Cid, epdata.Title) } } func getEPData(provider EpisodeDataProvider, videoNo string, skipIndex ...int64) (episodes []episode, err error) { videoType := videoNo[0:2] videoID, err := strconv.ParseInt(videoNo[2:], 10, 64) if err != nil { return } fmt.Println(videoType, videoID) switch videoType { case "av": avdatas, err := provider.GetAVData(videoID) if err != nil { return episodes, err } for i, avdata := range avdatas { index := int64(i) + 1 if language.ArrayIn(skipIndex, index) == -1 { episodes = append(episodes, episode{ Index: index, Cid: avdata.Cid, Title: avdata.Part, }) } } case "ep": epdatas, err := provider.GetEPData(videoID) if err != nil { return episodes, err } for i, epdata := range epdatas { index := int64(i) + 1 if language.ArrayIn(skipIndex, index) == -1 { episodes = append(episodes, episode{ Index: index, Cid: epdata.Cid, Title: epdata.LongTitle, }) } } } return }