protected override void Scan_Executing(object oFolders) { TriggerStatusUpdated("Searching for Movies..."); string[] Folders = oFolders as string[]; if (Folders == null) Folders = Settings.MovieFolders; string[] extensions = Settings.VideoExtensions; List<Meta> newItems = new List<Meta>(); foreach (string folder in Folders) { string[] files = null; try { files = System.IO.Directory.GetFiles(folder, "*", System.IO.SearchOption.AllDirectories); } catch (Exception) { continue; } foreach (string file in files) { if (Items.ContainsKey(file.ToLower())) continue; if (file.ToLower().Contains("-trailer")) continue; // skip trailers string ext = file.Substring(file.LastIndexOf(".") + 1).ToLower(); if (!extensions.Contains(ext)) continue; Meta meta = new MovieMeta(file); AddItem(meta); newItems.Add(meta); } } // sort them, so they are scanned in the order they should appear in a GUI newItems.Sort(delegate(Meta a, Meta b) { if(a == null && b == null) return 0; if(a == null) return -1; if(b == null) return 1; string aSortTitle = ((MovieMeta)a).Title.ToLower(); if(aSortTitle.StartsWith("the ")) aSortTitle = aSortTitle.Substring(4); string bSortTitle = ((MovieMeta)b).Title.ToLower(); if(bSortTitle.StartsWith("the ")) bSortTitle = bSortTitle.Substring(4); return aSortTitle.CompareTo(bSortTitle); }); TriggerAllItemsFound(newItems.ToArray()); foreach (MovieMeta meta in newItems.OrderBy(x => ((MovieMeta)x).ExistingNfoFile ? 1 : 0)) { try { TriggerScanningItem(meta); int result = meta.Load(); TriggerUpdated(meta, result); } catch (Exception ex) { Logger.Log(ex.Message + Environment.NewLine + ex.StackTrace); } } TriggerCompleted(); }
public static MovieMeta LookupMovie(string Filename) { try { MovieMeta meta = new MovieMeta(Filename); meta.Load(); return meta; } catch (Exception) { return null; } }
public MovieNode(MovieMeta Meta) { this.Meta = Meta; }