package main import ( "encoding/json" "errors" "io/ioutil" "regexp" "strconv" ) type mockProvider struct { *episodeDataProvider } func (mock *mockProvider) GetAVData(avNo int64) (avdatas []AVData, err error) { file, err := ioutil.ReadFile("mock/av" + strconv.FormatInt(avNo, 10) + ".json") if err != nil { return avdatas, err } var resp AVResponse err = json.Unmarshal(file, &resp) if err != nil { return avdatas, err } return resp.Data, nil } func (mock *mockProvider) GetEPData(epNo int64) (epdatas []EPData, err error) { htmlByte, err := ioutil.ReadFile("mock/ep" + strconv.FormatInt(epNo, 10) + ".html") if err != nil { return } // the regex rule is: \"ssId\":\d+ re, err := regexp.Compile("\\\"ssId\\\":(\\d+)") if err != nil { return } ssidResult := re.Find(htmlByte) if len(ssidResult) == 0 { return epdatas, errors.New("ssid not found") } ssid := string(ssidResult)[7:] ssByte, err := ioutil.ReadFile("mock/ss" + ssid + ".json") if err != nil { return } var resp SectionResponse err = json.Unmarshal(ssByte, &resp) if err != nil { return } return resp.Result.MainSection.Episodes, err }