123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package service
- import (
- "encoding/csv"
- "net/http"
- "strconv"
- "time"
- "go-common/library/log"
- )
- const (
- _bnjShieldCsvURL = "http://i0.hdslb.com/bfs/dm/bnj_shield.csv"
- )
- func (s *Service) shieldProc() {
- s.shieldFromCsv()
- ticker := time.NewTicker(time.Minute * 5)
- defer ticker.Stop()
- for range ticker.C {
- s.shieldFromCsv()
- }
- }
- func (s *Service) shieldFromCsv() {
- resp, err := http.Get(_bnjShieldCsvURL)
- if err != nil {
- log.Error("shieldFromCsv(url:%v) error(%v)", _bnjShieldCsvURL, err)
- return
- }
- defer resp.Body.Close()
- if resp.StatusCode != http.StatusOK {
- log.Error("shieldFromCsv(url:%v) status(%v)", _bnjShieldCsvURL, resp.StatusCode)
- return
- }
- r := csv.NewReader(resp.Body)
- // ignore first record
- r.Read()
- aids := make([]int64, 0, 100)
- mids := make([]int64, 0, 100)
- for {
- records, err := r.Read()
- if err != nil {
- break
- }
- if len(records) != 2 {
- continue
- }
- // ignore error
- aid, _ := strconv.ParseInt(records[0], 10, 64)
- mid, _ := strconv.ParseInt(records[1], 10, 64)
- if aid > 0 {
- aids = append(aids, aid)
- }
- if mid > 0 {
- mids = append(mids, mid)
- }
- }
- aidMap := make(map[int64]struct{})
- midMap := make(map[int64]struct{})
- for _, aid := range aids {
- aidMap[aid] = struct{}{}
- }
- for _, mid := range mids {
- midMap[mid] = struct{}{}
- }
- s.aidSheild = aidMap
- s.midsSheild = midMap
- }
|