controller_base.go 2.7 KB

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