public static void BeginFileCopy(string fileFullName, string fileName, IProgress <double> progress, PluginConfiguration config, ISessionManager sessionManager) { Progress = progress; SessionManager = sessionManager; var key = Path.GetFileNameWithoutExtension(fileName); var extractPath = config.EmbyAutoOrganizeFolderPath + "\\" + (key); var Source = new FileInfo(fileName: fileFullName); var Destination = new FileInfo(extractPath + "\\" + fileName); if (Destination.Exists) { Destination.Delete(); } Directory.CreateDirectory(extractPath); CurrentObjective = new ExtractionInfo { Name = Path.GetFileNameWithoutExtension(fileName) }; CopyFileCallbackAction MyCallback(FileInfo source, FileInfo destination, object state, long totalFileSize, long totalBytesTransferred) { CurrentObjective.Progress = Math.Round((totalBytesTransferred / (double)totalFileSize) * 100.0, 1); SessionManager.SendMessageToAdminSessions("ExtractionProgress", CurrentObjective, CancellationToken.None); Progress.Report(CurrentObjective.Progress); return(CopyFileCallbackAction.CONTINUE); } CopyFile(Source, Destination, CopyFileOptions.NONE, MyCallback); }
public static void BeginCompressedFileExtraction(string fullFileName, string fileName, ILogger log, IProgress <double> prog, PluginConfiguration config, ISessionManager sessionManager) { Progress = prog; SessionManager = sessionManager; log.Info("Found New RAR File to Decompress: " + fileName); CurrentObjective = new ExtractionInfo { Name = Path.GetFileNameWithoutExtension(fileName) }; string extractPath = $"{config.EmbyAutoOrganizeFolderPath}\\{Path.GetFileNameWithoutExtension(fileName)}"; log.Info("Creating Extraction Path: " + extractPath); Directory.CreateDirectory(extractPath); var archive = ArchiveFactory.Open(fullFileName); log.Info("Archive open: " + fullFileName); // Calculate the total extraction size. totalSize = archive.TotalSize; log.Info("Archive Total Size: " + totalSize); foreach (IArchiveEntry entry in archive.Entries.Where(entry => !entry.IsDirectory)) { archive.EntryExtractionEnd += FileMoveSuccess; archive.CompressedBytesRead += Archive_CompressedBytesRead; entry.WriteToDirectory(extractPath, new ExtractionOptions { ExtractFullPath = true, Overwrite = true }); } }