- update kuaishou

- update meituan
master
李光春 2 years ago
parent dbf9f53dbe
commit 7034c2d11d

@ -27,6 +27,8 @@ func NewClient(config *ConfigClient) (*Client, error) {
var err error
c := &Client{config: config}
c.ua = "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
c.client = gorequest.NewHttp()
if c.config.PgsqlDb != nil {
c.logStatus = true

@ -16,12 +16,12 @@ type AnalysisResult struct {
Err error // 错误
}
func NewAnalysisResult(result AnalysisResponse, err error) *AnalysisResult {
func newAnalysisResult(result AnalysisResponse, err error) *AnalysisResult {
return &AnalysisResult{Result: result, Err: err}
}
// Analysis 快手解析
func (app *App) Analysis(content string) *AnalysisResult {
func (c *Client) Analysis(content string) *AnalysisResult {
// 定义
var response AnalysisResponse
@ -33,24 +33,24 @@ func (app *App) Analysis(content string) *AnalysisResult {
} else if strings.Contains(content, "gifshow.com") {
url = xurls.Relaxed.FindString(content)
} else {
return NewAnalysisResult(response, errors.New("url为空"))
return newAnalysisResult(response, errors.New("url为空"))
}
// 获取重定向链接
result := app.GetVideoLink(url)
result := c.GetVideoLink(url)
if result.Err != nil {
return NewAnalysisResult(response, result.Err)
return newAnalysisResult(response, result.Err)
}
// 获取重定向内容
html, err := app.GetVideoHtml(result.Link, result.Cookies)
html, err := c.GetVideoHtml(result.Link, result.Cookies)
if err != nil {
return NewAnalysisResult(response, result.Err)
return newAnalysisResult(response, result.Err)
}
// 判断
imageLinks := app.ExtractImageLink(html)
videoLink := app.ExtractVideoLink(html)
imageLinks := c.ExtractImageLink(html)
videoLink := c.ExtractVideoLink(html)
// 0 是视频1是图集
if len(imageLinks) > 0 {
@ -60,5 +60,5 @@ func (app *App) Analysis(content string) *AnalysisResult {
response.VideoLink = videoLink
}
return NewAnalysisResult(response, err)
return newAnalysisResult(response, err)
}

@ -1,33 +0,0 @@
package kuaishou
import (
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)
type App struct {
ua string
mongo *gomongo.Client // 日志数据库
pgsql *gorm.DB // pgsql数据库
client *gorequest.App // 请求客户端
log *golog.Api // 日志服务
logTableName string // 日志表名
logStatus bool // 日志状态
}
func NewApp(pgsql *gorm.DB) *App {
app := &App{ua: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"}
app.client = gorequest.NewHttp()
if pgsql != nil {
app.pgsql = pgsql
app.logStatus = true
app.logTableName = "kuaishou"
app.log = golog.NewApi(&golog.ApiConfig{
Db: pgsql,
TableName: app.logTableName,
})
}
return app
}

@ -0,0 +1,43 @@
package kuaishou
import (
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)
type ConfigClient struct {
MongoDb *gomongo.Client // 日志数据库
PgsqlDb *gorm.DB // pgsql数据库
}
type Client struct {
ua string
client *gorequest.App // 请求客户端
log *golog.ApiClient // 日志服务
logStatus bool // 日志状态
config *ConfigClient // 配置
}
func NewClient(config *ConfigClient) (*Client, error) {
var err error
c := &Client{config: config}
c.ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"
c.client = gorequest.NewHttp()
if c.config.PgsqlDb != nil {
c.logStatus = true
c.log, err = golog.NewApiClient(&golog.ConfigApiClient{
Db: c.config.PgsqlDb,
TableName: logTable,
})
if err != nil {
return nil, err
}
}
return c, nil
}

@ -0,0 +1,5 @@
package kuaishou
const (
logTable = "kuaishou"
)

@ -2,7 +2,7 @@ package kuaishou
import "regexp"
func (app *App) ExtractImageLink(content string) []string {
func (c *Client) ExtractImageLink(content string) []string {
//解析正则表达式,如果成功返回解释器
reg := regexp.MustCompile(`\{"path":"(.*?)","width":\d+,"height":\d*}`)

@ -2,7 +2,7 @@ package kuaishou
import "regexp"
func (app *App) ExtractVideoLink(content string) string {
func (c *Client) ExtractVideoLink(content string) string {
//解析正则表达式,如果成功返回解释器
reg := regexp.MustCompile(`"srcNoMark":"(.*?)"`)

@ -6,7 +6,7 @@ import (
"net/http"
)
func (app *App) GetVideoHtml(url string, cookieStr string) (string, error) {
func (c *Client) GetVideoHtml(url string, cookieStr string) (string, error) {
client := &http.Client{}
request, err := http.NewRequest("GET", url, nil)

@ -14,7 +14,7 @@ type Response struct {
Err error
}
func (app *App) GetVideoLink(url string) Response {
func (c *Client) GetVideoLink(url string) Response {
result := Response{}

@ -30,8 +30,8 @@ func (m *mongoZap) TableName() string {
return "kuaishou"
}
func (app *App) mongoLog(request gorequest.Response) {
_, _ = app.mongo.Model(&mongoZap{}).InsertOne(mongoZap{
func (c *Client) mongoLog(request gorequest.Response) {
_, _ = c.config.MongoDb.Model(&mongoZap{}).InsertOne(mongoZap{
RequestTime: gomongo.BsonTime(request.RequestTime), //【请求】时间
RequestUri: request.RequestUri, //【请求】链接
RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接

@ -8,8 +8,8 @@ import (
)
// 记录日志
func (app *App) postgresqlLog(request gorequest.Response) {
app.log.Record(golog.ApiPostgresqlLog{
func (c *Client) postgresqlLog(request gorequest.Response) {
c.log.Record(golog.ApiPostgresqlLog{
RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间
RequestUri: request.RequestUri, //【请求】链接
RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接

@ -19,7 +19,7 @@ type ApiGenerateLinkResult struct {
Err error // 错误
}
func NewApiGenerateLinkResult(result ApiGenerateLinkResponse, body []byte, http gorequest.Response, err error) *ApiGenerateLinkResult {
func newApiGenerateLinkResult(result ApiGenerateLinkResponse, body []byte, http gorequest.Response, err error) *ApiGenerateLinkResult {
return &ApiGenerateLinkResult{Result: result, Body: body, Http: http, Err: err}
}
@ -37,9 +37,9 @@ func (c *Client) ApiGenerateLink(actId int64, sid string, linkType, shortLink in
params := gorequest.NewParamsWith(param)
params["sign"] = c.getSign(c.config.Secret, params)
// 请求
request, err := c.request("https://openapi.meituan.com/api/generateLink", params, http.MethodGet)
request, err := c.request(apiUrl+"/api/generateLink", params, http.MethodGet)
// 定义
var response ApiGenerateLinkResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewApiGenerateLinkResult(response, request.ResponseBody, request, err)
return newApiGenerateLinkResult(response, request.ResponseBody, request, err)
}

@ -28,7 +28,7 @@ type ApiGetQuaLitYsCoreBySidResult struct {
Err error // 错误
}
func NewApiGetQuaLitYsCoreBySidResult(result ApiGetQuaLitYsCoreBySidResponse, body []byte, http gorequest.Response, err error) *ApiGetQuaLitYsCoreBySidResult {
func newApiGetQuaLitYsCoreBySidResult(result ApiGetQuaLitYsCoreBySidResponse, body []byte, http gorequest.Response, err error) *ApiGetQuaLitYsCoreBySidResult {
return &ApiGetQuaLitYsCoreBySidResult{Result: result, Body: body, Http: http, Err: err}
}
@ -42,9 +42,9 @@ func (c *Client) ApiGetQuaLitYsCoreBySid(notMustParams ...gorequest.Params) *Api
params["appkey"] = c.config.AppKey
params["sign"] = c.getSign(c.config.Secret, params)
// 请求
request, err := c.request("https://openapi.meituan.com/api/getqualityscorebysid", params, http.MethodGet)
request, err := c.request(apiUrl+"/api/getqualityscorebysid", params, http.MethodGet)
// 定义
var response ApiGetQuaLitYsCoreBySidResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewApiGetQuaLitYsCoreBySidResult(response, request.ResponseBody, request, err)
return newApiGetQuaLitYsCoreBySidResult(response, request.ResponseBody, request, err)
}

@ -19,7 +19,7 @@ type ApiMiniCodeResult struct {
Err error // 错误
}
func NewApiMiniCodeResult(result ApiMiniCodeResponse, body []byte, http gorequest.Response, err error) *ApiMiniCodeResult {
func newApiMiniCodeResult(result ApiMiniCodeResponse, body []byte, http gorequest.Response, err error) *ApiMiniCodeResult {
return &ApiMiniCodeResult{Result: result, Body: body, Http: http, Err: err}
}
@ -35,9 +35,9 @@ func (c *Client) ApiMiniCode(actId int64, sid string) *ApiMiniCodeResult {
params := gorequest.NewParamsWith(param)
params["sign"] = c.getSign(c.config.Secret, params)
// 请求
request, err := c.request("https://openapi.meituan.com/api/miniCode", params, http.MethodGet)
request, err := c.request(apiUrl+"/api/miniCode", params, http.MethodGet)
// 定义
var response ApiMiniCodeResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewApiMiniCodeResult(response, request.ResponseBody, request, err)
return newApiMiniCodeResult(response, request.ResponseBody, request, err)
}

@ -41,7 +41,7 @@ type ApiOrderResult struct {
Err error // 错误
}
func NewApiOrderResult(result ApiOrderResponse, body []byte, http gorequest.Response, err error) *ApiOrderResult {
func newApiOrderResult(result ApiOrderResponse, body []byte, http gorequest.Response, err error) *ApiOrderResult {
return &ApiOrderResult{Result: result, Body: body, Http: http, Err: err}
}
@ -54,9 +54,9 @@ func (c *Client) ApiOrder(notMustParams ...gorequest.Params) *ApiOrderResult {
params["appkey"] = c.config.AppKey
params["sign"] = c.getSign(c.config.Secret, params)
// 请求
request, err := c.request("https://openapi.meituan.com/api/order", params, http.MethodGet)
request, err := c.request(apiUrl+"/api/order", params, http.MethodGet)
// 定义
var response ApiOrderResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewApiOrderResult(response, request.ResponseBody, request, err)
return newApiOrderResult(response, request.ResponseBody, request, err)
}

@ -40,7 +40,7 @@ type ApiOrderListResult struct {
Err error // 错误
}
func NewApiOrderListResult(result ApiOrderListResponse, body []byte, http gorequest.Response, err error) *ApiOrderListResult {
func newApiOrderListResult(result ApiOrderListResponse, body []byte, http gorequest.Response, err error) *ApiOrderListResult {
return &ApiOrderListResult{Result: result, Body: body, Http: http, Err: err}
}
@ -54,9 +54,9 @@ func (c *Client) ApiOrderList(notMustParams ...gorequest.Params) *ApiOrderListRe
params["appkey"] = c.config.AppKey
params["sign"] = c.getSign(c.config.Secret, params)
// 请求
request, err := c.request("https://openapi.meituan.com/api/orderList", params, http.MethodGet)
request, err := c.request(apiUrl+"/api/orderList", params, http.MethodGet)
// 定义
var response ApiOrderListResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewApiOrderListResult(response, request.ResponseBody, request, err)
return newApiOrderListResult(response, request.ResponseBody, request, err)
}

@ -14,62 +14,28 @@ type ConfigClient struct {
// Client 美团联盟
type Client struct {
client *gorequest.App // 请求客户端
log *golog.Api // 日志服务
logTableName string // 日志表名
logStatus bool // 日志状态
config *ConfigClient
client *gorequest.App // 请求客户端
log *golog.ApiClient // 日志服务
logStatus bool // 日志状态
config *ConfigClient // 配置
}
func NewClient(config *ConfigClient) *Client {
func NewClient(config *ConfigClient) (*Client, error) {
c := &Client{}
c.config = config
var err error
c := &Client{config: config}
c.client = gorequest.NewHttp()
if c.config.PgsqlDb != nil {
c.logStatus = true
c.logTableName = "meituan"
c.log = golog.NewApi(&golog.ApiConfig{
c.log, err = golog.NewApiClient(&golog.ConfigApiClient{
Db: c.config.PgsqlDb,
TableName: c.logTableName,
TableName: logTable,
})
if err != nil {
return nil, err
}
}
return c
}
func (c *Client) request(url string, params map[string]interface{}, method string) (resp gorequest.Response, err error) {
// 创建请求
client := c.client
// 设置请求地址
client.SetUri(url)
// 设置方式
client.SetMethod(method)
// 设置格式
client.SetContentTypeJson()
// 设置参数
client.SetParams(params)
// 发起请求
request, err := client.Request()
if err != nil {
return gorequest.Response{}, err
}
// 日志
if c.logStatus == true {
go c.postgresqlLog(request)
}
return request, err
}
func (c *Client) GetAppKey() string {
return c.config.AppKey
return c, nil
}

@ -0,0 +1,9 @@
package meituan
const (
apiUrl = "https://openapi.meituan.com"
)
const (
logTable = "meituan"
)

@ -0,0 +1,5 @@
package meituan
func (c *Client) GetAppKey() string {
return c.config.AppKey
}

@ -25,7 +25,7 @@ type PoiAreaResult struct {
Err error // 错误
}
func NewPoiAreaResult(result PoiAreaResponse, body []byte, http gorequest.Response, err error) *PoiAreaResult {
func newPoiAreaResult(result PoiAreaResponse, body []byte, http gorequest.Response, err error) *PoiAreaResult {
return &PoiAreaResult{Result: result, Body: body, Http: http, Err: err}
}
@ -37,9 +37,9 @@ func (c *Client) PoiArea(cityID int) *PoiAreaResult {
param.Set("cityid", cityID)
params := gorequest.NewParamsWith(param)
// 请求
request, err := c.request("https://openapi.meituan.com/poi/area", params, http.MethodGet)
request, err := c.request(apiUrl+"/poi/area", params, http.MethodGet)
// 定义
var response PoiAreaResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewPoiAreaResult(response, request.ResponseBody, request, err)
return newPoiAreaResult(response, request.ResponseBody, request, err)
}

@ -25,7 +25,7 @@ type PoiCategoryResult struct {
Err error // 错误
}
func NewPoiCategoryResult(result PoiCategoryResponse, body []byte, http gorequest.Response, err error) *PoiCategoryResult {
func newPoiCategoryResult(result PoiCategoryResponse, body []byte, http gorequest.Response, err error) *PoiCategoryResult {
return &PoiCategoryResult{Result: result, Body: body, Http: http, Err: err}
}
@ -37,9 +37,9 @@ func (c *Client) PoiCategory(cityID int) *PoiCategoryResult {
param.Set("cityid", cityID)
params := gorequest.NewParamsWith(param)
// 请求
request, err := c.request("https://openapi.meituan.com/poi/category", params, http.MethodGet)
request, err := c.request(apiUrl+"/poi/category", params, http.MethodGet)
// 定义
var response PoiCategoryResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewPoiCategoryResult(response, request.ResponseBody, request, err)
return newPoiCategoryResult(response, request.ResponseBody, request, err)
}

@ -22,7 +22,7 @@ type PoiCityResult struct {
Err error // 错误
}
func NewPoiCityResult(result PoiCityResponse, body []byte, http gorequest.Response, err error) *PoiCityResult {
func newPoiCityResult(result PoiCityResponse, body []byte, http gorequest.Response, err error) *PoiCityResult {
return &PoiCityResult{Result: result, Body: body, Http: http, Err: err}
}
@ -30,9 +30,9 @@ func NewPoiCityResult(result PoiCityResponse, body []byte, http gorequest.Respon
// https://openapi.meituan.com/#api-0.%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE-GetHttpsOpenapiMeituanComPoiCity
func (c *Client) PoiCity() *PoiCityResult {
// 请求
request, err := c.request("https://openapi.meituan.com/poi/city", map[string]interface{}{}, http.MethodGet)
request, err := c.request(apiUrl+"/poi/city", map[string]interface{}{}, http.MethodGet)
// 定义
var response PoiCityResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewPoiCityResult(response, request.ResponseBody, request, err)
return newPoiCityResult(response, request.ResponseBody, request, err)
}

@ -21,7 +21,7 @@ type PoiDistrictResult struct {
Err error // 错误
}
func NewPoiDistrictResult(result PoiDistrictResponse, body []byte, http gorequest.Response, err error) *PoiDistrictResult {
func newPoiDistrictResult(result PoiDistrictResponse, body []byte, http gorequest.Response, err error) *PoiDistrictResult {
return &PoiDistrictResult{Result: result, Body: body, Http: http, Err: err}
}
@ -33,9 +33,9 @@ func (c *Client) PoiDistrict(cityID int) *PoiDistrictResult {
param.Set("cityid", cityID)
params := gorequest.NewParamsWith(param)
// 请求
request, err := c.request("https://openapi.meituan.com/poi/district", params, http.MethodGet)
request, err := c.request(apiUrl+"/poi/district", params, http.MethodGet)
// 定义
var response PoiDistrictResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewPoiDistrictResult(response, request.ResponseBody, request, err)
return newPoiDistrictResult(response, request.ResponseBody, request, err)
}

@ -0,0 +1,34 @@
package meituan
import "go.dtapp.net/library/utils/gorequest"
func (c *Client) request(url string, params map[string]interface{}, method string) (gorequest.Response, error) {
// 创建请求
client := c.client
// 设置请求地址
client.SetUri(url)
// 设置方式
client.SetMethod(method)
// 设置格式
client.SetContentTypeJson()
// 设置参数
client.SetParams(params)
// 发起请求
request, err := client.Request()
if err != nil {
return gorequest.Response{}, err
}
// 日志
if c.logStatus == true {
go c.postgresqlLog(request)
}
return request, err
}
Loading…
Cancel
Save