package third import ( "encoding/json" "errors" ) type Parser struct { card string baseUrl string } type ParserRespond struct { Code int `json:"code"` Message string `json:"message"` Data interface{} `json:"data"` } func uPost(req interface{}, url string) (result ParserRespond, err error) { t, _ := json.Marshal(req) res, err := post(url, t) if err != nil { return } err = json.Unmarshal(res, &result) if err != nil { return } if result.Code != 200 { return result, errors.New(result.Message) } return } /* 功能: 新建一个解析器 输入: card: 当前用户卡密 baseUrl: 服务器基础路径 返回: respond: 解析记录切片 error: 解析报错 */ func NewParser(card string, baseUrl string) *Parser { return &Parser{card, baseUrl} } /* 功能: 查看当前接口是否正常, 貌似没啥意义 输入: 无 返回: respond: 正常/异常 error: 解析报错 */ func (p *Parser) GetUserInfo() (bool, error) { url := p.baseUrl + VipStatusUrl _, err := post(url, []byte("{}")) if err != nil { return false, err } return true, nil } /* 功能: 查看当前用户解析记录 输入: 无 返回: respond: 解析记录切片 error: 解析报错 */ func (p *Parser) GetRecords() ([]GetRecordsRespondData, error) { url := p.baseUrl + VipRecordsUrl key := getUserKey(p.card) req := GetRecordsRequestParam{ UserToken: key, Email: key, } result, err := uPost(req, url) if err != nil { return nil, err } r, ok := result.Data.([]GetRecordsRespondData) if !ok { return nil, errors.New("断言数据类型错误") } return r, nil } /* 功能: 查看当前用户客户端的信息 输入: 无 返回: respond: 客户端信息 error: 解析报错 */ func (p *Parser) GetCountProxy() (*GetCountProxyRespondData, error) { url := p.baseUrl + VipProxyStatusUrl key := getUserKey(p.card) req := GetCountProxyRequestParam{ Key: key, } result, err := uPost(req, url) if err != nil { return nil, err } r, ok := result.Data.(GetCountProxyRespondData) if !ok { return nil, errors.New("断言数据类型错误") } return &r, nil } /* 功能: 查看当前文章是否支持解析/或者路径是否正确 输入: source: csdn 文章路径 返回: bool: 支持/不支持 error: 解析报错 */ func (p *Parser) GetTaskPrice(source string) (bool, error) { url := p.baseUrl + VipTaskPriceUrl req := GetTaskPriceRequestParam{ Url: source, } result, err := uPost(req, url) if err != nil { return false, err } r, ok := result.Data.(int) if !ok { return false, errors.New("断言数据类型错误") } return r == 1, nil } /* 功能: 解析当前文章 输入: source: csdn 文章路径 返回: result: 解析的文章路径, 可以直接下载查看的路径 error: 解析报错 */ func (p *Parser) PurchasePaperPlusProxy(source string) (string, error) { url := p.baseUrl + VipParseUrl key := getUserKey(p.card) req := PurchasePaperPlusProxyRequestParam{ CssUrl: "https://unlockdoc.smain.cn/assets/13062df20.css", Other: "1", Email: nil, Url: source, UseNum: 1, Key: key, } result, err := uPost(req, url) if err != nil { return "", err } r, ok := result.Data.(string) if !ok { return "", errors.New("断言数据类型错误") } return r, nil }