subtitles.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. package v1
  2. import (
  3. "fmt"
  4. "net/http"
  5. "path/filepath"
  6. "strconv"
  7. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/manual_upload_sub_2_local"
  8. "github.com/ChineseSubFinder/ChineseSubFinder/pkg"
  9. backend2 "github.com/ChineseSubFinder/ChineseSubFinder/pkg/types/backend"
  10. "github.com/gin-gonic/gin"
  11. )
  12. // RefreshMediaServerSubList 刷新媒体服务器的字幕列表
  13. func (cb *ControllerBase) RefreshMediaServerSubList(c *gin.Context) {
  14. var err error
  15. defer func() {
  16. // 统一的异常处理
  17. cb.ErrorProcess(c, "RefreshMediaServerSubList", err)
  18. }()
  19. err = cb.videoScanAndRefreshHelper.RefreshMediaServerSubList()
  20. if err != nil {
  21. cb.log.Errorln("RefreshMediaServerSubList", err)
  22. return
  23. }
  24. c.JSON(http.StatusOK, backend2.ReplyCommon{Message: "ok"})
  25. return
  26. }
  27. // ManualUploadSubtitle2Local 人工上传字幕到本地
  28. func (cb *ControllerBase) ManualUploadSubtitle2Local(c *gin.Context) {
  29. var err error
  30. defer func() {
  31. // 统一的异常处理
  32. cb.ErrorProcess(c, "ManualUploadSubtitle2Local", err)
  33. }()
  34. videoFPath, ok := c.GetPostForm("video_f_path")
  35. if ok == false {
  36. err = fmt.Errorf("GetPostForm video_f_path failed")
  37. cb.log.Errorln(err)
  38. return
  39. }
  40. file, err := c.FormFile("file")
  41. if err != nil {
  42. err = fmt.Errorf("FormFile failed, err: %v", err)
  43. cb.log.Errorln(err)
  44. return
  45. }
  46. basePath, err := pkg.GetManualSubUploadCacheFolder()
  47. if err != nil {
  48. err = fmt.Errorf("GetManualSubUploadCacheFolder failed, err: %v", err)
  49. cb.log.Errorln(err)
  50. return
  51. }
  52. filename := filepath.Join(basePath, filepath.Base(file.Filename))
  53. if err = c.SaveUploadedFile(file, filename); err != nil {
  54. err = fmt.Errorf("SaveUploadedFile failed, err: %v", err)
  55. cb.log.Errorln(err)
  56. return
  57. }
  58. cb.cronHelper.Downloader.ManualUploadSub2Local.Add(&manual_upload_sub_2_local.Job{
  59. VideoFPath: videoFPath,
  60. SubFPath: filename,
  61. })
  62. c.JSON(http.StatusOK, backend2.ReplyCommon{Message: "ok"})
  63. return
  64. }
  65. // ListManualUploadSubtitle2LocalJob 列举人工上传字幕到本地的任务列表
  66. func (cb *ControllerBase) ListManualUploadSubtitle2LocalJob(c *gin.Context) {
  67. var err error
  68. defer func() {
  69. // 统一的异常处理
  70. cb.ErrorProcess(c, "ListManualUploadSubtitle2LocalJob", err)
  71. }()
  72. listJob := cb.cronHelper.Downloader.ManualUploadSub2Local.ListJob()
  73. c.JSON(http.StatusOK, manual_upload_sub_2_local.Reply{
  74. Jobs: listJob,
  75. })
  76. return
  77. }
  78. // IsManualUploadSubtitle2LocalJobInQueue 人工上传字幕到本地的任务是否在列表中,或者说是在执行中
  79. func (cb *ControllerBase) IsManualUploadSubtitle2LocalJobInQueue(c *gin.Context) {
  80. var err error
  81. defer func() {
  82. // 统一的异常处理
  83. cb.ErrorProcess(c, "IsManualUploadSubtitle2LocalJobInQueue", err)
  84. }()
  85. job := manual_upload_sub_2_local.Job{}
  86. err = c.ShouldBindJSON(&job)
  87. if err != nil {
  88. return
  89. }
  90. found := cb.cronHelper.Downloader.ManualUploadSub2Local.IsJobInQueue(&manual_upload_sub_2_local.Job{
  91. VideoFPath: job.VideoFPath,
  92. })
  93. c.JSON(http.StatusOK, backend2.ReplyCommon{Message: strconv.FormatBool(found)})
  94. return
  95. }
  96. // ManualUploadSubtitleResult 人工上传字幕到本地的任务的结果,成功 ok,不存在空,其他是失败
  97. func (cb *ControllerBase) ManualUploadSubtitleResult(c *gin.Context) {
  98. var err error
  99. defer func() {
  100. // 统一的异常处理
  101. cb.ErrorProcess(c, "ManualUploadSubtitleResult", err)
  102. }()
  103. job := manual_upload_sub_2_local.Job{}
  104. err = c.ShouldBindJSON(&job)
  105. if err != nil {
  106. return
  107. }
  108. result := cb.cronHelper.Downloader.ManualUploadSub2Local.JobResult(&manual_upload_sub_2_local.Job{
  109. VideoFPath: job.VideoFPath,
  110. })
  111. c.JSON(http.StatusOK, backend2.ReplyCommon{Message: result})
  112. return
  113. }
  114. // GetGenerateUploadURLHandle 获取申请临时上传字幕地址信息结构
  115. func (cb *ControllerBase) GetGenerateUploadURLHandle(c *gin.Context) {
  116. //var err error
  117. //defer func() {
  118. // // 统一的异常处理
  119. // cb.ErrorProcess(c, "GetGenerateUploadURLHandle", err)
  120. //}()
  121. //
  122. //job := api_hub.GetGenerateUploadURLReq{}
  123. //err = c.ShouldBindJSON(&job)
  124. //if err != nil {
  125. // return
  126. //}
  127. //
  128. //if pkg.IsFile(job.VideoFPath) == false {
  129. // err = fmt.Errorf("video file not exist")
  130. // return
  131. //}
  132. //
  133. //if pkg.IsFile(job.SubFPath) == false {
  134. // err = fmt.Errorf("sub file not exist")
  135. // return
  136. //}
  137. //
  138. //bok, fileInfo, err := cb.cronHelper.FileDownloader.SubParserHub.DetermineFileTypeFromFile(job.SubFPath)
  139. //if err != nil {
  140. // return
  141. //}
  142. //
  143. //if bok == false {
  144. // err = fmt.Errorf("sub file type not support")
  145. // return
  146. //}
  147. //
  148. //req := api_hub.GenerateUploadURLReq{}
  149. //if job.IsMovie == true {
  150. // // 电影
  151. // videoNfoInfo, err := decode.GetVideoNfoInfo4Movie(job.VideoFPath)
  152. // if err != nil {
  153. // return
  154. // }
  155. // if videoNfoInfo.ImdbId == "" {
  156. // err = fmt.Errorf("imdb id not exist")
  157. // return
  158. // }
  159. // req.ImdbId = videoNfoInfo.ImdbId
  160. // req.Title = videoNfoInfo.Title
  161. // req.IsMovie = true
  162. // req.Season = -1
  163. // req.Episode = -1
  164. //} else {
  165. // // 电视剧
  166. // videoNfoInfo, err := decode.GetVideoNfoInfoFromEpisode(job.VideoFPath)
  167. // if err != nil {
  168. // return
  169. // }
  170. // if videoNfoInfo.ImdbId == "" {
  171. // err = fmt.Errorf("imdb id not exist")
  172. // return
  173. // }
  174. // req.ImdbId = videoNfoInfo.ImdbId
  175. // req.Title = videoNfoInfo.Title
  176. // req.IsMovie = false
  177. // req.Season = job.Season
  178. // req.Episode = job.Episode
  179. //}
  180. //
  181. //sha256File, fileSize, err := pkg.Sha256File(job.SubFPath)
  182. //if err != nil {
  183. // return
  184. //}
  185. //req.SubSha256 = sha256File
  186. //req.Language = int(fileInfo.Lang)
  187. //req.Ext = filepath.Ext(job.SubFPath)
  188. //req.FileSize = fileSize
  189. //
  190. //c.JSON(http.StatusOK, req)
  191. //return
  192. }