bilibili-rename/mock.go

54 lines
1.1 KiB
Go

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
}