mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Get framework for Stats into DATabase
This commit is contained in:
@@ -693,6 +693,7 @@ Make a selection:
|
||||
4) Merge, diff, and/or dedup 2 or more DAT files
|
||||
5) Split DAT using 2 extensions
|
||||
6) Split DATs by best available hash values
|
||||
7) Get statistics on a DAT or folder of DATs
|
||||
B) Go back to the previous menu
|
||||
");
|
||||
Console.Write("Enter selection: ");
|
||||
@@ -717,6 +718,9 @@ Make a selection:
|
||||
case "6":
|
||||
HashSplitMenu();
|
||||
break;
|
||||
case "7":
|
||||
StatsMenu();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1144,6 +1148,52 @@ Make a selection:
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Show the text-based Stats menu
|
||||
/// </summary>
|
||||
private static void StatsMenu()
|
||||
{
|
||||
string selection = "", input = "";
|
||||
bool single = false;
|
||||
while (selection.ToLowerInvariant() != "b")
|
||||
{
|
||||
Console.Clear();
|
||||
Build.Start("DATabase");
|
||||
Console.WriteLine(@"STATISTICS MENU
|
||||
===========================
|
||||
Make a selection:
|
||||
|
||||
1) File or folder to get stats on" + (input != "" ? ":\n\t" + input : "") + @"
|
||||
2) " + (single ? "Don't show individual DAT statistics" : "Show individual DAT statistics") + @"
|
||||
3) Get stats on the file(s)
|
||||
B) Go back to the previous menu
|
||||
");
|
||||
Console.Write("Enter selection: ");
|
||||
selection = Console.ReadLine();
|
||||
switch (selection)
|
||||
{
|
||||
case "1":
|
||||
Console.Clear();
|
||||
Console.Write("Please enter the file or folder name: ");
|
||||
input = Console.ReadLine();
|
||||
break;
|
||||
case "2":
|
||||
single = !single;
|
||||
break;
|
||||
case "3":
|
||||
Console.Clear();
|
||||
List<string> inputs = new List<string>();
|
||||
inputs.Add(input);
|
||||
InitStats(inputs, single);
|
||||
Console.Write("\nPress any key to continue...");
|
||||
Console.ReadKey();
|
||||
input = "";
|
||||
single = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Show the text-based add and remove menu
|
||||
/// </summary>
|
||||
@@ -1655,6 +1705,34 @@ Make a selection:
|
||||
hs.Split();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wrap getting statistics on a DAT or folder of DATs
|
||||
/// </summary>
|
||||
/// <param name="inputs">List of inputs to be used</param>
|
||||
/// <param name="single">True to show individual DAT statistics, false otherwise</param>
|
||||
private static void InitStats(List<string> inputs, bool single)
|
||||
{
|
||||
List<string> newinputs = new List<string>();
|
||||
|
||||
foreach (string input in inputs)
|
||||
{
|
||||
if (File.Exists(input.Replace("\"", "")))
|
||||
{
|
||||
newinputs.Add(input.Replace("\"", ""));
|
||||
}
|
||||
if (Directory.Exists(input.Replace("\"", "")))
|
||||
{
|
||||
foreach (string file in Directory.GetFiles(input.Replace("\"", ""), "*", SearchOption.AllDirectories))
|
||||
{
|
||||
newinputs.Add(file.Replace("\"", ""));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Stats stats = new Stats(inputs, single, logger);
|
||||
stats.Process();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wrap adding a new source to the database
|
||||
/// </summary>
|
||||
|
||||
@@ -112,6 +112,7 @@
|
||||
<Compile Include="MergeDiff.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="TrimMerge.cs" />
|
||||
<Compile Include="UncompressedSize.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
|
||||
@@ -6,33 +6,36 @@ using SabreTools.Helper;
|
||||
|
||||
namespace SabreTools
|
||||
{
|
||||
/// <summary>
|
||||
/// Get statistics on one or more DAT files
|
||||
/// </summary>
|
||||
/// <remarks>Finish making this a proper object then port to DATabase (-st, --stats)</remarks>
|
||||
public class UncompressedSize
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
Console.Clear();
|
||||
Build.Start("UncompressedSize");
|
||||
// Private instance variables
|
||||
private List<String> _inputs;
|
||||
private bool _single;
|
||||
private Logger _logger;
|
||||
|
||||
List<string> inputs = new List<string>();
|
||||
|
||||
foreach (string arg in args)
|
||||
/// <summary>
|
||||
/// Create a new UncompressedSize object
|
||||
/// </summary>
|
||||
/// <param name="inputs">List of files and folders to parse</param>
|
||||
/// <param name="single">True if single DAT stats are output, false otherwise</param>
|
||||
/// <param name="logger">Logger object for file and console output</param>
|
||||
public UncompressedSize(List<String> inputs, bool single, Logger logger)
|
||||
{
|
||||
if (File.Exists(arg.Replace("\"", "")))
|
||||
{
|
||||
inputs.Add(arg.Replace("\"", ""));
|
||||
}
|
||||
if (Directory.Exists(arg.Replace("\"", "")))
|
||||
{
|
||||
foreach (string file in Directory.GetFiles(arg.Replace("\"", ""), "*", SearchOption.AllDirectories))
|
||||
{
|
||||
inputs.Add(file.Replace("\"", ""));
|
||||
}
|
||||
}
|
||||
_inputs = inputs;
|
||||
_single = single;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
Logger logger = new Logger(true, "uncompressedsize.log");
|
||||
logger.Start();
|
||||
|
||||
/// <summary>
|
||||
/// Output all requested statistics
|
||||
/// </summary>
|
||||
/// <returns>True if output succeeded, false otherwise</returns>
|
||||
public bool Process()
|
||||
{
|
||||
// Init all single-dat variables
|
||||
long singleSize = 0;
|
||||
long singleGame = 0;
|
||||
@@ -53,13 +56,13 @@ namespace SabreTools
|
||||
long totalSHA1 = 0;
|
||||
long totalNodump = 0;
|
||||
|
||||
|
||||
foreach (string filename in inputs)
|
||||
/// Now process each of the input files
|
||||
foreach (string filename in _inputs)
|
||||
{
|
||||
List<String> games = new List<String>();
|
||||
|
||||
DatData datdata = new DatData();
|
||||
datdata = RomManipulation.Parse(filename, 0, 0, datdata, logger);
|
||||
datdata = RomManipulation.Parse(filename, 0, 0, datdata, _logger);
|
||||
foreach (List<RomData> romlist in datdata.Roms.Values)
|
||||
{
|
||||
foreach (RomData rom in romlist)
|
||||
@@ -97,8 +100,10 @@ namespace SabreTools
|
||||
}
|
||||
}
|
||||
|
||||
// Output single DAT stats
|
||||
logger.User(@"For file '" + filename + @"':
|
||||
// Output single DAT stats (if asked)
|
||||
if (_single)
|
||||
{
|
||||
_logger.User(@"For file '" + filename + @"':
|
||||
--------------------------------------------------
|
||||
Uncompressed size: " + Style.GetBytesReadable(singleSize) + @"
|
||||
Games found: " + singleGame + @"
|
||||
@@ -109,6 +114,7 @@ namespace SabreTools
|
||||
Roms with SHA-1: " + singleSHA1 + @"
|
||||
Roms with Nodump status: " + singleNodump + @"
|
||||
");
|
||||
}
|
||||
|
||||
// Add single DAT stats to totals
|
||||
totalSize += singleSize;
|
||||
@@ -132,7 +138,7 @@ namespace SabreTools
|
||||
}
|
||||
|
||||
// Output total DAT stats
|
||||
logger.User(@"For ALL DATs found
|
||||
_logger.User(@"For ALL DATs found
|
||||
--------------------------------------------------
|
||||
Uncompressed size: " + Style.GetBytesReadable(totalSize) + @"
|
||||
Games found: " + totalGame + @"
|
||||
@@ -143,8 +149,9 @@ namespace SabreTools
|
||||
Roms with SHA-1: " + totalSHA1 + @"
|
||||
Roms with Nodump status: " + totalNodump + @"
|
||||
|
||||
For all individual stats, check the log folder for a complete list");
|
||||
logger.Close();
|
||||
Please check the log folder if the stats scrolled offscreen");
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,7 +63,6 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="UncompressedSize.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
Reference in New Issue
Block a user