package ocr

import (
	"encoding/base64"
	"git.listensoft.net/tool/jspkit/logger"
	"net/http"
	"os"
	"time"

	"git.listensoft.net/tool/jspkit/common"
	"git.listensoft.net/tool/jspkit/common/lxhttp"
	"github.com/go-kratos/kratos/v2/log"
	"github.com/tidwall/gjson"
)

func GetCaptchaCodeBeijing(imgPath string) string {
	var client = http.Client{}
	client.Timeout = time.Duration(time.Second * 15)
	tyURL := "https://public.listensoft.net/api/getCaptchaApi"
	res, err := common.PostFile(tyURL, map[string]string{"file": imgPath}, map[string]string{"type": "1002"})
	if err != nil {
		logger.Info(err.Error())
		return ""
	}
	logger.Info("北京图片验证码:" + string(res))
	return string(res)
}

func GetCaptchaCodeHebei(imgPath string) string {
	var client = http.Client{}
	client.Timeout = time.Duration(time.Second * 15)
	tyURL := "https://public.listensoft.net/api/getCaptchaApi"
	res, err := common.PostFile(tyURL, map[string]string{"file": imgPath}, map[string]string{"type": "1001"})
	if err != nil {
		logger.Info(err.Error())
		return ""
	}
	logger.Info("河北图片验证码:" + string(res))
	return string(res)
}

func GetX(captchaPathJpg, captchaPathPng string) float64 {
	u := "http://47.104.147.97:5000/getX"
	files := map[string]string{
		"target":   captchaPathJpg,
		"template": captchaPathPng,
	}
	bys, err := common.PostFile(u, files, map[string]string{})
	if err != nil {
		return 0
	}
	if gjson.Get(string(bys), "error").Int() != 0 {
		return 0
	}
	X := gjson.Get(string(bys), "msg").Float()
	return X
}

func GetXPython(captchaPathJpg, captchaPathPng string) float64 {
	var encodedJpg, encodedPng string
	{
		imgData, err := os.ReadFile(captchaPathJpg)
		if err != nil {
			log.Fatal(err)
		}

		// 将图片数据编码为 Base64
		encodedJpg = base64.StdEncoding.EncodeToString(imgData)
		imgData, err = os.ReadFile(captchaPathPng)
		if err != nil {
			log.Fatal(err)
		}

		// 将图片数据编码为 Base64
		encodedPng = base64.StdEncoding.EncodeToString(imgData)
	}

	u := "http://61.156.89.11:1234/api/capthk"
	files := map[string]string{
		"canvasSrc": encodedJpg,
		"blockSrc":  encodedPng,
	}
	h := map[string]string{
		"User-Agent":   "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
		"content-type": "application/json",
		"x-token":      "ab9296b031462c0cfc9d36e9a5d351af",
	}
	bys, err := lxhttp.POSTJson(http.DefaultClient, u, files, h)
	if err != nil {
		return 0
	}
	return gjson.GetBytes(bys, "distance").Float()
}