package intimate import ( "database/sql" "reflect" "time" "github.com/474420502/hunter" "github.com/tidwall/gjson" ) type GetSet struct { } type StreamerList struct { UrlHash []byte // Platform Platform // Url string // Label sql.NullString // Serialize interface{} UpdateInterval int32 UpdateTime time.Time // ErrorMsg sql.NullString Operator int32 LastOperator int32 } // Get Simple Value func (sl *StreamerList) Get(field string) interface{} { return reflect.ValueOf(sl).Elem().FieldByName(field).Interface() } // Set Simple Value func (sl *StreamerList) Set(field string, value interface{}) { reflect.ValueOf(sl).Elem().FieldByName(field).Set(reflect.ValueOf(value)) } type Streamer struct { Uid int64 // Platform Platform // UserId string // UserName sql.NullString // LiveUrl sql.NullString // Channel sql.NullString // Tags interface{} Ext interface{} // IsUpdateStreamer bool // 更新上面的内容 IsUpdateUrl bool UpdateInterval int32 UpdateUrl interface{} LatestLogUid int64 UpdateTime sql.NullTime // ErrorMsg sql.NullString Operator int32 LastOperator int32 } // Get Simple Value func (ai *Streamer) Get(field string) interface{} { return reflect.ValueOf(ai).Elem().FieldByName(field).Interface() } // Set Simple Value func (ai *Streamer) Set(field string, value interface{}) { reflect.ValueOf(ai).Elem().FieldByName(field).Set(reflect.ValueOf(value)) } type CollectLog struct { LogUid int64 // 日志id StreamerUid int64 // StreamerId 表id与 Platform Platform // UserId string // 平台的UserId IsLiveStreaming bool // IsError bool // Followers sql.NullInt64 // Views sql.NullInt64 // Giver interface{} // Gratuity sql.NullInt64 // LiveTitle sql.NullString // LiveStartTime sql.NullTime // LiveEndTime sql.NullTime // UpdateTime sql.NullTime // Tags interface{} Ext interface{} // ErrorMsg sql.NullString // } // Get Simple Value func (cl *CollectLog) Get(field string) interface{} { return reflect.ValueOf(cl).Elem().FieldByName(field).Interface() } // Set Simple Value func (cl *CollectLog) Set(field string, value interface{}) { reflect.ValueOf(cl).Elem().FieldByName(field).Set(reflect.ValueOf(value)) } type ExtractorSource struct { source *gjson.Result extractor *hunter.Extractor } func NewExtractorSource(gr *gjson.Result) *ExtractorSource { es := &ExtractorSource{} es.SetSource(gr) return es } func (es *ExtractorSource) SetSource(gr *gjson.Result) { es.source = gr es.extractor = nil } func (es *ExtractorSource) Clear() { es.source = nil es.extractor = nil } func (es *ExtractorSource) CreateExtractor() { es.extractor = hunter.NewExtractor([]byte(es.source.String())) } func (es *ExtractorSource) GetSource() *gjson.Result { return es.source } func (es *ExtractorSource) GetExtractor() *hunter.Extractor { return es.extractor }