1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package backend
- import (
- b64 "encoding/base64"
- "errors"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/rod_helper"
- "github.com/go-rod/rod/lib/proto"
- "github.com/sirupsen/logrus"
- "regexp"
- "strings"
- )
- func GetCode(log *logrus.Logger, codeUrl string) (string, error) {
- defer func() {
- log.Infoln("End Get Code")
- }()
- log.Infoln("Start Get Code...")
- browser, err := rod_helper.NewBrowser("", false)
- if err != nil {
- return "", err
- }
- defer func() {
- _ = browser.Close()
- }()
- page, err := browser.Page(proto.TargetCreateTarget{URL: codeUrl})
- if err != nil {
- return "", err
- }
- defer func() {
- _ = page.Close()
- }()
- err = page.WaitLoad()
- if err != nil {
- return "", err
- }
- htmlString, err := page.HTML()
- if err != nil {
- return "", err
- }
- code := ""
- var re = regexp.MustCompile(`(?m)>\d{6}<`)
- parts := re.FindAllString(htmlString, -1)
- if parts == nil || len(parts) <= 0 {
- return "", errors.New("code not found")
- } else {
- code = strings.ReplaceAll(parts[0], "<", "")
- code = strings.ReplaceAll(code, ">", "")
- }
- sEnc := b64.StdEncoding.EncodeToString([]byte(code))
- log.Infoln("code:", code)
- log.Infoln("sEnc:", sEnc)
- return sEnc, nil
- }
|