main.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 = model.InitConfigure()
  13. if err != nil {
  14. log.Errorln("InitConfigure", err)
  15. return
  16. }
  17. config, err = model.ReadConfig(configViper)
  18. if err != nil {
  19. log.Errorln("ReadConfig", err)
  20. return
  21. }
  22. }
  23. // TODO 考虑加入 TV 相关季开播的信息读取(每一集都有对应的 nfo 文件,可以考虑从这里面读取),这样可以更加容易判断跳过老的剧集,近期下载了,字幕下载一次即可,无需反反复复
  24. func main() {
  25. if log == nil {
  26. panic("log init error")
  27. }
  28. if configViper == nil {
  29. panic("init viper error")
  30. }
  31. if config == nil {
  32. panic("read config error")
  33. }
  34. httpProxy := config.HttpProxy
  35. if config.UseProxy == false {
  36. httpProxy = ""
  37. }
  38. // 判断文件夹是否存在
  39. if model.IsDir(config.MovieFolder) == false {
  40. log.Errorln("MovieFolder not found")
  41. return
  42. }
  43. log.Infoln("MovieFolder:", config.MovieFolder)
  44. // ReloadBrowser 提前把浏览器下载好
  45. model.ReloadBrowser()
  46. //任务还没执行完,下一次执行时间到来,下一次执行就跳过不执行
  47. c := cron.New(cron.WithChain(cron.SkipIfStillRunning(cron.DefaultLogger)))
  48. // 定时器
  49. entryID, err := c.AddFunc("@every " + config.EveryTime, func() {
  50. DownLoadStart(httpProxy)
  51. })
  52. if err != nil {
  53. log.Errorln("cron entryID:", entryID, "Error:", err)
  54. return
  55. }
  56. log.Infoln("First Time Download Start")
  57. DownLoadStart(httpProxy)
  58. log.Infoln("First Time Download End")
  59. c.Start()
  60. // 阻塞
  61. select {}
  62. }
  63. func DownLoadStart(httpProxy string) {
  64. defer func() {
  65. log.Infoln("Download One End...")
  66. }()
  67. // 下载实例
  68. downloader := NewDownloader(common.ReqParam{
  69. HttpProxy: httpProxy,
  70. DebugMode: config.DebugMode,
  71. SaveMultiSub: config.SaveMultiSub,
  72. Threads: config.Threads,
  73. SubTypePriority: config.SubTypePriority,
  74. })
  75. log.Infoln("Download One Started...")
  76. // 开始下载
  77. err := downloader.DownloadSub4Movie(config.MovieFolder)
  78. if err != nil {
  79. log.Errorln("DownloadSub4Movie", err)
  80. return
  81. }
  82. err = downloader.DownloadSub4Series(config.SeriesFolder)
  83. if err != nil {
  84. log.Errorln("DownloadSub4Series", err)
  85. return
  86. }
  87. }
  88. var(
  89. log *logrus.Logger
  90. configViper *viper.Viper
  91. config *common.Config
  92. )