Exemple #1
0
        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();
        }
Exemple #2
0
 public static MovieMeta LookupMovie(string Filename)
 {
     try
     {
         MovieMeta meta = new MovieMeta(Filename);
         meta.Load();
         return meta;
     }
     catch (Exception) { return null; }
 }
Exemple #3
0
 public MovieNode(MovieMeta Meta)
 {
     this.Meta = Meta;
 }