main.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package main
  2. import (
  3. mgo "mongodb"
  4. qu "qfw/util"
  5. "github.com/cron"
  6. "github.com/donnie4w/go-logger/logger"
  7. )
  8. var (
  9. Config map[string]interface{}
  10. //User map[string]string
  11. MgoE *mgo.MongodbSim //editor
  12. MgoS *mgo.MongodbSim //spider
  13. )
  14. func init() {
  15. qu.ReadConfig(&Config)
  16. //qu.ReadConfig("./user.json", &User)
  17. //mgo
  18. spider := Config["spider"].(map[string]interface{})
  19. MgoS = &mgo.MongodbSim{
  20. MongodbAddr: qu.ObjToString(spider["addr"]),
  21. DbName: qu.ObjToString(spider["db"]),
  22. Size: qu.IntAll(spider["size"]),
  23. }
  24. MgoS.InitPool()
  25. editor := Config["editor"].(map[string]interface{})
  26. MgoE = &mgo.MongodbSim{
  27. MongodbAddr: qu.ObjToString(editor["addr"]),
  28. DbName: qu.ObjToString(editor["db"]),
  29. Size: qu.IntAll(editor["size"]),
  30. }
  31. MgoE.InitPool()
  32. //logs
  33. logger.SetRollingDaily("./logs", "task.log")
  34. //爬虫上下浮动率
  35. DownloadCheck = make(map[string]*DC)
  36. downloadcheck := Config["downloadcheck"].(map[string]interface{})
  37. for _, tmp := range downloadcheck {
  38. tmpMap := tmp.(map[string]interface{})
  39. downratio := qu.Float64All(tmpMap["downratio"])
  40. uptatio := qu.Float64All(tmpMap["upratio"])
  41. codes := tmpMap["spidercode"].([]interface{})
  42. if len(codes) > 0 {
  43. for _, code := range codes {
  44. c := qu.ObjToString(code)
  45. DownloadCheck[c] = &DC{
  46. DownRatio: 1.0 - downratio/100.0,
  47. UpRatio: 1.0 + uptatio/100.0,
  48. }
  49. }
  50. } else {
  51. DownloadCheck["other"] = &DC{
  52. DownRatio: 1.0 - downratio/100.0,
  53. UpRatio: 1.0 + uptatio/100.0,
  54. }
  55. }
  56. }
  57. EveryDayDownloadTime = qu.ObjToString(Config["everydaydownload"])
  58. UpdateStateCron = qu.ObjToString(Config["updatestatecron"])
  59. CreateTaskCron = qu.ObjToString(Config["createtaskcron"])
  60. CloseTaskCron = qu.ObjToString(Config["closetaskcron"])
  61. CodeSummaryCron = qu.ObjToString(Config["codesummarycron"])
  62. CloseNum = qu.IntAll(Config["closenum"])
  63. DayNum = qu.IntAll(Config["daynum"])
  64. //
  65. YearMinDownloadNum = qu.IntAll(Config["yearmindownload"])
  66. IntervalMaxNum = qu.IntAll(Config["intervalmaxnum"])
  67. }
  68. func main() {
  69. //低采集量爬虫新建任务
  70. LuaYearMinCodeCreateTask()
  71. c := cron.New()
  72. c.Start()
  73. c.AddFunc(EveryDayDownloadTime, GetDownloadNumber) //统计下载量
  74. c.AddFunc(UpdateStateCron, ResetDataState) //更新数据状态
  75. c.AddFunc(CreateTaskCron, CreateTaskProcess) //创建任务
  76. c.AddFunc(CloseTaskCron, CloseTask) //关闭任务
  77. c.AddFunc(CodeSummaryCron, SummaryCode) //上架爬虫信息汇总
  78. //统计爬虫历史下载量制定任务周期
  79. // GetSpidercode()
  80. // TagCode()
  81. // CycleTime()
  82. ch := make(chan bool, 1)
  83. <-ch
  84. }