]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/server-commands/videos/live.ts
Translated using Weblate (Japanese)
[github/Chocobozzz/PeerTube.git] / shared / server-commands / videos / live.ts
index d3665bc9082e93a955e10cc52d69c886a42ced15..578e6ede78d5c400651c29532339f68c74ca908c 100644 (file)
@@ -1,10 +1,6 @@
-/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
-
-import { expect } from 'chai'
 import ffmpeg, { FfmpegCommand } from 'fluent-ffmpeg'
-import { pathExists, readdir } from 'fs-extra'
-import { join } from 'path'
-import { buildAbsoluteFixturePath, wait } from '../miscs'
+import { buildAbsoluteFixturePath, wait } from '@shared/core-utils'
+import { VideoDetails, VideoInclude, VideoPrivacy } from '@shared/models'
 import { PeerTubeServer } from '../server/server'
 
 function sendRTMPStream (options: {
@@ -43,6 +39,7 @@ function sendRTMPStream (options: {
 
   if (process.env.DEBUG) {
     command.on('stderr', data => console.log(data))
+    command.on('stdout', data => console.log(data))
   }
 
   command.run()
@@ -89,41 +86,25 @@ async function waitUntilLivePublishedOnAllServers (servers: PeerTubeServer[], vi
   }
 }
 
-async function waitUntilLiveSavedOnAllServers (servers: PeerTubeServer[], videoId: string) {
+async function waitUntilLiveWaitingOnAllServers (servers: PeerTubeServer[], videoId: string) {
   for (const server of servers) {
-    await server.live.waitUntilSaved({ videoId })
+    await server.live.waitUntilWaiting({ videoId })
   }
 }
 
-async function checkLiveCleanupAfterSave (server: PeerTubeServer, videoUUID: string, resolutions: number[] = []) {
-  const basePath = server.servers.buildDirectory('streaming-playlists')
-  const hlsPath = join(basePath, 'hls', videoUUID)
-
-  if (resolutions.length === 0) {
-    const result = await pathExists(hlsPath)
-    expect(result).to.be.false
-
-    return
+async function waitUntilLiveReplacedByReplayOnAllServers (servers: PeerTubeServer[], videoId: string) {
+  for (const server of servers) {
+    await server.live.waitUntilReplacedByReplay({ videoId })
   }
+}
 
-  const files = await readdir(hlsPath)
-
-  // fragmented file and playlist per resolution + master playlist + segments sha256 json file
-  expect(files).to.have.lengthOf(resolutions.length * 2 + 2)
-
-  for (const resolution of resolutions) {
-    const fragmentedFile = files.find(f => f.endsWith(`-${resolution}-fragmented.mp4`))
-    expect(fragmentedFile).to.exist
-
-    const playlistFile = files.find(f => f.endsWith(`${resolution}.m3u8`))
-    expect(playlistFile).to.exist
-  }
+async function findExternalSavedVideo (server: PeerTubeServer, liveDetails: VideoDetails) {
+  const include = VideoInclude.BLACKLISTED
+  const privacyOneOf = [ VideoPrivacy.INTERNAL, VideoPrivacy.PRIVATE, VideoPrivacy.PUBLIC, VideoPrivacy.UNLISTED ]
 
-  const masterPlaylistFile = files.find(f => f.endsWith('-master.m3u8'))
-  expect(masterPlaylistFile).to.exist
+  const { data } = await server.videos.list({ token: server.accessToken, sort: '-publishedAt', include, privacyOneOf })
 
-  const shaFile = files.find(f => f.endsWith('-segments-sha256.json'))
-  expect(shaFile).to.exist
+  return data.find(v => v.name === liveDetails.name + ' - ' + new Date(liveDetails.publishedAt).toLocaleString())
 }
 
 export {
@@ -131,7 +112,10 @@ export {
   waitFfmpegUntilError,
   testFfmpegStreamError,
   stopFfmpeg,
+
   waitUntilLivePublishedOnAllServers,
-  waitUntilLiveSavedOnAllServers,
-  checkLiveCleanupAfterSave
+  waitUntilLiveReplacedByReplayOnAllServers,
+  waitUntilLiveWaitingOnAllServers,
+
+  findExternalSavedVideo
 }