preview.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package v1
  2. import (
  3. "net/http"
  4. "strconv"
  5. "github.com/allanpk716/ChineseSubFinder/pkg"
  6. "github.com/allanpk716/ChineseSubFinder/pkg/preview_queue"
  7. backend2 "github.com/allanpk716/ChineseSubFinder/pkg/types/backend"
  8. "github.com/gin-gonic/gin"
  9. )
  10. // PreviewAdd 添加需要预览的任务
  11. func (cb *ControllerBase) PreviewAdd(c *gin.Context) {
  12. var err error
  13. defer func() {
  14. // 统一的异常处理
  15. cb.ErrorProcess(c, "PreviewAdd", err)
  16. }()
  17. job := preview_queue.Job{}
  18. err = c.ShouldBindJSON(&job)
  19. if err != nil {
  20. return
  21. }
  22. cb.cronHelper.Downloader.PreviewQueue.Add(&job)
  23. c.JSON(http.StatusOK, backend2.ReplyCommon{Message: "ok"})
  24. return
  25. }
  26. // PreviewList 列举预览任务
  27. func (cb *ControllerBase) PreviewList(c *gin.Context) {
  28. var err error
  29. defer func() {
  30. // 统一的异常处理
  31. cb.ErrorProcess(c, "PreviewList", err)
  32. }()
  33. listJob := cb.cronHelper.Downloader.PreviewQueue.ListJob()
  34. c.JSON(http.StatusOK, preview_queue.Reply{
  35. Jobs: listJob,
  36. })
  37. }
  38. // PreviewIsJobInQueue 预览的任务是否在列表中,或者说是在执行中
  39. func (cb *ControllerBase) PreviewIsJobInQueue(c *gin.Context) {
  40. var err error
  41. defer func() {
  42. // 统一的异常处理
  43. cb.ErrorProcess(c, "PreviewIsJobInQueue", err)
  44. }()
  45. job := preview_queue.Job{}
  46. err = c.ShouldBindJSON(&job)
  47. if err != nil {
  48. return
  49. }
  50. found := cb.cronHelper.Downloader.PreviewQueue.IsJobInQueue(&preview_queue.Job{
  51. VideoFPath: job.VideoFPath,
  52. })
  53. c.JSON(http.StatusOK, backend2.ReplyCommon{Message: strconv.FormatBool(found)})
  54. return
  55. }
  56. // PreviewGetExportInfo 预览的任务的导出信息
  57. func (cb *ControllerBase) PreviewGetExportInfo(c *gin.Context) {
  58. var err error
  59. defer func() {
  60. // 统一的异常处理
  61. cb.ErrorProcess(c, "PreviewGetExportInfo", err)
  62. }()
  63. job := preview_queue.Job{}
  64. err = c.ShouldBindJSON(&job)
  65. if err != nil {
  66. return
  67. }
  68. m3u8, subPath, err := cb.cronHelper.Downloader.PreviewQueue.GetVideoHLSAndSubByTimeRangeExportPathInfo(job.VideoFPath, job.SubFPath, job.StartTime, job.EndTime)
  69. if err != nil {
  70. return
  71. }
  72. c.JSON(http.StatusOK, preview_queue.Job{
  73. VideoFPath: m3u8,
  74. SubFPath: subPath,
  75. })
  76. return
  77. }
  78. func (cb *ControllerBase) PreviewCleanUp(c *gin.Context) {
  79. var err error
  80. defer func() {
  81. // 统一的异常处理
  82. cb.ErrorProcess(c, "PreviewCleanUp", err)
  83. }()
  84. err = pkg.ClearVideoAndSubPreviewCacheFolder()
  85. if err != nil {
  86. return
  87. }
  88. c.JSON(http.StatusOK, backend2.ReplyCommon{Message: "ok"})
  89. }