X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fvideos%2Fshared%2Fvideo.model.ts;h=6e8dfaa6f4c9ef94a8297c2c0ff428b7bba2384b;hb=f5028693a896a3076dd286ac0030e3d8f78f5ebf;hp=438791368d3f77e427493d3522f3da4761310f26;hpb=93e1258c7cbc0d1235ca6d2a1f7c1875985328b8;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/videos/shared/video.model.ts b/client/src/app/videos/shared/video.model.ts index 438791368..6e8dfaa6f 100644 --- a/client/src/app/videos/shared/video.model.ts +++ b/client/src/app/videos/shared/video.model.ts @@ -1,10 +1,12 @@ import { Video as VideoServerModel, VideoFile } from '../../../../../shared' import { User } from '../../shared' +import { VideoResolution } from '../../../../../shared/models/videos/video-resolution.enum' export class Video implements VideoServerModel { author: string by: string createdAt: Date + updatedAt: Date categoryLabel: string category: number licenceLabel: string @@ -24,6 +26,8 @@ export class Video implements VideoServerModel { thumbnailUrl: string previewPath: string previewUrl: string + embedPath: string + embedUrl: string views: number likes: number dislikes: number @@ -45,7 +49,7 @@ export class Video implements VideoServerModel { constructor (hash: { author: string, - createdAt: string, + createdAt: Date | string, categoryLabel: string, category: number, licenceLabel: string, @@ -62,14 +66,21 @@ export class Video implements VideoServerModel { tags: string[], thumbnailPath: string, previewPath: string, + embedPath: string, views: number, likes: number, dislikes: number, nsfw: boolean, files: VideoFile[] }) { + let absoluteAPIUrl = API_URL + if (!absoluteAPIUrl) { + // The API is on the same domain + absoluteAPIUrl = window.location.origin + } + this.author = hash.author - this.createdAt = new Date(hash.createdAt) + this.createdAt = new Date(hash.createdAt.toString()) this.categoryLabel = hash.categoryLabel this.category = hash.category this.licenceLabel = hash.licenceLabel @@ -86,9 +97,11 @@ export class Video implements VideoServerModel { this.podHost = hash.podHost this.tags = hash.tags this.thumbnailPath = hash.thumbnailPath - this.thumbnailUrl = API_URL + hash.thumbnailPath + this.thumbnailUrl = absoluteAPIUrl + hash.thumbnailPath this.previewPath = hash.previewPath - this.previewUrl = API_URL + hash.previewPath + this.previewUrl = absoluteAPIUrl + hash.previewPath + this.embedPath = hash.embedPath + this.embedUrl = absoluteAPIUrl + hash.embedPath this.views = hash.views this.likes = hash.likes this.dislikes = hash.dislikes @@ -115,11 +128,19 @@ export class Video implements VideoServerModel { return (this.nsfw && (!user || user.displayNSFW === false)) } - getDefaultMagnetUri () { + getAppropriateMagnetUri (actualDownloadSpeed = 0) { if (this.files === undefined || this.files.length === 0) return '' + if (this.files.length === 1) return this.files[0].magnetUri + + // Find first video that is good for our download speed (remember they are sorted) + let betterResolutionFile = this.files.find(f => actualDownloadSpeed > (f.size / this.duration)) + + // If the download speed is too bad, return the lowest resolution we have + if (betterResolutionFile === undefined) { + betterResolutionFile = this.files.find(f => f.resolution === VideoResolution.H_240P) + } - // TODO: choose the original file - return this.files[0].magnetUri + return betterResolutionFile.magnetUri } patch (values: Object) {