const Path = require('path') const { encodeUriPath } = require('../../utils/fileUtils') class VideoTrack { constructor() { this.index = null this.duration = null this.title = null this.contentUrl = null this.mimeType = null this.codec = null this.metadata = null } toJSON() { return { index: this.index, duration: this.duration, title: this.title, contentUrl: this.contentUrl, mimeType: this.mimeType, codec: this.codec, metadata: this.metadata ? this.metadata.toJSON() : null } } setData(itemId, videoFile) { this.index = videoFile.index this.duration = videoFile.duration this.title = videoFile.metadata.filename || '' this.contentUrl = Path.join(`${global.RouterBasePath}/api/items/${itemId}/file/${videoFile.ino}`, encodeUriPath(videoFile.metadata.relPath)) this.mimeType = videoFile.mimeType this.codec = videoFile.codec this.metadata = videoFile.metadata.clone() } setFromStream(title, duration, contentUrl) { this.index = 1 this.duration = duration this.title = title this.contentUrl = contentUrl this.mimeType = 'application/vnd.apple.mpegurl' } } module.exports = VideoTrack