siteadapt

package module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2024 License: Apache-2.0 Imports: 17 Imported by: 3

README

go-siteadapt

站点适配 GO 版本

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetTimeStamp

func GetTimeStamp(date string) int64

GetTimeStamp 解析日期字符串并返回时间戳

func IsValidHttpUrl

func IsValidHttpUrl(url string) bool

func ParseBool

func ParseBool(str string) bool

func ParseFloat64

func ParseFloat64(str string) float64

func ParseInt

func ParseInt(str string) int

ParseInt 将字符串转换为整数

func ParseInt64

func ParseInt64(str string) int64

func StrToByteSize

func StrToByteSize(text string) int64

StrToByteSize 体积字符串转字节数

func WeakDecode

func WeakDecode(input, output interface{}) error

WeakDecode 自定义 weakDecode 函数,转换 string 为其他类型,取决于 struct 定义的类型。

Types

type Config

type Config struct {
	ID                 string                       `mapstructure:"id"`            // 站点 ID
	Name               string                       `mapstructure:"name"`          // 站点名称
	Domain             string                       `mapstructure:"domain"`        // 域名
	Api                string                       `mapstructure:"api"`           // api 地址
	RequestDefinitions map[string]RequestDefinition `mapstructure:"requests"`      // 请求定义
	CommonFields       map[string]map[string]Field  `mapstructure:"common_fields"` // 公共字段定义
}

Config 站点配置

type ConfigReader

type ConfigReader struct {
	// contains filtered or unexported fields
}

func NewConfigReader

func NewConfigReader(data []byte) *ConfigReader

func (*ConfigReader) Read

func (c *ConfigReader) Read() (*Config, error)

type Field

type Field struct {
	Name           string           // 不需要填写
	List           *List            `mapstructure:"list,optional"` // 列表数据配置
	Selector       string           `mapstructure:"selector"`      // 选择器表达式,不同解析类型有不同的表达式
	Selection      string           `mapstructure:"selection"`     // 选择器文本类型,见:FieldSelection
	Attribute      string           `mapstructure:"attribute"`     // 用于 HTML 解析
	Filters        []Filter         `mapstructure:"filters"`       // 过滤器,链式处理
	Parent         bool             `mapstructure:"parent"`        // 是否选择父元素
	ChildrenRemove string           `mapstructure:"remove"`        // 用于 HTML 解析,移除指定元素的子元素
	Any            []Field          `mapstructure:"any"`           // 数组任意匹配,直到匹配成功
	Array          bool             `mapstructure:"array"`         // 是否为数组
	Fields         map[string]Field `mapstructure:"fields"`        // 字段嵌套,意味着可以多层解析
	FieldsRef      string           `mapstructure:"fields_ref"`    // 字段嵌套引用 CommonFields
}

Field 站点请求字段定义

type Filter

type Filter struct {
	Name string `mapstructure:"name"`
	Args any    `mapstructure:"args"`
}

Filter 站点请求字段过滤器

type List

type List struct {
	Selector string `mapstructure:"selector"`
	NextPage Field  `mapstructure:"next_page"`
}

type RequestDefinition

type RequestDefinition struct {
	Parser             string            `mapstructure:"parser"`               // 解析器,见:requestParser
	Method             string            `mapstructure:"method"`               // 请求方法
	Path               string            `mapstructure:"path"`                 // 相对路径
	UseApi             bool              `mapstructure:"use_api"`              // 使用 api
	Chrome             bool              `mapstructure:"chrome"`               // 使用 chrome
	Headers            map[string]string `mapstructure:"headers"`              // 请求头
	RequiredHeaders    []string          `mapstructure:"required_headers"`     // 必填请求头
	Params             url.Values        `mapstructure:"params"`               // 请求参数
	FormData           url.Values        `mapstructure:"form_data"`            // 表单数据
	SuccessStatusCodes []int             `mapstructure:"success_status_codes"` // 成功状态码
	List               *List             `mapstructure:"list,optional"`        // 列表数据配置
	Fields             map[string]Field  `mapstructure:"fields"`               // 字段定义
	FieldsRef          string            `mapstructure:"fields_ref"`           // 引用 CommonFields
	DisabledExtends    struct {
		Path               bool `mapstructure:"path"`
		Headers            bool `mapstructure:"headers"`
		RequiredHeaders    bool `mapstructure:"required_headers"`
		Params             bool `mapstructure:"params"`
		FormData           bool `mapstructure:"form_data"`
		SuccessStatusCodes bool `mapstructure:"success_status_codes"`
		List               bool `mapstructure:"list"`
		Fields             bool `mapstructure:"fields"`
		Field              bool `mapstructure:"field"`
	} `mapstructure:"disabled_extends"` // 禁用继承
}

RequestDefinition 站点请求定义 RequestDefinition

type RequestInfo

type RequestInfo struct {
	Domain     string // 域名
	RequestUrl string // 请求地址
	StatusCode int    // 状态码
}

type RequestSiteParams

type RequestSiteParams struct {
	ReqId    string             // 请求 id
	Rd       *RequestDefinition // 自定义 rd
	Domain   string             // 自定义 domain
	Api      string             // 自定义 api
	Path     string             // 自定义 path
	Headers  map[string]string  // 请求头
	Params   url.Values         // url 请求参数
	FormData url.Values         // form-data 请求参数
	Body     map[string]any     // 请求体
	Env      map[string]string  // 环境变量
	UA       string             // 用户代理
	Cookie   string             // cookie
	SiteData []byte             // 站点数据, 直接解析不再请求站点
}

RequestSiteParams 站点请求参数

type Result added in v1.0.2

type Result struct {
	NextPage string
	Raw      []byte
	RequestInfo
}

type ResultFunc added in v1.0.2

type ResultFunc func(result Result)

type SiteAdaptor

type SiteAdaptor struct {
	// contains filtered or unexported fields
}

func NewSiteAdaptor

func NewSiteAdaptor(sc Config) *SiteAdaptor

func (*SiteAdaptor) Data

func (sa *SiteAdaptor) Data(requestSiteParams RequestSiteParams, output any, fn ResultFunc) error

Data 获取对象数据

func (*SiteAdaptor) Json

func (sa *SiteAdaptor) Json(requestSiteParams RequestSiteParams, output interface{}) error

Json 直接 JSON 转 Struct

func (*SiteAdaptor) List

func (sa *SiteAdaptor) List(requestSiteParams RequestSiteParams, output any, fn ResultFunc) error

List 获取列表数据

func (*SiteAdaptor) Raw

func (sa *SiteAdaptor) Raw(requestSiteParams RequestSiteParams, fn ResultFunc) error

Raw 获取原始数据

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL