public ResourceEntryInfo(string resourcePath) { ResourceKey = resourcePath.GetResourceKeyFromString(); Dictionary = resourcePath.GetDictionaryFullName(); Assembly = AppDomainHelpers.GetAssembly(resourcePath.GetAssemblyNameFromString()); CurrentCultureInfo = DependencyService.Get <ILocalizationService>().GetCurrentCultureInfo(); }
private void ProcessDirectory(string directoryPath) { var savedDirectory = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(directoryPath); _loader = AppDomainHelpers.CreateProxy <AssemblyLoader>(directoryPath, out _testDomain); foreach (var file in Directory.GetFiles(directoryPath).Where(file => file.EndsWith(".dll"))) { AssemblyRecord assembly = CreateAssemblyRecord(file); _assemblies[assembly.Name] = assembly; if (RequiresExactVersionMatch(assembly)) { AddSharedAssemblyExactVersion(assembly); } else { AddSharedAssembly(assembly); } } // Now check for assembly mismatches foreach (var assembly in _assemblies.Values) { foreach (var reference in assembly.Children) { CheckAssemblyReference(reference, assembly); } } FindExtraAssemblies(); AppDomain.Unload(_testDomain); Directory.SetCurrentDirectory(savedDirectory); }
public async Task ExtractAndAddAudio(string audioInputPath, string audioOutputPath, string inputPath, string outputPath, string tempDirectory, bool isMultiThread = false, bool trimVideo = false) { Console.WriteLine("Extracting Audio"); if (!File.Exists(audioOutputPath)) { await ExtractAudio(audioInputPath, audioOutputPath, (o, args) => { }, isMultiThread ); } var audio = await FFmpeg.GetMediaInfo(audioOutputPath); var inputVideo = await FFmpeg.GetMediaInfo(inputPath); if (trimVideo && TimeSpan.Compare(audio.Duration, inputVideo.Duration) == -1) { // Split Video Console.WriteLine("Splitting Video"); var tempOutput = AppDomainHelpers .GetPath(tempDirectory, $"temp_split_video_output_{Guid.NewGuid().ToString().Replace("-", "")}", ".mp4"); var split = await FFmpeg.Conversions.FromSnippet.Split(inputPath, tempOutput, TimeSpan.Zero, audio.Duration); split.UseMultiThread(isMultiThread); await split.Start(); File.Move(tempOutput, inputPath, true); } Console.WriteLine("Adding Audio"); await AddAudio(inputPath, audioOutputPath, outputPath, (o, args) => { }, isMultiThread ); }
/// <summary> /// Given a set of directory paths containing PowerShell module folders, analyze the help /// in the module folders and report any issues /// </summary> /// <param name="scopes"></param> public void Analyze(IEnumerable <string> scopes) { var savedDirectory = Directory.GetCurrentDirectory(); var processedHelpFiles = new List <string>(); var helpLogger = Logger.CreateLogger <HelpIssue>("HelpIssues.csv"); foreach (var baseDirectory in scopes.Where(s => Directory.Exists(Path.GetFullPath(s)))) { foreach (var directory in Directory.EnumerateDirectories(Path.GetFullPath(baseDirectory))) { var helpFiles = Directory.EnumerateFiles(directory, "*.dll-Help.xml") .Where(f => !processedHelpFiles.Contains(Path.GetFileName(f), StringComparer.OrdinalIgnoreCase)).ToList(); if (helpFiles.Any()) { Directory.SetCurrentDirectory(directory); foreach (var helpFile in helpFiles) { var cmdletFile = helpFile.Substring(0, helpFile.Length - "-Help.xml".Length); var helpFileName = Path.GetFileName(helpFile); var cmdletFileName = Path.GetFileName(cmdletFile); if (File.Exists(cmdletFile)) { processedHelpFiles.Add(helpFileName); helpLogger.Decorator.AddDecorator((h) => { h.HelpFile = helpFileName; h.Assembly = cmdletFileName; }, "Cmdlet"); var proxy = AppDomainHelpers.CreateProxy <CmdletLoader>(directory, out _appDomain); var cmdlets = proxy.GetCmdlets(cmdletFile); var helpRecords = CmdletHelpParser.GetHelpTopics(helpFile, helpLogger); ValidateHelpRecords(cmdlets, helpRecords, helpLogger); helpLogger.Decorator.Remove("Cmdlet"); AppDomain.Unload(_appDomain); } } Directory.SetCurrentDirectory(savedDirectory); } } } }
public async Task StartAsync() { if (!_isDownloadWebcamVideo && !_isDownloadPresentation) { throw new Exception("Either Presentaton or Desk-share Video Must Be Selected"); } if (!Directory.Exists(_outputDirectory)) { Directory.CreateDirectory(_outputDirectory); } Directory.SetCurrentDirectory(_outputDirectory); bool downloadVideoResponse = false, downloadPresentationResponse = false, hasAudio = false; _webDriver = WebDriverFactory.Create(_webDriverType, _url); _bigBlueButtonDocumentParser = new BigBlueButtonDocumentParser(_webDriver, Options); var deskShareVideoName = $"{_outputFileName}-desk"; var webcamVideoName = $"{_outputFileName}-webcam"; var audioOutputName = $"{_outputFileName}-output"; var presentationName = $"{_outputFileName}-presentation"; var tmpPresentationName = $"{_outputFileName}-tmp"; var downloadDeskShareThread = new Thread(() => { if (_isDownloadDeskShareVideo) { var response = DownloadVideo(deskShareVideoName).GetAwaiter().GetResult(); downloadVideoResponse = response.IsSuccess; } }); var downloadWebcamThread = new Thread(() => { if (_isDownloadWebcamVideo) { var response = DownloadWebcam(webcamVideoName).GetAwaiter().GetResult(); hasAudio = response.IsSuccess; } }); var downloadPresentationThread = new Thread(() => { if (_isDownloadPresentation) { var response = DownloadPresentation(tmpPresentationName).GetAwaiter().GetResult(); downloadPresentationResponse = response.IsSuccess; } }); downloadDeskShareThread.Start(); downloadWebcamThread.Start(); downloadPresentationThread.Start(); downloadWebcamThread.Join(); downloadDeskShareThread.Join(); downloadPresentationThread.Join(); if (!downloadVideoResponse && !downloadPresentationResponse) { throw new BigBlueButtonDocumentException("Neither Video Nor Presentation Couldn't Be Downloaded."); } var audioInputPath = AppDomainHelpers.GetPath(_outputDirectory, webcamVideoName, ".mp4"); var audioOutputPath = AppDomainHelpers.GetPath(_outputDirectory, $"{audioOutputName}", ".mp3"); var deskShareInputPath = AppDomainHelpers.GetPath(_outputDirectory, $"{deskShareVideoName}", ".mp4"); var videoOutputPath = AppDomainHelpers.GetPath(_outputDirectory, _outputFileName, ".mp4"); var presentationOutputPath = AppDomainHelpers.GetPath(_outputDirectory, presentationName, ".mp4"); var tmpPresentationPath = AppDomainHelpers.GetPath(_outputDirectory, tmpPresentationName, ".mp4"); if (downloadVideoResponse) { if (hasAudio) { await _videoService.ExtractAndAddAudio(audioInputPath, audioOutputPath, deskShareInputPath, videoOutputPath, _outputDirectory, _isUseMultiThread, true); } else { File.Move(deskShareInputPath, videoOutputPath, true); } } if (downloadPresentationResponse) { if (hasAudio) { await _videoService.ExtractAndAddAudio(audioInputPath, audioOutputPath, tmpPresentationPath, presentationOutputPath, _outputDirectory, _isUseMultiThread, true); } else { File.Move(tmpPresentationPath, presentationOutputPath, true); } } RemoveTempFiles( audioOutputName, deskShareVideoName, tmpPresentationName ); _webDriver.Quit(); }
public static void DeleteFileInAppDirectory(string directory, string fileName, string fileExtension) { DeleteIfExists(AppDomainHelpers.GetPath(directory, fileName, fileExtension)); }