base_router.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package backend
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/allanpk716/ChineseSubFinder/pkg/tmdb_api"
  6. "github.com/allanpk716/ChineseSubFinder/pkg/settings"
  7. "github.com/allanpk716/ChineseSubFinder/internal/backend/controllers/base"
  8. v1 "github.com/allanpk716/ChineseSubFinder/internal/backend/controllers/v1"
  9. "github.com/allanpk716/ChineseSubFinder/internal/backend/middle"
  10. "github.com/allanpk716/ChineseSubFinder/pkg/logic/cron_helper"
  11. "github.com/gin-gonic/gin"
  12. )
  13. func InitRouter(
  14. router *gin.Engine,
  15. cronHelper *cron_helper.CronHelper,
  16. restartSignal chan interface{},
  17. ) (*base.ControllerBase, *v1.ControllerBase) {
  18. // ----------------------------------------------
  19. // 设置 TMDB API 的本地 Client,用户自己的 API Key
  20. var err error
  21. var tmdbApi *tmdb_api.TmdbApi
  22. if settings.Get().AdvancedSettings.TmdbApiSettings.Enable == true &&
  23. settings.Get().AdvancedSettings.TmdbApiSettings.ApiKey != "" {
  24. tmdbApi, err = tmdb_api.NewTmdbHelper(cronHelper.Logger, settings.Get().AdvancedSettings.TmdbApiSettings.ApiKey)
  25. if err != nil {
  26. cronHelper.Logger.Panicln("NewTmdbHelper", err)
  27. }
  28. if tmdbApi.Alive() == false {
  29. // 如果 tmdbApi 不可用,那么就不使用
  30. cronHelper.Logger.Errorln("tmdbApi.Alive() == false")
  31. tmdbApi = nil
  32. }
  33. }
  34. cronHelper.FileDownloader.MediaInfoDealers.SetTmdbHelperInstance(tmdbApi)
  35. // ----------------------------------------------
  36. cbBase := base.NewControllerBase(cronHelper.FileDownloader, restartSignal)
  37. cbV1 := v1.NewControllerBase(cronHelper, restartSignal)
  38. // --------------------------------------------------
  39. // 静态文件服务器
  40. // 添加电影的
  41. for i, path := range settings.Get().CommonSettings.MoviePaths {
  42. nowUrl := "/movie_dir_" + fmt.Sprintf("%d", i)
  43. cbV1.SetPathUrlMapItem(path, nowUrl)
  44. router.StaticFS(nowUrl, http.Dir(path))
  45. }
  46. // 添加连续剧的
  47. for i, path := range settings.Get().CommonSettings.SeriesPaths {
  48. nowUrl := "/series_dir_" + fmt.Sprintf("%d", i)
  49. cbV1.SetPathUrlMapItem(path, nowUrl)
  50. router.StaticFS(nowUrl, http.Dir(path))
  51. }
  52. // --------------------------------------------------
  53. // 基础的路由
  54. router.GET("/system-status", cbBase.SystemStatusHandler)
  55. router.POST("/setup", cbBase.SetupHandler)
  56. router.POST("/login", cbBase.LoginHandler)
  57. router.POST("/logout", middle.CheckAuth(), cbBase.LogoutHandler)
  58. router.POST("/change-pwd", middle.CheckAuth(), cbBase.ChangePwdHandler)
  59. router.POST("/check-path", cbBase.CheckPathHandler)
  60. router.POST("/check-emby-path", cbBase.CheckEmbyPathHandler)
  61. router.POST("/check-proxy", cbBase.CheckProxyHandler)
  62. router.POST("/check-cron", cbBase.CheckCronHandler)
  63. router.GET("/def-settings", cbBase.DefSettingsHandler)
  64. router.POST("/check-emby-settings", cbBase.CheckEmbySettingsHandler)
  65. router.POST("/check-tmdb-api-settings", cbBase.CheckTmdbApiHandler)
  66. // v1路由: /v1/xxx
  67. GroupV1 := router.Group("/" + cbV1.GetVersion())
  68. {
  69. GroupV1.GET("/preview/playlist/:videofpathbase64", cbV1.HlsPlaylist)
  70. GroupV1.GET("/preview/segments/:resolution/:segment/:videofpathbase64", cbV1.HlsSegment)
  71. GroupV1.Use(middle.CheckAuth())
  72. GroupV1.GET("/settings", cbV1.SettingsHandler)
  73. GroupV1.PUT("/settings", cbV1.SettingsHandler)
  74. GroupV1.POST("/daemon/start", cbV1.DaemonStartHandler)
  75. GroupV1.POST("/daemon/stop", cbV1.DaemonStopHandler)
  76. GroupV1.GET("/daemon/status", cbV1.DaemonStatusHandler)
  77. GroupV1.GET("/jobs/list", cbV1.JobsListHandler)
  78. GroupV1.POST("/jobs/change-job-status", cbV1.ChangeJobStatusHandler)
  79. GroupV1.POST("/jobs/log", cbV1.JobLogHandler)
  80. //GroupV1.POST("/video/list/refresh", cbV1.RefreshVideoListHandler)
  81. GroupV1.GET("/video/list/refresh-status", cbV1.RefreshVideoListStatusHandler)
  82. //GroupV1.GET("/video/list", cbV1.VideoListHandler)
  83. GroupV1.POST("/video/list/add", cbV1.VideoListAddHandler)
  84. GroupV1.POST("/video/list/refresh_main_list", cbV1.RefreshMainList)
  85. GroupV1.GET("/video/list/video_main_list", cbV1.VideoMainList)
  86. GroupV1.POST("/video/list/movie_poster", cbV1.MoviePoster)
  87. GroupV1.POST("/video/list/series_poster", cbV1.SeriesPoster)
  88. GroupV1.POST("/video/list/one_movie_subs", cbV1.OneMovieSubs)
  89. GroupV1.POST("/video/list/one_series_subs", cbV1.OneSeriesSubs)
  90. GroupV1.POST("/video/list/scan_skip_info", cbV1.ScanSkipInfo)
  91. GroupV1.PUT("/video/list/scan_skip_info", cbV1.ScanSkipInfo)
  92. GroupV1.POST("/subtitles/refresh_media_server_sub_list", cbV1.RefreshMediaServerSubList)
  93. GroupV1.POST("/subtitles/manual_upload_2_local", cbV1.ManualUploadSubtitle2Local)
  94. GroupV1.POST("/subtitles/manual_upload_result", cbV1.ManualUploadSubtitleResult)
  95. GroupV1.GET("/subtitles/list_manual_upload_2_local_job", cbV1.ListManualUploadSubtitle2LocalJob)
  96. GroupV1.POST("/subtitles/is_manual_upload_2_local_in_queue", cbV1.IsManualUploadSubtitle2LocalJobInQueue)
  97. GroupV1.POST("/preview/add", cbV1.PreviewAdd)
  98. GroupV1.GET("/preview/list", cbV1.PreviewList)
  99. GroupV1.POST("/preview/is_in_queue", cbV1.PreviewIsJobInQueue)
  100. GroupV1.POST("/preview/job_result", cbV1.PreviewJobResult)
  101. GroupV1.POST("/preview/export_info", cbV1.PreviewGetExportInfo)
  102. GroupV1.POST("/preview/clean_up", cbV1.PreviewCleanUp)
  103. }
  104. GroupAPIV1 := router.Group("/api/v1")
  105. {
  106. GroupAPIV1.Use(middle.CheckApiAuth())
  107. GroupAPIV1.POST("/add-job", cbV1.AddJobHandler)
  108. GroupAPIV1.GET("/job-status", cbV1.GetJobStatusHandler)
  109. GroupAPIV1.POST("/change-job-status", cbV1.ChangeJobStatusHandler)
  110. GroupAPIV1.POST("/add-video-played-info", cbV1.AddVideoPlayedInfoHandler)
  111. GroupAPIV1.DELETE("/del-video-played-info", cbV1.DelVideoPlayedInfoHandler)
  112. }
  113. return cbBase, cbV1
  114. }