1
0

controller_base.go 2.5 KB

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