base_router.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. settings *settings.Settings, // 设置实例
  15. router *gin.Engine,
  16. cronHelper *cron_helper.CronHelper,
  17. restartSignal chan interface{},
  18. ) (*base.ControllerBase, *v1.ControllerBase) {
  19. // ----------------------------------------------
  20. // 设置 TMDB API 的本地 Client,用户自己的 API Key
  21. var err error
  22. var tmdbApi *tmdb_api.TmdbApi
  23. if settings.AdvancedSettings.TmdbApiSettings.Enable == true && settings.AdvancedSettings.TmdbApiSettings.ApiKey != "" {
  24. tmdbApi, err = tmdb_api.NewTmdbHelper(cronHelper.Logger, settings.AdvancedSettings.TmdbApiSettings.ApiKey, settings.AdvancedSettings.ProxySettings)
  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.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.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. // v1路由: /v1/xxx
  66. GroupV1 := router.Group("/" + cbV1.GetVersion())
  67. {
  68. GroupV1.Use(middle.CheckAuth())
  69. GroupV1.GET("/settings", cbV1.SettingsHandler)
  70. GroupV1.PUT("/settings", cbV1.SettingsHandler)
  71. GroupV1.POST("/daemon/start", cbV1.DaemonStartHandler)
  72. GroupV1.POST("/daemon/stop", cbV1.DaemonStopHandler)
  73. GroupV1.GET("/daemon/status", cbV1.DaemonStatusHandler)
  74. GroupV1.GET("/jobs/list", cbV1.JobsListHandler)
  75. GroupV1.POST("/jobs/change-job-status", cbV1.ChangeJobStatusHandler)
  76. GroupV1.POST("/jobs/log", cbV1.JobLogHandler)
  77. //GroupV1.POST("/video/list/refresh", cbV1.RefreshVideoListHandler)
  78. GroupV1.GET("/video/list/refresh-status", cbV1.RefreshVideoListStatusHandler)
  79. //GroupV1.GET("/video/list", cbV1.VideoListHandler)
  80. GroupV1.POST("/video/list/add", cbV1.VideoListAddHandler)
  81. GroupV1.POST("/video/list/refresh_main_list", cbV1.RefreshMainList)
  82. GroupV1.GET("/video/list/video_main_list", cbV1.VideoMainList)
  83. GroupV1.POST("/video/list/movie_poster", cbV1.MoviePoster)
  84. GroupV1.POST("/video/list/series_poster", cbV1.SeriesPoster)
  85. GroupV1.POST("/video/list/one_movie_subs", cbV1.OneMovieSubs)
  86. GroupV1.POST("/video/list/one_series_subs", cbV1.OneSeriesSubs)
  87. GroupV1.POST("/video/list/scan_skip_info", cbV1.ScanSkipInfo)
  88. GroupV1.PUT("/video/list/scan_skip_info", cbV1.ScanSkipInfo)
  89. GroupV1.POST("/subtitles/refresh_media_server_sub_list", cbV1.RefreshMediaServerSubList)
  90. GroupV1.POST("/subtitles/manual_upload_2_local", cbV1.ManualUploadSubtitle2Local)
  91. GroupV1.GET("/subtitles/list_manual_upload_2_local_job", cbV1.ListManualUploadSubtitle2LocalJob)
  92. GroupV1.POST("/subtitles/is_manual_upload_2_local_in_queue", cbV1.IsManualUploadSubtitle2LocalJobInQueue)
  93. }
  94. GroupAPIV1 := router.Group("/api/v1")
  95. {
  96. GroupAPIV1.Use(middle.CheckApiAuth())
  97. GroupAPIV1.POST("/add-job", cbV1.AddJobHandler)
  98. GroupAPIV1.GET("/job-status", cbV1.GetJobStatusHandler)
  99. GroupAPIV1.POST("/change-job-status", cbV1.ChangeJobStatusHandler)
  100. GroupAPIV1.POST("/add-video-played-info", cbV1.AddVideoPlayedInfoHandler)
  101. GroupAPIV1.DELETE("/del-video-played-info", cbV1.DelVideoPlayedInfoHandler)
  102. }
  103. return cbBase, cbV1
  104. }