package Pull import ( "encoding/json" "fmt" "github.com/sirupsen/logrus" "src/Common/Request" "src/Config" "strings" "unsafe" ) type Media struct { SiteId string `json:"site_id"` Sps []*Sp `json:"sps"` JsonUrl string `json:"jsonUrl"` NewsId string `json:"newsId"` NewsName string `json:"newsName"` NodeId string `json:"nodeId"` NodeName string `json:"nodeName"` // Md5 string `json:"md5"` // PlayUrl string `json:"playUrl"` } type Sp struct { Spid string `json:"sp_id"` PushMode string `json:"push_mode"` //是否自动转推:0手动,1自动 } type MediaList struct { CurrentPage int `json:"currentPage"` PageNum int `json:"pageNum"` PageSize int `json:"pageSize"` Total int `json:"total"` List []*Media `json:"list"` } type MediaListModel struct { Config *Config.Config Siteid string } func (this *MediaListModel) FetchList(date string, page int) *MediaList { wasu_api_incrementList := "" config,ok := this.Config.Sites.Get(this.Siteid) if ok { conf,ok:=config.(map[string]interface{}) if ok { wasu_api_incrementList=conf["pull_api"].(string) } } if wasu_api_incrementList == "" { logrus.Error("PULL Site :",this.Siteid," 缺少配置项:pull_api") } mediaList := new(MediaList) if ok { url := fmt.Sprintf("%s?date=%s&page=%d", wasu_api_incrementList, date, page) data, err := Request.Get(url) if err == nil { json.Unmarshal([]byte(data), mediaList) } } return mediaList } func (this *MediaListModel) UpdateMediaList(mediaList *MediaList) bool { sps := []*Sp{} spids:="" config,ok := this.Config.Sites.Get(this.Siteid) if ok { conf,ok:=config.(map[string]interface{}) if ok { spids=conf["spids"].(string) } } spids = ","+spids+"," for _, tmp := range this.Config.Sps.Items() { sp := tmp.(map[string]interface{}) spid := sp["id"].(string); idx := strings.Index(spids, ","+spid+",") if idx > -1 { sp1 := new(Sp) sp1.Spid = spid sp1.PushMode = sp["wasu_incrementList_push_mode"].(string); sps=append(sps,sp1) } } l := len(mediaList.List) nOk := 0 for _, media := range mediaList.List { media.SiteId=this.Siteid media.Sps=sps if this.UpdateMedia(media) { nOk++ } } b := false if nOk == l { b = true } logrus.Debugln("UpdateMediaList : ok/total :", nOk, "/", l) return b } func (this *MediaListModel) UpdateMedia(media *Media) bool { center_api_media_update, ok := this.Config.Sys.Get("center_api_media_update") b := false if ok { inData, _ := json.Marshal(media) //fmt.Printf("****** media_info : %v",media) data, err := Request.Post(center_api_media_update.(string), *(*string)(unsafe.Pointer(&inData))) //data, err := Request.Post(center_api_media_update.(string), string(inData)) if err == nil { if data == "true" { b = true } } } return b }