my-video-playlists.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { uuidToShort } from '@shared/extra-utils'
  2. import express from 'express'
  3. import { VideosExistInPlaylists } from '../../../../shared/models/videos/playlist/video-exist-in-playlist.model'
  4. import { asyncMiddleware, authenticate } from '../../../middlewares'
  5. import { doVideosInPlaylistExistValidator } from '../../../middlewares/validators/videos/video-playlists'
  6. import { VideoPlaylistModel } from '../../../models/video/video-playlist'
  7. const myVideoPlaylistsRouter = express.Router()
  8. myVideoPlaylistsRouter.get('/me/video-playlists/videos-exist',
  9. authenticate,
  10. doVideosInPlaylistExistValidator,
  11. asyncMiddleware(doVideosInPlaylistExist)
  12. )
  13. // ---------------------------------------------------------------------------
  14. export {
  15. myVideoPlaylistsRouter
  16. }
  17. // ---------------------------------------------------------------------------
  18. async function doVideosInPlaylistExist (req: express.Request, res: express.Response) {
  19. const videoIds = req.query.videoIds.map(i => parseInt(i + '', 10))
  20. const user = res.locals.oauth.token.User
  21. const results = await VideoPlaylistModel.listPlaylistSummariesOf(user.Account.id, videoIds)
  22. const existObject: VideosExistInPlaylists = {}
  23. for (const videoId of videoIds) {
  24. existObject[videoId] = []
  25. }
  26. for (const result of results) {
  27. for (const element of result.VideoPlaylistElements) {
  28. existObject[element.videoId].push({
  29. playlistElementId: element.id,
  30. playlistId: result.id,
  31. playlistDisplayName: result.name,
  32. playlistShortUUID: uuidToShort(result.uuid),
  33. startTimestamp: element.startTimestamp,
  34. stopTimestamp: element.stopTimestamp
  35. })
  36. }
  37. }
  38. return res.json(existObject)
  39. }