public override BaseItem CreateInstance(IMediaLocation location, IEnumerable <InitializationParameter> setup) { var entity = new T(); entity.Assign(location, setup, GetId(location)); return(entity); }
public static bool IsArtistFolder(this IMediaLocation location) { IFolderMediaLocation folder = location as IFolderMediaLocation; if (folder != null) { if (Path.HasExtension(folder.Path)) { return(false); } if (MusicHelper.IsAlbumFolder(folder.Path)) { return(false); } DirectoryInfo directoryInfo = new DirectoryInfo(folder.Path); foreach (DirectoryInfo directory in directoryInfo.GetDirectories()) { if (IsAlbumFolder(directory.FullName)) { return(true); } } return(false); } return(false); }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup) { factory = null; setup = null; bool isMovie = false; MediaType mediaType = MediaType.Unknown; List<IMediaLocation> volumes = null; var folder = location as IFolderMediaLocation; if (folder != null && !folder.ContainsChild(FolderResolver.IGNORE_FOLDER)) { DetectFolderWhichIsMovie(folder, out isMovie, out mediaType, out volumes); } else { if (location.IsIso()) { isMovie = true; mediaType = MediaType.ISO; } else { isMovie = location.IsVideo(); } } if (isMovie) { factory = BaseItemFactory<Movie>.Instance; setup = new List<InitializationParameter>() { new MediaTypeInitializationParameter() {MediaType = mediaType} }; if (volumes != null && volumes.Count > 0) { (setup as List<InitializationParameter>).Add(new MovieVolumeInitializationParameter() { Volumes = volumes }); } } }
private bool IsDvd(IMediaLocation location, out bool containsIfo) { bool isDvd = false; containsIfo = false; var folder = location as IFolderMediaLocation; if (folder != null && folder.Children != null) { foreach (var item in folder.Children) { isDvd |= Helper.IsVob(item.Path); if (item.Path.ToUpper().EndsWith("VIDEO_TS")) { isDvd = true; containsIfo = true; } containsIfo |= Helper.IsIfo(item.Path); if (isDvd && containsIfo) { break; } } } return(isDvd); }
public IMediaLocation Create(string path) { //Debug.Assert(path != null); (null path okay sometimes) if (path == null) { return(null); } if (Helper.IsShortcut(path)) { path = Helper.ResolveShortcut(path); } IMediaLocation location = null; if (Directory.Exists(path)) { var info = new DirectoryInfo(path).ToFileInfo(); location = new FolderMediaLocation(info, null); } else if (File.Exists(path)) { var info = new System.IO.FileInfo(path).ToFileInfo(); if (path.ToLower().EndsWith(".vf")) { location = new VirtualFolderMediaLocation(info, null); } else { location = new MediaLocation(info, null); } } return(location); }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; if (!location.IsHidden()) { bool isFolder = !Path.HasExtension(location.Path); bool containsIfo = false; bool isDvd = isFolder ? IsDvd(location, out containsIfo) : false; bool isIso = isFolder ? false : Helper.IsIso(location.Path); bool isBD = isFolder ? Helper.IsBluRayFolder(location.Path, null) : false; bool isVideo = !(location is IFolderMediaLocation) && (isIso || isBD || Helper.IsVideo(location.Path) || location.IsVob()); if ((isDvd || isBD || isVideo) && TVUtils.IsEpisode(location.Path)) { if (isBD) { setup = new List <InitializationParameter>() { new MediaTypeInitializationParameter() { MediaType = MediaType.BluRay } }; } else if (containsIfo || isIso) { MediaType mt = isIso ? MediaType.ISO : MediaType.DVD; setup = new List <InitializationParameter>() { new MediaTypeInitializationParameter() { MediaType = mt } }; } else if (isVideo) { MediaType mt = location.GetVideoMediaType(); setup = new List <InitializationParameter>() { new MediaTypeInitializationParameter() { MediaType = mt } }; } factory = BaseItemFactory <Episode> .Instance; } } }
public Type ResolveType(IMediaLocation location) { BaseItemFactory factory; IEnumerable <InitializationParameter> setup; ResolveEntity(location, out factory, out setup); return(factory == null ? null : factory.EntityType); }
private void RefreshUserSettings(IMediaLocation location) { VodcastContents parser = new VodcastContents(location.Contents); this.Url = parser.Url; this.DownloadPolicy = parser.DownloadPolicy; this.FilesToRetain = parser.FilesToRetain; }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; bool isMovie = false; MediaType mediaType = MediaType.Unknown; List <IMediaLocation> volumes = null; if (location.IsHidden()) { return; } var folder = location as IFolderMediaLocation; if (folder != null && !folder.ContainsChild(FolderResolver.IGNORE_FOLDER) && folder.Name.ToUpper() != TrailersPath) { DetectFolderWhichIsMovie(folder, out isMovie, out mediaType, out volumes); } else { if (location.IsIso()) { isMovie = true; mediaType = MediaType.ISO; } else { isMovie = location.IsVideo(); if (isMovie) { mediaType = location.GetVideoMediaType(); } } } if (isMovie) { factory = BaseItemFactory <Movie> .Instance; setup = new List <InitializationParameter>() { new MediaTypeInitializationParameter() { MediaType = mediaType } }; if (volumes != null && volumes.Count > 0) { (setup as List <InitializationParameter>).Add(new MovieVolumeInitializationParameter() { Volumes = volumes }); } } }
internal Item CreateItem(IMediaLocation location) { Item item = null; foreach (var factory in config.ItemFactories) { item = factory.CreateItem(location, this); if (item != null) break; } return item; }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup) { factory = null; setup = null; if (!location.IsHidden() && location.IsVodcast()) { factory = BaseItemFactory<VodCast>.Instance; } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; if (location.IsVodcast()) { factory = BaseItemFactory <VodCast> .Instance; } }
public static bool IsBoxSetFolder(this IMediaLocation location) { IFolderMediaLocation folder = location as IFolderMediaLocation; if (folder != null) { int start = location.Path.TrimEnd('\\').LastIndexOf('\\'); return(location.Path.Substring(start).ToLower().Contains("[boxset]")); } return(false); }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup) { factory = null; setup = null; if (!(location is IFolderMediaLocation) && Helper.IsVideo(location.Path) && TVUtils.IsEpisode(location.Path)) { factory = BaseItemFactory<Episode>.Instance; } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup) { factory = null; setup = null; if (location is IFolderMediaLocation && !location.IsHidden() && TVUtils.IsSeasonFolder(location.Path)) { factory = BaseItemFactory<Season>.Instance; } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; if (!(location is IFolderMediaLocation) && Helper.IsVideo(location.Path) && TVUtils.IsEpisode(location.Path)) { factory = BaseItemFactory <Episode> .Instance; } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; if (location is IFolderMediaLocation && !MusicHelper.IsHidden(location.Path) && MusicHelper.IsArtistAlbumFolder(location.Path)) { factory = BaseItemFactory <ArtistAlbum> .Instance; } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup) { factory = null; setup = null; if (location is IFolderMediaLocation && !MusicHelper.IsHidden(location.Path) && MusicHelper.IsAlbumFolder(location.Path)) { factory = BaseItemFactory<Album>.Instance; } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; if (location is IFolderMediaLocation && !location.IsHidden() && TVUtils.IsSeasonFolder(location.Path)) { factory = BaseItemFactory <Season> .Instance; } }
public T GetItem <T>(IMediaLocation location) where T : BaseItem { BaseItem item = null; BaseItemFactory factory; IEnumerable <InitializationParameter> setup; EntityResolver.ResolveEntity(location, out factory, out setup); if (factory != null) { item = factory.CreateInstance(location, setup); } return(item as T); }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup) { factory = null; setup = null; var folderLocation = location as IFolderMediaLocation; if (folderLocation != null && !folderLocation.IsHidden()) { if ( location.IsSeriesFolder() || folderLocation.ContainsChild("series.xml")) { factory = BaseItemFactory<Series>.Instance; } } }
public override void Assign(IMediaLocation location, IEnumerable<InitializationParameter> parameters, Guid id) { base.Assign(location, parameters, id); if (parameters != null) { foreach (var parameter in parameters) { var movieVolumeParam = parameter as MovieVolumeInitializationParameter; if (movieVolumeParam != null) { VolumePaths = movieVolumeParam.Volumes.Select(o => o.Path).ToList(); // this is how we calculate dates on movies ... min of all the actual movie paths DateCreated = movieVolumeParam.Volumes.Select(o => o.DateCreated).Min(); } } } }
public override void Assign(IMediaLocation location, IEnumerable <InitializationParameter> parameters, Guid id) { base.Assign(location, parameters, id); if (parameters != null) { foreach (var parameter in parameters) { var mediaTypeParam = parameter as MediaTypeInitializationParameter; if (mediaTypeParam != null) { MediaType = mediaTypeParam.MediaType; } } } }
public void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; foreach (var item in this) { item.ResolveEntity(location, out factory, out setup); if (factory != null) { break; } } }
public virtual void Assign(IMediaLocation location, IEnumerable <InitializationParameter> parameters, Guid id) { this.Id = id; this.Path = location.Path; this.DateModified = location.DateModified; this.DateCreated = location.DateCreated; if (location is IFolderMediaLocation) { defaultName = location.Name; } else { defaultName = Helper.GetNameFromFile(location.Path); } }
public virtual void Assign(IMediaLocation location, IEnumerable <InitializationParameter> parameters, Guid id) { this.Id = id; this.Path = location.Path; this.DateModified = location.DateModified; this.DateCreated = location.DateCreated; if (location is IFolderMediaLocation) { defaultName = location.Name; } else { defaultName = System.IO.Path.GetFileNameWithoutExtension(location.Name); } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; var folderLocation = location as IFolderMediaLocation; if (folderLocation != null && !MusicHelper.IsHidden(folderLocation.Path)) { if (MusicHelper.IsArtistFolder(location)) { factory = BaseItemFactory <Artist> .Instance; } } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup) { factory = null; setup = null; var folderLocation = location as IFolderMediaLocation; if (folderLocation != null && !MusicHelper.IsHidden(folderLocation.Path)) { if (MusicHelper.IsArtistFolder(location)) { factory = BaseItemFactory<Artist>.Instance; } } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup) { factory = null; setup = null; if (!location.IsHidden()) { bool isFolder = !Path.HasExtension(location.Path); bool containsIfo = false; bool isDvd = isFolder ? IsDvd(location, out containsIfo) : false; bool isIso = isFolder ? false : Helper.IsIso(location.Path); bool isBD = isFolder ? Helper.IsBluRayFolder(location.Path, null) : false; bool isVideo = !(location is IFolderMediaLocation) && (isIso || isBD || Helper.IsVideo(location.Path) || location.IsVob()); if ( (isDvd || isBD || isVideo ) && TVUtils.IsEpisode(location.Path)) { if (isBD) { setup = new List<InitializationParameter>() { new MediaTypeInitializationParameter() {MediaType = MediaType.BluRay} }; } else if (containsIfo || isIso) { MediaType mt = isIso ? MediaType.ISO : MediaType.DVD; setup = new List<InitializationParameter>() { new MediaTypeInitializationParameter() {MediaType = mt} }; } else if (isVideo) { MediaType mt = location.GetVideoMediaType(); setup = new List<InitializationParameter>() { new MediaTypeInitializationParameter() {MediaType = mt} }; } factory = BaseItemFactory<Episode>.Instance; } } }
public IEnumerable <IMediaLocation> Recurse(IMediaLocation location) { var folder = location as IFolderMediaLocation; if (folder != null) { foreach (var child in folder.Children) { foreach (var decendant in Recurse(child)) { yield return(decendant); } yield return(child); } } yield return(location); }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup) { factory = null; setup = null; var folderLocation = location as IFolderMediaLocation; if (folderLocation != null && !folderLocation.IsHidden()) { if (location.IsBoxSetFolder()) { factory = BaseItemFactory<BoxSet>.Instance; } } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; var folderLocation = location as IFolderMediaLocation; if (folderLocation != null && !folderLocation.IsHidden()) { if (location.IsBoxSetFolder()) { factory = BaseItemFactory <BoxSet> .Instance; } } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; var folderLocation = location as IFolderMediaLocation; if (folderLocation != null) { if (location.IsSeriesFolder() || folderLocation.ContainsChild("series.xml")) { factory = BaseItemFactory <Series> .Instance; } } }
public Item GetItem(IMediaLocation location) { Item item = null; if (config.ItemRepository != null) { item = config.ItemRepository.GetItem<Item>(location.Id); if (config.ValidateItems && !item.IsValid()) { item = null; } } if (item == null) { item = CreateItem(location); } return item; }
public override void Assign(IMediaLocation location, IEnumerable <InitializationParameter> parameters, Guid id) { base.Assign(location, parameters, id); if (parameters != null) { foreach (var parameter in parameters) { var movieVolumeParam = parameter as MovieVolumeInitializationParameter; if (movieVolumeParam != null) { VolumePaths = movieVolumeParam.Volumes.Select(o => o.Path).ToList(); // this is how we calculate dates on movies ... min of all the actual movie paths DateCreated = movieVolumeParam.Volumes.Select(o => o.DateCreated).Min(); } } } }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup) { factory = null; setup = null; var folder = location as IFolderMediaLocation; if (!(folder==null) && !folder.IsHidden()) { if (folder.Children.Count > 0 && !ignoreFolders.Contains(folder.Name.ToLower())) { if (!folder.ContainsChild(IGNORE_FOLDER)) { factory = BaseItemFactory<Folder>.Instance; } } } return; }
public static bool IsSeriesFolder(this IMediaLocation location) { IFolderMediaLocation folder = location as IFolderMediaLocation; if (folder != null) { if (TVUtils.IsSeasonFolder(folder.Path)) { return(false); } int i = 0; foreach (IMediaLocation child in folder.Children) { if (child is IFolderMediaLocation && TVUtils.IsSeasonFolder(child.Path)) { return(true); // we have found at least one season folder } else { i++; } if (i >= 3) { return(false); // a folder with more than 3 non-season folders in will not be counted as a series } } foreach (IMediaLocation child in folder.Children) { if (!(child is IFolderMediaLocation) && child.IsVideo() && TVUtils.EpisodeNumberFromFile(child.Path, false) != null) { return(true); } } } return(false); }
private bool IsDvd(IMediaLocation location, out bool containsIfo) { bool isDvd = false; containsIfo = false; var folder = location as IFolderMediaLocation; if (folder != null && folder.Children != null) { foreach (var item in folder.Children) { isDvd |= Helper.IsVob(item.Path); if (item.Path.ToUpper().EndsWith("VIDEO_TS")) { isDvd = true; containsIfo = true; } containsIfo |= Helper.IsIfo(item.Path); if (isDvd && containsIfo) break; } } return isDvd; }
public Item CreateItem(IMediaLocation location, Library library) { Item item = null; var folderLocation = location as IFolderMediaLocation; if (folderLocation != null) { // check for HDDVD,DVD,BluRay // check for movie int videoCount = 0; int childFolderCount = 0; foreach (var childLocation in folderLocation.Children) { videoCount += childLocation.IsVideo() ? 1 : 0; childFolderCount += childLocation is IFolderMediaLocation ? 1 : 0; // TODO: config setting if (videoCount > 2 || childFolderCount > 0) break; } if (videoCount <= 2 && childFolderCount == 0) { item = new Movie(); } else { var folder = new Folder(); folder.Location = folderLocation; item = folder; } } else if (location.IsVideo() ) { item = new Movie(); } if (item != null) { item.Library = library; item.Name = Path.GetFileNameWithoutExtension(location.Path); item.Uri = location.Path; } return item; }
public override void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable <InitializationParameter> setup) { factory = null; setup = null; var folder = location as IFolderMediaLocation; if (!(folder == null) && !folder.IsHidden() && folder.Name.ToUpper() != MovieResolver.TrailersPath) { if (folder.Children.Count > 0 && !ignoreFolders.Contains(folder.Name.ToLower())) { if (!folder.ContainsChild(IGNORE_FOLDER)) { factory = BaseItemFactory <Folder> .Instance; } } } return; }
private void AddToCache(IMediaLocation item) { if (item is IFolderMediaLocation) { return; } var extension = System.IO.Path.GetExtension(item.Path).ToLower(); ImageFormat imageFormat = null; if (extension == ".png") { imageFormat = ImageFormat.Png; } else if (extension == ".jpg") { imageFormat = ImageFormat.Jpeg; } else if (extension == ".gif") { imageFormat = ImageFormat.Gif; } else if (extension == ".bmp") { imageFormat = ImageFormat.Bmp; } else { // bad file in image cache File.Delete(item.Path); return; } var match = infoRegex.Match(item.Name); if (match == null || match.Groups[1].Value == null) { // bad file File.Delete(item.Path); return; } bool isPrimary = match.Groups[1].Value == "z"; Guid id = new Guid(match.Groups[2].Value); int width = -1; int height = -1; if (!string.IsNullOrEmpty(match.Groups[3].Value)) { width = Int32.Parse(match.Groups[3].Value); } if (!string.IsNullOrEmpty(match.Groups[4].Value)) { height = Int32.Parse(match.Groups[4].Value); } var imageSet = GetImageSet(id); if (imageSet == null) { imageSet = new ImageSet(this, id); imageInfoCache[id] = imageSet; } var info = new ImageInfo(imageSet); info.ImageFormat = imageFormat; info.Date = item.DateModified > item.DateCreated ? item.DateModified : item.DateCreated; //upgrade logic if (width == -1 || height == -1) { Image image = Image.FromFile(item.Path); isPrimary = true; info.Width = image.Width; info.Height = image.Height; imageSet.PrimaryImage = info; image.Dispose(); File.Move(item.Path, info.Path); } else { info.Width = width; info.Height = height; } if (isPrimary) { imageSet.PrimaryImage = info; } else { imageSet.ResizedImages.Add(info); } }
public MockMediaLocationFactory(IMediaLocation location) { this.location = location; }
public static MediaType GetVideoMediaType(this IMediaLocation location) { return(MediaTypeResolver.DetermineType(location.Path)); }
public static bool IsVodcast(this IMediaLocation location) { return(location.Path.ToLower().EndsWith(".vodcast")); }
public override void Assign(IMediaLocation location, IEnumerable<InitializationParameter> parameters, Guid id) { base.Assign(location, parameters, id); this.location = location as IFolderMediaLocation; }
public static bool IsVob(this IMediaLocation location) { return(Helper.IsVob(location.Path)); }
public static bool IsHidden(this IMediaLocation location) { return((location.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden); }
public override void Assign(IMediaLocation location, IEnumerable<InitializationParameter> parameters, Guid id) { RefreshUserSettings(location); base.Assign(location, parameters, id); }
public override void Assign(IMediaLocation location, IEnumerable<InitializationParameter> parameters, Guid id) { base.Assign(location, parameters, id); if (parameters != null) { foreach (var parameter in parameters) { var mediaTypeParam = parameter as MediaTypeInitializationParameter; if (mediaTypeParam != null ) { MediaType = mediaTypeParam.MediaType; } } } }
public abstract BaseItem CreateInstance(IMediaLocation location, IEnumerable<InitializationParameter> setup);
public BaseItem GetItem(IMediaLocation location) { return(GetItem <BaseItem>(location)); }
public abstract void ResolveEntity(IMediaLocation location, out BaseItemFactory factory, out IEnumerable<InitializationParameter> setup);