package main import ( "github.com/allanpk716/ChineseSubFinder/common" "github.com/allanpk716/ChineseSubFinder/model" "github.com/robfig/cron/v3" "github.com/sirupsen/logrus" "github.com/spf13/viper" ) func init() { var err error log = model.GetLogger() configViper, err = InitConfigure() if err != nil { log.Errorln("InitConfigure", err) return } config, err = ReadConfig(configViper) if err != nil { log.Errorln("ReadConfig", err) return } } func main() { if log == nil { panic("log init error") } if configViper == nil { panic("init viper error") } if config == nil { panic("read config error") } downloader := NewDownloader() //任务还没执行完,下一次执行时间到来,下一次执行就跳过不执行 c := cron.New(cron.WithChain(cron.SkipIfStillRunning(cron.DefaultLogger))) // 定时器 entryID, err := c.AddFunc("@every " + config.EveryTime, func() { // 开始下载 err := downloader.DownloadSub(config.MovieFolder) if err != nil { log.Errorln("DownloadSub", err) return } }) if err != nil { log.Errorln("cron entryID:", entryID, "Error:", err) return } log.Infoln("First Time Download Start") // 立即触发第一次的更新 // 开始下载 err = downloader.DownloadSub(config.MovieFolder) if err != nil { log.Errorln("DownloadSub", err) return } log.Infoln("First Time Download End") c.Start() log.Infoln("Download Timer Started") // 阻塞 select {} } var( log *logrus.Logger configViper *viper.Viper config *common.Config )