Ejemplo n.º 1
0
 protected override StageResult Cleanup()
 {
     InputFile.Delete();
     L.Debug("Deleted temporary input file {0}.", InputFileName);
     return(StageResult.SUCCESS);
 }
Ejemplo n.º 2
0
        public bool Transcode()
        {
            bool exclusiveAccess = false;
            bool RetVal          = false;

            try
            {
                FileStream FileTest = InputFile.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
                FileTest.Close();
                exclusiveAccess = true;
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Couldn't get exclusive access to " + InputFile.Name + ", Skipping: " + ex.Message);
                Console.ForegroundColor = ConsoleColor.Gray;
            }

            if (!OutputFile.Exists && exclusiveAccess)
            {
                MediaFile F = new MediaFile(InputFile.FullName);

                if (F.HasStreams)
                {
                    if (F.Video.Count > 0)
                    {
                        string tempBannerRemove = null;
                        string tempAdremove     = null;

                        Console.CursorLeft = 0;
                        Console.Write("".PadRight(Console.WindowWidth - 1));
                        Console.CursorLeft = 0;

                        if (isPlayOnFile())
                        {
                            Console.ForegroundColor = ConsoleColor.Blue;
                            Console.WriteLine(InputFile.Name + " is a PlayOn file.");
                            Console.ForegroundColor = ConsoleColor.Gray;


                            if (RemoveAds && hasAds())
                            {
                                Console.ForegroundColor = ConsoleColor.Cyan;
                                Console.WriteLine(F.filePath + " has PlayOn Detected Commercials. Removing...");
                                Console.ForegroundColor = ConsoleColor.Gray;

                                tempAdremove = RemoveCommercials(F);

                                if (tempAdremove != null)
                                {
                                    F = new MediaFile(tempAdremove);

                                    if (!RemovePlayOnBanner && !h265Transcode)
                                    {
                                        File.Move(F.filePath, OutputFile.FullName);

                                        if (DeleteOriginal)
                                        {
                                            Console.ForegroundColor = ConsoleColor.Yellow;
                                            Console.WriteLine("Deleting " + InputFile.Name);
                                            InputFile.Delete();
                                            Console.ForegroundColor = ConsoleColor.Gray;
                                        }

                                        return(true);
                                    }
                                }
                            }

                            if (RemovePlayOnBanner)
                            {
                                Console.ForegroundColor = ConsoleColor.Cyan;
                                Console.WriteLine(F.filePath + " has PlayOn Banner. Removing...");
                                Console.ForegroundColor = ConsoleColor.Gray;
                                tempBannerRemove        = RemoveBanner(F);

                                if (tempBannerRemove != null)
                                {
                                    F = new MediaFile(tempBannerRemove);

                                    if (tempAdremove != null)
                                    {
                                        File.Delete(tempAdremove);
                                    }

                                    if (!h265Transcode)
                                    {
                                        File.Move(F.filePath, OutputFile.FullName);

                                        if (DeleteOriginal)
                                        {
                                            Console.ForegroundColor = ConsoleColor.Yellow;
                                            Console.WriteLine("Deleting " + InputFile.Name);
                                            InputFile.Delete();
                                            Console.ForegroundColor = ConsoleColor.Gray;
                                        }
                                        return(true);
                                    }
                                }
                            }
                        }

                        if (h265Transcode)
                        {
                            Console.ForegroundColor = ConsoleColor.Green;
                            Console.WriteLine("Transcoding (" + Preset.ToString() + "/" + CRF.ToString() + ") " + F.filePath + " to h.265 format...");
                            Console.ForegroundColor = ConsoleColor.Gray;
                            RetVal = (ffmpeg_h265_Transcode(F) != null);

                            if (tempAdremove != null && File.Exists(tempAdremove))
                            {
                                File.Delete(tempAdremove);
                            }

                            if (tempBannerRemove != null && File.Exists(tempBannerRemove))
                            {
                                File.Delete(tempBannerRemove);
                            }

                            if (RetVal)
                            {
                                Console.CursorLeft      = 0;
                                Console.ForegroundColor = ConsoleColor.Green;
                                Console.WriteLine(("Transcode Complete for " + InputFile.Name + ".").PadRight(Console.WindowWidth - 1));
                                Console.ForegroundColor = ConsoleColor.Gray;

                                if (DeleteOriginal && File.Exists(OutputFile.FullName))
                                {
                                    Console.ForegroundColor = ConsoleColor.Yellow;
                                    Console.CursorLeft      = 0;
                                    Console.WriteLine(("Deleting " + InputFile.FullName).PadRight(Console.WindowWidth - 1));
                                    InputFile.Delete();
                                    Console.ForegroundColor = ConsoleColor.Gray;
                                }
                            }
                        }
                        else
                        {
                            RetVal = ProcessNonMediaFile();
                        }
                    }
                    else
                    {
                        RetVal = ProcessNonMediaFile();
                    }
                }
            }
            else
            {
                throw new InvalidOperationException(OutputFile.FullName + " already exists or could not get exclusive access to original");
            }
            return(RetVal);
        }