mirror of
https://github.com/BililiveRecorder/BililiveRecorder.git
synced 2024-12-27 12:35:35 +08:00
78 lines
3.1 KiB
C#
78 lines
3.1 KiB
C#
using BililiveRecorder.ToolBox.ProcessingRules;
|
|
using Spectre.Console;
|
|
|
|
namespace BililiveRecorder.ToolBox.Tool.Analyze
|
|
{
|
|
public class AnalyzeResponse : IResponseData
|
|
{
|
|
public string InputPath { get; set; } = string.Empty;
|
|
|
|
public bool NeedFix { get; set; }
|
|
public bool Unrepairable { get; set; }
|
|
public bool FfmpegDetected { get; set; }
|
|
|
|
public int OutputFileCount { get; set; }
|
|
|
|
public FlvStats? VideoStats { get; set; }
|
|
public FlvStats? AudioStats { get; set; }
|
|
|
|
public int IssueTypeOther { get; set; }
|
|
public int IssueTypeUnrepairable { get; set; }
|
|
public int IssueTypeTimestampJump { get; set; }
|
|
public int IssueTypeTimestampOffset { get; set; }
|
|
public int IssueTypeDecodingHeader { get; set; }
|
|
public int IssueTypeRepeatingData { get; set; }
|
|
|
|
public void PrintToConsole()
|
|
{
|
|
if (this.NeedFix)
|
|
AnsiConsole.Write(new FigletText("Need Fix").Color(Color.Red));
|
|
else
|
|
AnsiConsole.Write(new FigletText("All Good").Color(Color.Green));
|
|
|
|
if (this.Unrepairable)
|
|
{
|
|
AnsiConsole.Write(new Panel("This file contains error(s) that are identified as unrepairable (yet).\n" +
|
|
"Please check if you're using the newest version.\n" +
|
|
"Please consider send a sample file to the developer.")
|
|
{
|
|
Header = new PanelHeader("Important Note"),
|
|
Border = BoxBorder.Rounded,
|
|
BorderStyle = new Style(foreground: Color.Red)
|
|
});
|
|
}
|
|
|
|
if (this.FfmpegDetected)
|
|
{
|
|
AnsiConsole.Write(new Panel("This file seems like it was written by FFmpeg.\n" +
|
|
"It might no longer possible to fix this file, if there's any problem.\n" +
|
|
"Only unprocessed data taken directly from the stream server could be fixed.")
|
|
{
|
|
Header = new PanelHeader("[bold yellow]FFmpeg Detected[/]"),
|
|
Border = BoxBorder.Rounded,
|
|
BorderStyle = new Style(foreground: Color.Yellow)
|
|
});
|
|
}
|
|
|
|
AnsiConsole.Write(new Panel(this.InputPath.EscapeMarkup())
|
|
{
|
|
Header = new PanelHeader("Input"),
|
|
Border = BoxBorder.Rounded
|
|
});
|
|
|
|
AnsiConsole.MarkupLine("Will output [lime]{0}[/] file(s) if repaired", this.OutputFileCount);
|
|
|
|
AnsiConsole.Write(new Table()
|
|
.Border(TableBorder.Rounded)
|
|
.AddColumns("Category", "Count")
|
|
.AddRow("Unrepairable", this.IssueTypeUnrepairable.ToString())
|
|
.AddRow("Other", this.IssueTypeOther.ToString())
|
|
.AddRow("TimestampJump", this.IssueTypeTimestampJump.ToString())
|
|
.AddRow("TimestampOffset", this.IssueTypeTimestampOffset.ToString())
|
|
.AddRow("DecodingHeader", this.IssueTypeDecodingHeader.ToString())
|
|
.AddRow("RepeatingData", this.IssueTypeRepeatingData.ToString())
|
|
);
|
|
}
|
|
}
|
|
}
|