main.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. httpProxy := config.HttpProxy
  34. if config.UseProxy == false {
  35. httpProxy = ""
  36. }
  37. // 判断文件夹是否存在
  38. if model.IsDir(config.MovieFolder) == false {
  39. log.Errorln("MovieFolder not found")
  40. return
  41. }
  42. log.Infoln("MovieFolder:", config.MovieFolder)
  43. // 下载实例
  44. downloader := NewDownloader(common.ReqParam{
  45. HttpProxy: httpProxy,
  46. DebugMode: config.DebugMode,
  47. SaveMultiSub: config.SaveMultiSub,
  48. FoundExistSubFileThanSkip: config.FoundExistSubFileThanSkip,
  49. })
  50. //任务还没执行完,下一次执行时间到来,下一次执行就跳过不执行
  51. c := cron.New(cron.WithChain(cron.SkipIfStillRunning(cron.DefaultLogger)))
  52. // 定时器
  53. entryID, err := c.AddFunc("@every " + config.EveryTime, func() {
  54. // 开始下载
  55. err := downloader.DownloadSub(config.MovieFolder)
  56. if err != nil {
  57. log.Errorln("DownloadSub", err)
  58. return
  59. }
  60. })
  61. if err != nil {
  62. log.Errorln("cron entryID:", entryID, "Error:", err)
  63. return
  64. }
  65. log.Infoln("First Time Download Start")
  66. // 立即触发第一次的更新
  67. // 开始下载
  68. err = downloader.DownloadSub(config.MovieFolder)
  69. if err != nil {
  70. log.Errorln("DownloadSub", err)
  71. return
  72. }
  73. log.Infoln("First Time Download End")
  74. c.Start()
  75. log.Infoln("Download Timer Started...")
  76. // 阻塞
  77. select {}
  78. }
  79. var(
  80. log *logrus.Logger
  81. configViper *viper.Viper
  82. config *common.Config
  83. )