global_value.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package common
  2. import (
  3. "github.com/allanpk716/ChineseSubFinder/internal/types/backend/ws"
  4. "github.com/huandu/go-clone"
  5. "sync"
  6. )
  7. func SetAccessToken(newToken string) {
  8. defer mutexAccessToken.Unlock()
  9. mutexAccessToken.Lock()
  10. accessToken = newToken
  11. }
  12. func GetAccessToken() string {
  13. defer mutexAccessToken.Unlock()
  14. mutexAccessToken.Lock()
  15. return accessToken
  16. }
  17. // GetSubScanJobStatus 只用于获取,不是设置值,因为创建了实例的副本
  18. func GetSubScanJobStatus() *ws.SubDownloadJobInfo {
  19. var tmpSubDownloadJobInfoLock *ws.SubDownloadJobInfo
  20. subDownloadJobInfoLock.Lock()
  21. tmpSubDownloadJobInfoLock = clone.Clone(subDownloadJobInfo).(*ws.SubDownloadJobInfo)
  22. subDownloadJobInfoLock.Unlock()
  23. return tmpSubDownloadJobInfoLock
  24. }
  25. // SetSubScanJobStatusPreparing 设置扫描字幕任务的状态为准备
  26. func SetSubScanJobStatusPreparing(startedTime string) {
  27. subDownloadJobInfoLock.Lock()
  28. if subDownloadJobInfo == nil {
  29. subDownloadJobInfo = &ws.SubDownloadJobInfo{}
  30. }
  31. subDownloadJobInfo.Status = ws.Preparing
  32. subDownloadJobInfo.StartedTime = startedTime
  33. subDownloadJobInfoLock.Unlock()
  34. }
  35. // SetSubScanJobStatusScanMovie 设置扫描字幕任务的状态为运行
  36. func SetSubScanJobStatusScanMovie(WorkingUnitIndex, UnitCount int, WorkingUnitName string) {
  37. subDownloadJobInfoLock.Lock()
  38. if subDownloadJobInfo == nil {
  39. subDownloadJobInfo = &ws.SubDownloadJobInfo{}
  40. }
  41. subDownloadJobInfo.Status = ws.ScanMovie
  42. subDownloadJobInfo.WorkingUnitIndex = WorkingUnitIndex
  43. subDownloadJobInfo.UnitCount = UnitCount
  44. subDownloadJobInfo.WorkingUnitName = WorkingUnitName
  45. subDownloadJobInfoLock.Unlock()
  46. }
  47. // SetSubScanJobStatusScanSeriesMain 设置扫描字幕任务的状态为运行
  48. func SetSubScanJobStatusScanSeriesMain(WorkingUnitIndex, UnitCount int, WorkingUnitName string) {
  49. subDownloadJobInfoLock.Lock()
  50. if subDownloadJobInfo == nil {
  51. subDownloadJobInfo = &ws.SubDownloadJobInfo{}
  52. }
  53. subDownloadJobInfo.Status = ws.ScanSeries
  54. subDownloadJobInfo.WorkingUnitIndex = WorkingUnitIndex
  55. subDownloadJobInfo.UnitCount = UnitCount
  56. subDownloadJobInfo.WorkingUnitName = WorkingUnitName
  57. subDownloadJobInfoLock.Unlock()
  58. }
  59. // SetSubScanJobStatusWaiting 设置扫描字幕任务的状态为等待
  60. func SetSubScanJobStatusWaiting(startedTime string) {
  61. subDownloadJobInfoLock.Lock()
  62. if subDownloadJobInfo == nil {
  63. subDownloadJobInfo = &ws.SubDownloadJobInfo{}
  64. }
  65. subDownloadJobInfo.Status = ws.Waiting
  66. subDownloadJobInfo.StartedTime = startedTime
  67. subDownloadJobInfoLock.Unlock()
  68. }
  69. // SetSubScanJobStatusNil 如果总任务停止了,那么就需要设置为 nil,这样定时器发送的时候就会判断是否为 nil,是就不会继续触发
  70. // 如果总任务开始了,是否是立即开始都会由实例化操作
  71. func SetSubScanJobStatusNil() {
  72. subDownloadJobInfoLock.Lock()
  73. subDownloadJobInfo = nil
  74. subDownloadJobInfoLock.Unlock()
  75. }
  76. var (
  77. accessToken = ""
  78. mutexAccessToken sync.Mutex
  79. )
  80. var (
  81. subDownloadJobInfo *ws.SubDownloadJobInfo
  82. subDownloadJobInfoLock sync.Mutex
  83. )