using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.Entities;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Entities
{
///
/// Class Video
///
public class Video : BaseItem, IHasMediaStreams, IHasAspectRatio, IHasTags, ISupportsPlaceHolders
{
public bool IsMultiPart { get; set; }
public bool HasLocalAlternateVersions { get; set; }
public Guid? PrimaryVersionId { get; set; }
public List AdditionalPartIds { get; set; }
public List LocalAlternateVersionIds { get; set; }
public Video()
{
PlayableStreamFileNames = new List();
AdditionalPartIds = new List();
LocalAlternateVersionIds = new List();
Tags = new List();
SubtitleFiles = new List();
LinkedAlternateVersions = new List();
}
[IgnoreDataMember]
public int AlternateVersionCount
{
get
{
return LinkedAlternateVersions.Count + LocalAlternateVersionIds.Count;
}
}
public List LinkedAlternateVersions { get; set; }
///
/// Gets the linked children.
///
/// IEnumerable{BaseItem}.
public IEnumerable GetAlternateVersions()
{
var filesWithinSameDirectory = LocalAlternateVersionIds
.Select(i => LibraryManager.GetItemById(i))
.Where(i => i != null)
.OfType