main.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package main
  2. import (
  3. "github.com/allanpk716/ChineseSubFinder/common"
  4. "github.com/allanpk716/ChineseSubFinder/model"
  5. "github.com/robfig/cron/v3"
  6. "github.com/sirupsen/logrus"
  7. "github.com/spf13/viper"
  8. )
  9. func init() {
  10. var err error
  11. log = model.GetLogger()
  12. configViper, err = InitConfigure()
  13. if err != nil {
  14. log.Errorln("InitConfigure", err)
  15. return
  16. }
  17. config, err = ReadConfig(configViper)
  18. if err != nil {
  19. log.Errorln("ReadConfig", err)
  20. return
  21. }
  22. }
  23. func main() {
  24. if log == nil {
  25. panic("log init error")
  26. }
  27. if configViper == nil {
  28. panic("init viper error")
  29. }
  30. if config == nil {
  31. panic("read config error")
  32. }
  33. downloader := NewDownloader()
  34. //任务还没执行完,下一次执行时间到来,下一次执行就跳过不执行
  35. c := cron.New(cron.WithChain(cron.SkipIfStillRunning(cron.DefaultLogger)))
  36. // 定时器
  37. entryID, err := c.AddFunc("@every " + config.EveryTime, func() {
  38. // 开始下载
  39. err := downloader.DownloadSub(config.MovieFolder)
  40. if err != nil {
  41. log.Errorln("DownloadSub", err)
  42. return
  43. }
  44. })
  45. if err != nil {
  46. log.Errorln("cron entryID:", entryID, "Error:", err)
  47. return
  48. }
  49. log.Infoln("First Time Download Start")
  50. // 立即触发第一次的更新
  51. // 开始下载
  52. err = downloader.DownloadSub(config.MovieFolder)
  53. if err != nil {
  54. log.Errorln("DownloadSub", err)
  55. return
  56. }
  57. log.Infoln("First Time Download End")
  58. c.Start()
  59. log.Infoln("Download Timer Started")
  60. // 阻塞
  61. select {}
  62. }
  63. var(
  64. log *logrus.Logger
  65. configViper *viper.Viper
  66. config *common.Config
  67. )