123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- package third
- import (
- "bytes"
- "encoding/json"
- "fmt"
- "io"
- "net/http"
- "strings"
- "time"
- )
- var (
- card = "tzlbndf9pi7ebzky" //当前有效的卡密
- baseUrl = "https://unlockdoc.smain.cn/api/api" //服务器的基础url
- VipStatusUrl = "/user/getUserInfoPlus" //接口是否正常
- VipRecordsUrl = "/user/getRecords" //获取当前用户的解析记录
- VipProxyStatusUrl = "/user/getCountProxy" //获取当前解析客户端的信息
- VipTaskPriceUrl = "/user/getTaskPrice" //查看文章是否可以解析
- VipParseUrl = "/user/purchasePaperPlusProxy" //解析对应的文章
- )
- func getUserKey(card string) string {
- return strings.TrimPrefix(card, "tzlbn")
- }
- func post(url string, body []byte) (result []byte, err error) {
- client := &http.Client{Timeout: 30 * time.Second}
- param, _ := encrypt(body)
- resp, err := client.Post(url, "application/json", bytes.NewBuffer([]byte(param)))
- if err != nil {
- return nil, err
- }
- defer resp.Body.Close()
- result, _ = io.ReadAll(resp.Body)
- res, _ := decrypt(result)
- fmt.Println("result: ", string(result), "\r\nres: ", res, "\nparam:", param, "\nreq:", string(body))
- return []byte(res), nil
- }
- func GetUserInfoPlus() (bool, error) {
- url := baseUrl + VipStatusUrl
- _, err := post(url, []byte("{}"))
- if err != nil {
- return false, err
- }
- return true, nil
- }
- type GetRecordsRequestParam struct {
- UserToken string `json:"userToken"`
- Email string `json:"email"`
- }
- type GetRecordsRespondData struct {
- Id string `json:"id"` //记录编号
- Email string `json:"email"` //email 实际为卡密
- Date string `json:"date"` //时间
- MarkdownUrl string `json:"markdown_url"` //解析后的md 文件路径
- HtmlUrl string `json:"html_url"` //解析后的 html 文件路径
- OnlineHtmlUrl string `json:"online_html_url"` //解析口在线观看路径
- PdfUrl interface{} `json:"pdf_url"` //pdf 路径, 暂不支持
- Source string `json:"source"` //原始文章路径
- Title string `json:"title"` //标题
- IsFail interface{} `json:"isFail"` //是否失败
- }
- type GetRecordsRespondParam struct {
- Code int `json:"code"`
- Message string `json:"message"`
- Data []GetRecordsRespondData `json:"data"`
- }
- func GetRecords(card string) (*GetRecordsRespondParam, error) {
- url := baseUrl + VipRecordsUrl
- key := getUserKey(card)
- req := GetRecordsRequestParam{
- UserToken: key,
- Email: key,
- }
- t, _ := json.Marshal(req)
- res, err := post(url, t)
- if err != nil {
- return nil, err
- }
- var result GetRecordsRespondParam
- err = json.Unmarshal(res, &result)
- return &result, err
- }
- type GetCountProxyRequestParam struct {
- Key string `json:"key"`
- }
- type GetCountProxyRespondData struct {
- Key string `json:"key"` //用户卡信息
- WatchDate string `json:"watchDate"` //有效期
- IsExpire int `json:"isExpire"` //是否过期
- UpdateDate string `json:"updateDate"` //更新时间
- CreateDate string `json:"createDate"` //创建时间
- Ip string `json:"ip"` //客户端ip
- IsProxy interface{} `json:"isProxy"` //是否为代理用户
- Email interface{} `json:"email"` //email
- }
- type GetCountProxyRespondParam struct {
- Code int `json:"code"`
- Message string `json:"message"`
- Data GetCountProxyRespondData `json:"data"`
- }
- func GetCountProxy(card string) (*GetCountProxyRespondParam, error) {
- url := baseUrl + VipProxyStatusUrl
- key := getUserKey(card)
- req := GetCountProxyRequestParam{
- Key: key,
- }
- t, _ := json.Marshal(req)
- res, err := post(url, t)
- if err != nil {
- return nil, err
- }
- var result GetCountProxyRespondParam
- err = json.Unmarshal(res, &result)
- return &result, err
- }
- type GetTaskPriceRequestParam struct {
- Url string `json:"url"`
- }
- type GeTaskPriceRespondParam struct {
- Code int `json:"code"`
- Message string `json:"message"`
- Data int `json:"data"` //路径是否正确
- }
- func GetTaskPrice(source string) (*GeTaskPriceRespondParam, error) {
- url := baseUrl + VipTaskPriceUrl
- req := GetTaskPriceRequestParam{
- Url: source,
- }
- t, _ := json.Marshal(req)
- res, err := post(url, t)
- if err != nil {
- return nil, err
- }
- var result GeTaskPriceRespondParam
- err = json.Unmarshal(res, &result)
- return &result, err
- }
- type PurchasePaperPlusProxyRequestParam struct {
- CssUrl string `json:"cssUrl"`
- Other string `json:"other"`
- Email interface{} `json:"email"`
- Url string `json:"url"`
- UseNum int `json:"useNum"`
- Key string `json:"key"`
- }
- type PurchasePaperPlusProxyRespondParam struct {
- Code int `json:"code"`
- Message string `json:"message"`
- ResUrl string `json:"data"` //解析后的 可直接下载观看的路径
- }
- func PurchasePaperPlusProxy(card string, source string) (*PurchasePaperPlusProxyRespondParam, error) {
- url := baseUrl + VipParseUrl
- key := getUserKey(card)
- req := PurchasePaperPlusProxyRequestParam{
- CssUrl: "https://unlockdoc.smain.cn/assets/13062df20.css",
- Other: "1",
- Email: nil,
- Url: source,
- UseNum: 1,
- Key: key,
- }
- t, _ := json.Marshal(req)
- res, err := post(url, t)
- if err != nil {
- return nil, err
- }
- var result PurchasePaperPlusProxyRespondParam
- err = json.Unmarshal(res, &result)
- return &result, err
- }
|