diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-03-19 13:44:55 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-03-19 13:44:55 -0400 |
| commit | b762d98fc45f875775e0c60c63a3b157776becdd (patch) | |
| tree | f52d92ed1dd88263b0e0e532d564b85b4c02b98f /MediaBrowser.Api/VideosService.cs | |
| parent | 683d8455c6ce75bcefc8749fe5a5d15d90a28625 (diff) | |
#712 - group multiple versions
Diffstat (limited to 'MediaBrowser.Api/VideosService.cs')
| -rw-r--r-- | MediaBrowser.Api/VideosService.cs | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/MediaBrowser.Api/VideosService.cs b/MediaBrowser.Api/VideosService.cs index 7d7baa576..476ea405c 100644 --- a/MediaBrowser.Api/VideosService.cs +++ b/MediaBrowser.Api/VideosService.cs @@ -31,9 +31,9 @@ namespace MediaBrowser.Api public string Id { get; set; } } - [Route("/Videos/{Id}/AlternateVersions", "GET")] - [Api(Description = "Gets alternate versions of a video.")] - public class GetAlternateVersions : IReturn<List<AlternateVersionInfo>> + [Route("/Videos/{Id}/Versions", "GET")] + [Api(Description = "Gets all versions of a video.")] + public class GetMediaVersions : IReturn<List<MediaVersionInfo>> { /// <summary> /// Gets or sets the id. @@ -113,32 +113,54 @@ namespace MediaBrowser.Api return ToOptimizedSerializedResultUsingCache(result); } - public object Get(GetAlternateVersions request) + public object Get(GetMediaVersions request) { var item = _libraryManager.GetItemById(new Guid(request.Id)); var video = (Video)item; - var items = video.GetAlternateVersions(); + var result = video.GetAlternateVersions().Select(GetVersionInfo).ToList(); - var result = items.Select(i => new AlternateVersionInfo + result.Add(GetVersionInfo(video)); + + result = result.OrderBy(i => + { + if (video.VideoType == VideoType.VideoFile) + { + return 0; + } + + return 1; + + }).ThenBy(i => i.Video3DFormat.HasValue ? 1 : 0) + .ThenByDescending(i => + { + var stream = i.MediaStreams.FirstOrDefault(m => m.Type == MediaStreamType.Video); + + return stream == null || stream.Width == null ? 0 : stream.Width.Value; + }) + .ToList(); + + return ToOptimizedSerializedResultUsingCache(result); + } + + private MediaVersionInfo GetVersionInfo(Video i) + { + return new MediaVersionInfo { Chapters = _itemRepo.GetChapters(i.Id).Select(c => _dtoService.GetChapterInfoDto(c, i)).ToList(), Id = i.Id.ToString("N"), IsoType = i.IsoType, LocationType = i.LocationType, - MediaStreams = _itemRepo.GetMediaStreams(new MediaStreamQuery { ItemId = i.Id }).ToList(), + MediaStreams = _itemRepo.GetMediaStreams(new MediaStreamQuery {ItemId = i.Id}).ToList(), Name = GetAlternateVersionName(i), Path = GetMappedPath(i), RunTimeTicks = i.RunTimeTicks, Video3DFormat = i.Video3DFormat, VideoType = i.VideoType, IsHD = i.IsHD - - }).ToList(); - - return ToOptimizedSerializedResultUsingCache(result); + }; } private string GetMappedPath(Video video) |
