Merge pull request #8 from StevanFreeborn/stevanfreeborn/feat/5-display-location-of-shorts

feat: display location of output with link inside panel
This commit is contained in:
Stevan Freeborn
2025-08-20 22:17:47 -05:00
committed by GitHub
@@ -71,10 +71,7 @@ internal sealed class DefaultCommand(
await _console.Status() await _console.Status()
.Spinner(Spinner.Known.Dots) .Spinner(Spinner.Known.Dots)
.StartAsync("Extracting audio...", async _ => .StartAsync("Extracting audio...", async _ => audioStream = await _audioExtractor.ExtractMp3FromMp4Async(videoStream));
{
audioStream = await _audioExtractor.ExtractMp3FromMp4Async(videoStream);
});
if (audioStream is null) if (audioStream is null)
{ {
@@ -102,10 +99,8 @@ internal sealed class DefaultCommand(
var now = _timeProvider.GetUtcNow(); var now = _timeProvider.GetUtcNow();
var inputFileName = _fileSystem.Path.GetFileNameWithoutExtension(settings.Stream); var inputFileName = _fileSystem.Path.GetFileNameWithoutExtension(settings.Stream);
var outputDirectoryPath = _fileSystem.Path.Combine( var outputDirectory = $"{now:yyyy_MM_dd_HH_mm_ss}_{inputFileName}";
AppContext.BaseDirectory, var outputDirectoryPath = _fileSystem.Path.Combine(AppContext.BaseDirectory, outputDirectory);
$"{now:yyyy_MM_dd_HH_mm_ss}_{inputFileName}"
);
_fileSystem.Directory.CreateDirectory(outputDirectoryPath); _fileSystem.Directory.CreateDirectory(outputDirectoryPath);
@@ -118,10 +113,7 @@ internal sealed class DefaultCommand(
await _console.Status() await _console.Status()
.Spinner(Spinner.Known.Dots) .Spinner(Spinner.Known.Dots)
.StartAsync("Analyzing transcript...", async _ => .StartAsync("Analyzing transcript...", async _ => analysis = await _transcriptAnalyzer.AnalyzeAsync(transcriptionSegments));
{
analysis = await _transcriptAnalyzer.AnalyzeAsync(transcriptionSegments);
});
if (analysis is null) if (analysis is null)
{ {
@@ -149,14 +141,21 @@ internal sealed class DefaultCommand(
} }
}); });
_console.MarkupLine($"[blue]Shorts created[/] [green]successfully![/]"); var directoryUri = new Uri(outputDirectoryPath).AbsoluteUri;
var panel = new Panel($"[blue link={directoryUri}]{outputDirectory}[/]")
{
Header = new PanelHeader($"[blue]Shorts created[/] [green]successfully![/]")
};
return 0; _console.Write(panel);
return (int)ExitCode.SuccessFullyProcessedStream;
} }
private enum ExitCode private enum ExitCode
{ {
FailedToExtractAudio, FailedToExtractAudio,
FailedToAnalyzeTranscript, FailedToAnalyzeTranscript,
SuccessFullyProcessedStream,
} }
} }