66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package goblin
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"go-common/app/interface/main/tv/conf"
|
|
)
|
|
|
|
// Label def.
|
|
type Label struct {
|
|
ID int `json:"id"`
|
|
Name string `json:"name"`
|
|
Param string `json:"param"`
|
|
ParamName string `json:"param_name"`
|
|
Value string `json:"value"`
|
|
}
|
|
|
|
// TypeLabels def.
|
|
type TypeLabels struct {
|
|
ParamName string `json:"param_name"`
|
|
Param string `json:"param"`
|
|
Labels []*Label `json:"labels"`
|
|
}
|
|
|
|
// FromLabels def.
|
|
func (v *TypeLabels) FromLabels(labels []*Label) {
|
|
if len(labels) == 0 {
|
|
return
|
|
}
|
|
v.Param = labels[0].Param
|
|
v.ParamName = labels[0].ParamName
|
|
v.Labels = labels
|
|
}
|
|
|
|
// IndexLabels is used to combine the data in memory
|
|
type IndexLabels struct {
|
|
PGC map[int][]*TypeLabels // key is category, value is all the param and their labels
|
|
UGC map[int][]*TypeLabels
|
|
}
|
|
|
|
// YearVDur def.
|
|
type YearVDur struct {
|
|
Dur string `json:"dur"`
|
|
}
|
|
|
|
// TransYear transforms the value of year type labels
|
|
func (v *Label) TransYear(cfg *conf.IndexLabel) {
|
|
if !cfg.IsYear(v.Param) {
|
|
return
|
|
}
|
|
if len(cfg.YearV) == 0 {
|
|
return
|
|
}
|
|
if newV, ok := cfg.YearV[v.Value]; ok { // replace the value
|
|
v.Value = newV.Dur
|
|
}
|
|
if !strings.Contains(v.Value, "-") {
|
|
v.Value = v.Value + "-" + v.Value
|
|
} else { // transform 2004-2000 to 2000-2004
|
|
years := strings.Split(v.Value, "-")
|
|
if len(years) == 2 && years[0] != "" && years[1] != "" {
|
|
v.Value = years[1] + "-" + years[0]
|
|
}
|
|
}
|
|
}
|