/// <summary> /// Creates or finds an existing folder by 'Name' with a specific parentid. Returns an out addedTitle /// parameter if a new title was created, if title allready exists /// </summary> /// <param name="parentid"></param> /// <param name="Name"></param> /// <param name="titletype"></param> /// <param name="seriesNumber"></param> /// <param name="addedTitle"></param> /// <returns></returns> public static Title CreateFolderNonDuplicate(int?parentid, string Name, TitleTypes titletype, short?seriesNumber, out bool titleCreated) { // Build filter TitleFilter tf1 = new TitleFilter(TitleFilterType.Parent, parentid.ToString()); TitleFilter tf2 = new TitleFilter(TitleFilterType.Name, Name); List <TitleFilter> tf = new List <TitleFilter>(); tf.Add(tf1); tf.Add(tf2); List <Title> existingTitle = (from t in TitleCollectionManager.GetFilteredTitles(tf) where t.Name == Name select t).ToList(); if (existingTitle.Count() > 0) { titleCreated = false; return(existingTitle[0]); } else { Title addedTitle = null; titleCreated = true; return(CreateFolder(parentid, Name, titletype, seriesNumber)); } }
public static Title CreateTitle(int?parentid, string Name, TitleTypes titletype, string Tag, short?SeasonNumber, short?EpisodeNumber, Disk[] disks) { Title newTitle = new Title(); newTitle.Name = Name; if (parentid == null) { newTitle.TitleType = TitleTypes.Root | titletype; } else { newTitle.TitleType = titletype; newTitle.ParentTitleId = (int)parentid; if ((titletype & TitleTypes.Unknown) != 0) { // Title type is unknown. Attempt to find title type by looking at parent Title parent = GetTitle((int)parentid); if (parent != null) { if (((parent.TitleType & TitleTypes.TVShow) != 0) || (((parent.TitleType & TitleTypes.Season) != 0))) { newTitle.TitleType = TitleTypes.Episode; } if ((parent.TitleType & TitleTypes.Collection) != 0) { newTitle.TitleType = TitleTypes.Movie; } } } } newTitle.DateAdded = DateTime.Now; newTitle.SeasonNumber = SeasonNumber; newTitle.EpisodeNumber = EpisodeNumber; if (Tag != null) { newTitle.AddTag(Tag); } if (disks != null) { foreach (Disk disk in disks) { newTitle.AddDisk(disk); } } // Add the title now to get the title ID TitleCollectionManager.AddTitle(newTitle); // Get the new title from the DB and add it to the title list return(TitleCollectionManager.GetTitle(newTitle.Id)); }
/// <summary> /// Deletes all the user information from the database /// </summary> public static void DeleteAllDBData() { TitleCollectionManager.DeleteAllImages(); TitleCollectionManager.DeleteAllTitles(); TitleCollectionManager.DeleteAllPeopleData(); TitleCollectionManager.DeleteAllGenreMetaData(); ImageManager.CleanupCachedImages(); }
public List <Title> CreateTitlesFromPathArray(int?parentid, string[] path, string Tag) { // Create a list of all newly added titles List <Title> NewTitles = new List <Title>(); bool titleCreated = false; Title folderTitle; foreach (string file in path) { try { if (Directory.Exists(file)) { // Folder passed in. This is where St Sana kicks in Servant stsana = new Servant(); stsana.Log += new Servant.SSEventHandler(StSana_Log); stsana.BasePaths.Add(file); stsana.Scan(); int?a_parent; if (OMLEngine.Settings.OMLSettings.StSanaCreateTLFolder) { titleCreated = false; folderTitle = TitleCollectionManager.CreateFolderNonDuplicate(parentid, Path.GetFileName(file), TitleTypes.Collection, null, out titleCreated); a_parent = folderTitle.Id; if (titleCreated) { NewTitles.Add(folderTitle); } } else { a_parent = parentid; } if (stsana.Entities != null) { foreach (Entity e in stsana.Entities) { int?e_parent = a_parent; if (e.Name != file) { switch (e.EntityType) { case Serf.EntityType.COLLECTION: case Serf.EntityType.MOVIE: if ((e.Series.Count() > 1) || (OMLEngine.Settings.OMLSettings.StSanaAlwaysCreateMovieFolder)) { titleCreated = false; folderTitle = TitleCollectionManager.CreateFolderNonDuplicate(a_parent, e.Name, TitleTypes.Collection, null, out titleCreated); e_parent = folderTitle.Id; if (titleCreated) { NewTitles.Add(folderTitle); } } else { e_parent = a_parent; } break; case Serf.EntityType.TV_SHOW: titleCreated = false; folderTitle = TitleCollectionManager.CreateFolderNonDuplicate(a_parent, e.Name, TitleTypes.TVShow, null, out titleCreated); e_parent = folderTitle.Id; if (titleCreated) { NewTitles.Add(folderTitle); } break; } } foreach (Series s in e.Series) { int?s_parent = e_parent; // if the s.name and e.name are the same, its a movie, to be sure though lets check s.number, it should be // -1 for non tv shows. if (s.Name.ToUpperInvariant().CompareTo(e.Name.ToUpperInvariant()) != 0 || s.Number > -1) { //s_parent = CreateFolderNonDuplicate(e_parent, s.Name, TitleTypes.Collection, false); if (s.Name != e.Name) { switch (e.EntityType) { case Serf.EntityType.COLLECTION: case Serf.EntityType.MOVIE: if ((e_parent == a_parent) || (OMLEngine.Settings.OMLSettings.StSanaAlwaysCreateMovieFolder)) { titleCreated = false; folderTitle = TitleCollectionManager.CreateFolderNonDuplicate(e_parent, s.Name, TitleTypes.Collection, null, out titleCreated); s_parent = folderTitle.Id; if (titleCreated) { NewTitles.Add(folderTitle); } } else { s_parent = e_parent; } break; case Serf.EntityType.TV_SHOW: titleCreated = false; folderTitle = TitleCollectionManager.CreateFolderNonDuplicate(e_parent, s.Name, TitleTypes.Season, (short)s.Number, out titleCreated); s_parent = folderTitle.Id; if (titleCreated) { NewTitles.Add(folderTitle); } break; } } else { s_parent = e_parent; } } foreach (Video v in s.Videos) { StSana_Log("Processing " + v.Name); //int v_parent = CreateFolder(s_parent, Path.GetFileNameWithoutExtension(v.Name), TitleTypes.Collection, false); List <Disk> disks = new List <Disk>(); if ((e.EntityType == Serf.EntityType.COLLECTION) || (e.EntityType == Serf.EntityType.MOVIE)) { // Collection or movie mode. Create one title per folder with multiple disks foreach (string f in v.Files) { if (!TitleCollectionManager.ContainsDisks(OMLEngine.FileSystem.NetworkScanner.FixPath(f))) { Disk disk = new Disk(); disk.Path = f; disk.Format = disk.GetFormatFromPath(f); // (VideoFormat)Enum.Parse(typeof(VideoFormat), fileExtension.ToUpperInvariant()); disk.Name = string.Format("Disk {0}", 0); if (disk.Format != VideoFormat.UNKNOWN) { disks.Add(disk); } } } if (disks.Count != 0) { Title newTitle = TitleCollectionManager.CreateTitle(s_parent, Path.GetFileNameWithoutExtension(v.Name), TitleTypes.Unknown, Tag, disks.ToArray()); CheckDiskPathForImages(newTitle, disks[0]); NewTitles.Add(newTitle); TitleCollectionManager.SaveTitleUpdates(); } } else { // TV mode. Create one title per file, each with single disks foreach (string f in v.Files) { if (!TitleCollectionManager.ContainsDisks(OMLEngine.FileSystem.NetworkScanner.FixPath(f))) { Disk disk = new Disk(); disk.Path = f; disk.Format = disk.GetFormatFromPath(f); //(VideoFormat)Enum.Parse(typeof(VideoFormat), fileExtension.ToUpperInvariant()); disk.Name = string.Format("Disk {0}", 0); if (disk.Format != VideoFormat.UNKNOWN) { disks.Add(disk); } } if (disks.Count != 0) { short episodeno = 0; if (v.EpisodeNumbers.Count > 0) { episodeno = (short)v.EpisodeNumbers[0]; } Title newTitle = TitleCollectionManager.CreateTitle(s_parent, Path.GetFileNameWithoutExtension(f), TitleTypes.Episode, Tag, (short)s.Number, episodeno, disks.ToArray()); CheckDiskPathForImages(newTitle, disks[0]); NewTitles.Add(newTitle); TitleCollectionManager.SaveTitleUpdates(); } } } } } } } } if (File.Exists(file)) { StSana_Log("Processing " + file); string extension = Path.GetExtension(file).ToUpper().Replace(".", ""); extension = extension.Replace("-", ""); Disk disk = new Disk(); disk.Path = file; disk.Format = disk.GetFormatFromPath(file); // (VideoFormat)Enum.Parse(typeof(VideoFormat), extension.ToUpperInvariant()); disk.Name = string.Format("Disk {0}", 0); if (disk.Format != VideoFormat.UNKNOWN) { Title newTitle = TitleCollectionManager.CreateTitle(parentid, Path.GetFileNameWithoutExtension(file), TitleTypes.Unknown, Tag, new Disk[1] { disk }); CheckDiskPathForImages(newTitle, disk); NewTitles.Add(newTitle); TitleCollectionManager.SaveTitleUpdates(); } } } catch (Exception ex) { Utilities.DebugLine("[OMLEngine] CreateTitlesFromPathArray exception" + ex.Message); } } return(NewTitles); }