internal static void PerformDvdMovieTasks(PluginClass pluginClass, string dataDirectory, IMeedioMessage Message, string CurDir, IMeedioSystem meedioSystem) { ///////////////////////DVD MOVIE CODE////////////////////// if (pluginClass.DVDMovieOptions == "Do not process movies" || pluginClass.tvShow) return; if (pluginClass.DVDMovieOptions == "Backup disc as one ISO file") { MeedioUtils.ShowPopUpScreen(CurDir, meedioSystem, Message, "Creating disc image...", 0, .05, "center", pluginClass.vAlign, 10); MeedioUtils.LogEntry(pluginClass.Log, pluginClass.swWriteLog, "[MAIN CODE] - Ripping DVD to ISO file"); string ISOName = StringFunctions.replaceIllegalCharacters(pluginClass.DVDTitle, " "); DiscIsoCreators.CreateDvdIsoFullDisc(pluginClass, ISOName, CurDir, dataDirectory); //MOVE MOVIE FILE TO NETWORK ON NEW THREAD MeedioUtils.ShowPopUpScreen(CurDir, meedioSystem, Message, "Moving file to movie directory...", 0, .05, "center", pluginClass.vAlign, 10); string TempMovieDir = Path.Combine(dataDirectory, pluginClass.DVDTitle); string ISOFile = Path.Combine(TempMovieDir, ISOName + ".iso"); PluginClass.argumentstruct MoveFileArguments = new PluginClass.argumentstruct(meedioSystem, Message, ISOFile, pluginClass.newDir, TempMovieDir, pluginClass.DVDTitle, CurDir, pluginClass.Log, pluginClass.swWriteLog); ParameterizedThreadStart paramthreadstart = new ParameterizedThreadStart(obj1 => MediaFileMovers.MoveToMovieDir(pluginClass, obj1)); Thread MoveFileThread = new Thread(paramthreadstart); MoveFileThread.Start(MoveFileArguments); } if (pluginClass.DVDMovieOptions == "Backup main movie as H264/MKV file") { //CREATE TEMPORARY ISO FOR HANDBRAKE MeedioUtils.LogEntry(pluginClass.Log, pluginClass.swWriteLog, "[MAIN CODE] - Ripping DVD to ISO file"); string ISOName = StringFunctions.replaceIllegalCharacters(pluginClass.DVDTitle, " "); MeedioUtils.ShowPopUpScreen(CurDir, meedioSystem, Message, "Creating temporary disc image...", 0, .05, "center", pluginClass.vAlign, 10); DiscIsoCreators.CreateDvdIsoFullDisc(pluginClass, ISOName, CurDir, dataDirectory); //LAUNCH THE REMAINING CODE IN A NEW THREAD SO NEW DISC CAN BE RIPPED (handbrake, move, run imports) MeedioUtils.ShowPopUpScreen(CurDir, meedioSystem, Message, "Encoding file with HandBrake...", 0, .05, "center", pluginClass.vAlign, 10); string TempMovieDir = Path.Combine(dataDirectory, pluginClass.DVDTitle); string ISOFile = Path.Combine(TempMovieDir, ISOName + ".iso"); PluginClass.HBargumentstruct HBArguments = new PluginClass.HBargumentstruct(pluginClass.HandBrake, pluginClass.HandBrakeQuality, pluginClass.vcd, "", pluginClass.HexID, ISOFile, TempMovieDir, pluginClass.newDir, "", pluginClass.Log, pluginClass.swWriteLog, meedioSystem); ParameterizedThreadStart HBthreadstart = new ParameterizedThreadStart(pluginClass.RunHandBrake); Thread HBThread = new Thread(HBthreadstart); HBThread.Start(HBArguments); } if (pluginClass.DVDMovieOptions == "Backup main movie as MPG file") { MeedioUtils.LogEntry(pluginClass.Log, pluginClass.swWriteLog, "[MAIN CODE] - Backing up main movie VOB files"); string MPGName = StringFunctions.replaceIllegalCharacters(pluginClass.DVDTitle, " "); string MPGFile = Path.Combine(dataDirectory, MPGName + ".mpg"); MeedioUtils.ShowPopUpScreen(CurDir, meedioSystem, Message, "Backing up main movie as mpg...", 0, .05, "center", pluginClass.vAlign, 10); DVDUtils.BackUpMainMovieDVDFiles(pluginClass.Drive, dataDirectory, pluginClass.Log, pluginClass.swWriteLog); DVDUtils.VOBFilesToMpeg(MPGFile, dataDirectory, pluginClass.Log, pluginClass.swWriteLog); //MOVE MOVIE FILE TO NETWORK ON NEW THREAD MeedioUtils.ShowPopUpScreen(CurDir, meedioSystem, Message, "Moving file to movie directory...", 0, .05, "center", pluginClass.vAlign, 10); PluginClass.argumentstruct MoveFileArguments = new PluginClass.argumentstruct(meedioSystem, Message, MPGFile, pluginClass.newDir, dataDirectory, pluginClass.DVDTitle, CurDir, pluginClass.Log, pluginClass.swWriteLog); ParameterizedThreadStart paramthreadstart = new ParameterizedThreadStart(obj1 => MediaFileMovers.MoveToMovieDir(pluginClass, obj1)); Thread MoveFileThread = new Thread(paramthreadstart); MoveFileThread.Start(MoveFileArguments); } //THE FOLLOWING CODE COPIES, BUT THE IFO FILE NEEDS TO BE ADJUSTED TO PROPERLY ADDRESS VOB FILES //if (DVDMovieOptions == "Backup main movie as IFO & VOB files") //{ // ToolBox.MeedioUtils.LogEntry(Log, swWriteLog, "[MAIN CODE] - Backing up main movie VOB files"); // ToolBox.MeedioUtils.ShowPopUpScreen(CurDir, MeedioSystem, Message, "Backing up main movie files...", 0, .05, "center", vAlign, 10); // ToolBox.DVDUtils.BackUpMainMovieDVDFiles(Drive, newDir, Log, swWriteLog); //} if (pluginClass.DVDMovieOptions == "Backup disc as IFO & VOB files") { MeedioUtils.LogEntry(pluginClass.Log, pluginClass.swWriteLog, "[MAIN CODE] - Backing up IFO and VOB files"); MeedioUtils.ShowPopUpScreen(CurDir, meedioSystem, Message, "Backing up movie files...", 0, .05, "center", pluginClass.vAlign, 10); DVDUtils.BackUpAllDVDFiles(pluginClass.Drive, pluginClass.newDir, pluginClass.Log, pluginClass.swWriteLog); } //RUN EXTERNAL DVD PROGRAM if (pluginClass.DVDMovieOptions == "Backup with my specifed program" && pluginClass.extProgram != "" && Directory.Exists(pluginClass.newDir)) { pluginClass.RunDVDProgram(pluginClass.extProgram, pluginClass.extParameters); } }
internal static bool PerformDvdTvTasks(PluginClass pluginClass, IMeedioMessage Message, IMeedioSystem MeedioSystem, string DataDirectory, string CurDir) { ///////////////////////DVD TV CODE////////////////////// if (pluginClass.tvShow == true) { String TVServerDirectory = ""; //CONFIRM DVD IS TV SERIES WITH DIALOG BOX string Description = (pluginClass.SeriesName + " has been identified as a disc that may contain television episodes. Please confirm if this is a TV or Movie DVD."); MeedioUtils.ShowDialogBox(MeedioSystem, Message, "Please confirm disc type", Description, "yes/no", "TV Series", "Movie", pluginClass.Log, pluginClass.swWriteLog); PluginClass.mre.WaitOne(); //Pause and wait for input PluginClass.mre.Reset(); //Reset thread wait if (pluginClass.tvShow == true) { //SHOW ON SCREEN KEYBOARD AND CONFIRM SEASON NUMBER string SeasonNumber = DVDUtils.GetSeasonNumber(pluginClass.D2, pluginClass.Log, pluginClass.swWriteLog); MeedioUtils.ShowOnScreenKeyboard(MeedioSystem, Message, "Please confirm season number", SeasonNumber, pluginClass.Log, pluginClass.swWriteLog); PluginClass.mre.WaitOne(); //Pause and wait for input PluginClass.mre.Reset(); //Reset thread wait string SeasonNumforFileName = pluginClass.DVDTitle.Trim().PadLeft(2, '0'); SeasonNumber = "Season " + pluginClass.DVDTitle.Trim().PadLeft(2, '0'); //SHOW ON SCREEN KEYBOARD AND CONFIRM DISC NUMBER string DiscNumber = DVDUtils.GetSeasonDiscNumber(pluginClass.D2, pluginClass.Log, pluginClass.swWriteLog); MeedioUtils.ShowOnScreenKeyboard(MeedioSystem, Message, "Please confirm disc number", DiscNumber, pluginClass.Log, pluginClass.swWriteLog); PluginClass.mre.WaitOne(); //Pause and wait for input PluginClass.mre.Reset(); //Reset thread wait string DiscNumberforFileName = pluginClass.DVDTitle.Trim().PadLeft(2, '0'); DiscNumber = pluginClass.DVDTitle.Trim(); string SeriesforFileName = StringFunctions.replaceIllegalCharacters(pluginClass.SeriesName, " "); string FileName = SeriesforFileName + " S" + SeasonNumforFileName + "D" + DiscNumberforFileName; MeedioUtils.LogEntry(pluginClass.Log, pluginClass.swWriteLog, "[MAIN CODE] - Series name: " + pluginClass.SeriesName); //CREATE DIRECTORY ON SERVER pluginClass.SeriesName = (pluginClass.SeriesName + "\\" + SeasonNumber).Trim(); TVServerDirectory = DirectoryCreator.CreateDirectory(pluginClass, pluginClass.SeriesName, "", "", "TV"); MeedioUtils.LogEntry(pluginClass.Log, pluginClass.swWriteLog, "[MAIN CODE] - TV server directory: " + TVServerDirectory); if (pluginClass.DVDTVOptions == "Backup individual episodes as mkv files") { //CREATE TEMPORARY ISO FOR HANDBRAKE String OutputDirectory = ""; OutputDirectory = Path.Combine(DataDirectory, pluginClass.SeriesName); if (!Directory.Exists(OutputDirectory)) { Directory.CreateDirectory(OutputDirectory); } MeedioUtils.ShowPopUpScreen(CurDir, MeedioSystem, Message, "Creating temporary disc image...", 0, .05, "center", pluginClass.vAlign, 10); MeedioUtils.LogEntry(pluginClass.Log, pluginClass.swWriteLog, "[MAIN CODE] - Creating temporary ISO file"); string ISOFile = Path.Combine(OutputDirectory, FileName + ".iso"); string mkisofsPath = (CurDir + "\\mkisofs.exe"); DVDUtils.CreateISOwMKISOFS(mkisofsPath, ISOFile, pluginClass.Drive, pluginClass.Log, pluginClass.swWriteLog); //LAUNCH THE REMAINING CODE IN A NEW THREAD SO NEW DISC CAN BE RIPPED (handbrake, move, run imports) MeedioUtils.ShowPopUpScreen(CurDir, MeedioSystem, Message, "Encoding file with HandBrake...", 0, .05, "center", pluginClass.vAlign, 10); PluginClass.HBargumentstruct HBArguments = new PluginClass.HBargumentstruct(pluginClass.HandBrake, pluginClass.HandBrakeQuality, pluginClass.vcd, "", pluginClass.HexID, ISOFile, OutputDirectory, TVServerDirectory, DiscNumber, pluginClass.Log, pluginClass.swWriteLog, MeedioSystem); ParameterizedThreadStart HBthreadstart = new ParameterizedThreadStart(pluginClass.RunHandBrake); Thread HBThread = new Thread(HBthreadstart); HBThread.Start(HBArguments); } if (pluginClass.DVDTVOptions == "Backup disc as one ISO file") { MeedioUtils.ShowPopUpScreen(CurDir, MeedioSystem, Message, "Creating disc image...", 0, .05, "center", pluginClass.vAlign, 10); MeedioUtils.LogEntry(pluginClass.Log, pluginClass.swWriteLog, "[MAIN CODE] - Ripping DVD to ISO file"); DiscIsoCreators.CreateDvdIsoFullDisc(pluginClass, FileName, CurDir, DataDirectory); //MOVE ISO FILE TO NETWORK ON NEW THREAD MeedioUtils.ShowPopUpScreen(CurDir, MeedioSystem, Message, "Moving file to movie directory...", 0, .05, "center", pluginClass.vAlign, 10); string TempMovieDir = Path.Combine(DataDirectory, FileName); string ISOFile = Path.Combine(TempMovieDir, FileName + ".iso"); PluginClass.argumentstruct MoveFileArguments = new PluginClass.argumentstruct(MeedioSystem, Message, ISOFile, TVServerDirectory, TempMovieDir, pluginClass.SeriesName, CurDir, pluginClass.Log, pluginClass.swWriteLog); ParameterizedThreadStart paramthreadstart = new ParameterizedThreadStart(obj1 => MediaFileMovers.MoveToMovieDir(pluginClass, obj1)); Thread MoveFileThread = new Thread(paramthreadstart); MoveFileThread.Start(MoveFileArguments); } } //EJECT DVD DVDUtils.MCICDROM.Eject(pluginClass.D2); //OPTIONAL DELAY TO ALLOW TIME FOR ANOTHER DISC INSERT if (pluginClass.ImportDelay != "0") { if (pluginClass.RunImportDelay(CurDir, MeedioSystem) == true) { return true; } } //RUN TV IMPORTS if (pluginClass.importTVModule != "" && Directory.Exists(TVServerDirectory)) { //RUN IF DIRECTORY IS NOT EMPTY String[] fileEntries = Directory.GetFiles(TVServerDirectory, "*.*", SearchOption.AllDirectories); int numFiles = fileEntries.Length; if (numFiles > 0) { MeedioUtils.RunImports(pluginClass.importTVModule, MeedioSystem, pluginClass.Log, pluginClass.swWriteLog); } } } return false; }