コード例 #1
0
        public override bool RunJob(JobQueue jobRunner)
        {
            List <DiskTitle> diskTitles = handBrakeService.Scan(driveName, 0, true, progressReporter);

            if (diskTitles.Count > 0)
            {
                // order them
                diskTitles.Sort((o1, o2) =>
                {
                    if (o1.Seconds > o2.Seconds)
                    {
                        return(-1);
                    }
                    else if (o1.Seconds == o2.Seconds)
                    {
                        return(0);
                    }
                    else
                    {
                        return(1);
                    }
                });
                DiskTitle mainTitle = diskTitles.Find((o) => o.MainMovie == true);
                if (mainTitle != null)
                {
                    diskTitles.Remove(mainTitle);
                    if (!backupAll)
                    {
                        diskTitles.Clear();
                        diskTitles.Add(mainTitle);
                    }
                    else
                    {
                        diskTitles.Insert(0, mainTitle);
                    }
                }
                else if (!backupAll)
                {
                    // pick the 1st
                    mainTitle = diskTitles[0];
                    diskTitles.Clear();
                    diskTitles.Add(mainTitle);
                }

                int n = 0;
                foreach (DiskTitle title in diskTitles)
                {
                    if (title.Seconds >= minMovieLen)
                    {
                        string cleanTitle = GetMovieTitle(title);
                        jobRunner.AddJob(new EncodeMovieJob(handBrakeService, driveName, cleanTitle, title.TitleIndex, n++, false));
                    }
                }
                return(true);
            }
            return(false);
        }