controller_base.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package v1
  2. import (
  3. "net/http"
  4. "github.com/allanpk716/ChineseSubFinder/pkg/video_list_helper"
  5. "github.com/allanpk716/ChineseSubFinder/pkg/types/backend"
  6. "github.com/allanpk716/ChineseSubFinder/pkg/lock"
  7. "github.com/allanpk716/ChineseSubFinder/pkg/logic/cron_helper"
  8. "github.com/allanpk716/ChineseSubFinder/pkg/sub_formatter"
  9. "github.com/allanpk716/ChineseSubFinder/pkg/video_scan_and_refresh_helper"
  10. "github.com/gin-gonic/gin"
  11. "github.com/sirupsen/logrus"
  12. )
  13. type ControllerBase struct {
  14. log *logrus.Logger
  15. cronHelper *cron_helper.CronHelper
  16. pathUrlMap map[string]string
  17. videoScanAndRefreshHelper *video_scan_and_refresh_helper.VideoScanAndRefreshHelper
  18. videoListHelper *video_list_helper.VideoListHelper
  19. videoScanAndRefreshHelperIsRunning bool
  20. videoScanAndRefreshHelperLocker lock.Lock
  21. videoScanAndRefreshHelperErrMessage string
  22. restartSignal chan interface{}
  23. }
  24. func NewControllerBase(log *logrus.Logger, cronHelper *cron_helper.CronHelper, restartSignal chan interface{}) *ControllerBase {
  25. cb := &ControllerBase{
  26. log: log,
  27. cronHelper: cronHelper,
  28. pathUrlMap: make(map[string]string),
  29. // 这里因为不进行任务的添加,仅仅是扫描,所以 downloadQueue 可以为 nil
  30. videoScanAndRefreshHelper: video_scan_and_refresh_helper.NewVideoScanAndRefreshHelper(
  31. sub_formatter.GetSubFormatter(log, cronHelper.Settings.AdvancedSettings.SubNameFormatter),
  32. cronHelper.FileDownloader, nil),
  33. videoListHelper: video_list_helper.NewVideoListHelper(log, cronHelper.Settings),
  34. videoScanAndRefreshHelperLocker: lock.NewLock(),
  35. restartSignal: restartSignal,
  36. }
  37. return cb
  38. }
  39. func (cb *ControllerBase) SetPathUrlMapItem(path string, url string) {
  40. cb.pathUrlMap[path] = url
  41. }
  42. // GetPathUrlMap x://电影 -- /movie_dir_0 or x://电视剧 -- /series_dir_0
  43. func (cb *ControllerBase) GetPathUrlMap() map[string]string {
  44. return cb.pathUrlMap
  45. }
  46. func (cb *ControllerBase) Close() {
  47. cb.cronHelper.Stop()
  48. cb.videoScanAndRefreshHelper.Cancel()
  49. cb.videoScanAndRefreshHelperLocker.Close()
  50. }
  51. func (cb *ControllerBase) GetVersion() string {
  52. return "v1"
  53. }
  54. func (cb *ControllerBase) ErrorProcess(c *gin.Context, funcName string, err error) {
  55. if err != nil {
  56. cb.log.Errorln(funcName, err.Error())
  57. c.JSON(http.StatusInternalServerError, backend.ReplyCommon{Message: err.Error()})
  58. }
  59. }