diff --git a/CUEToolsLib/Main.cs b/CUEToolsLib/Main.cs index 3b04cee..1f9f36a 100644 --- a/CUEToolsLib/Main.cs +++ b/CUEToolsLib/Main.cs @@ -248,114 +248,56 @@ namespace CUEToolsLib public void Save (SettingsWriter sw) { - sw.Save("ArFixWhenConfidence", fixWhenConfidence.ToString()); - sw.Save("ArFixWhenPercent", fixWhenPercent.ToString()); - sw.Save("ArEncodeWhenConfidence", encodeWhenConfidence.ToString()); - sw.Save("ArEncodeWhenPercent", encodeWhenPercent.ToString()); - sw.Save("ArNoUnverifiedOutput", noUnverifiedOutput ? "1" : "0"); - sw.Save("ArFixOffset", fixOffset ? "1" : "0"); - sw.Save("ArWriteCRC", writeArTags ? "1" : "0"); - sw.Save("ArWriteLog", writeArLog ? "1" : "0"); + sw.Save("ArFixWhenConfidence", fixWhenConfidence); + sw.Save("ArFixWhenPercent", fixWhenPercent); + sw.Save("ArEncodeWhenConfidence", encodeWhenConfidence); + sw.Save("ArEncodeWhenPercent", encodeWhenPercent); + sw.Save("ArNoUnverifiedOutput", noUnverifiedOutput); + sw.Save("ArFixOffset", fixOffset); + sw.Save("ArWriteCRC", writeArTags); + sw.Save("ArWriteLog", writeArLog); - sw.Save("AutoCorrectFilenames", autoCorrectFilenames ? "1" : "0"); - sw.Save("FLACVerify", flacVerify ? "1" : "0"); - sw.Save("FLACCompressionLevel", flacCompressionLevel.ToString()); - sw.Save("PreserveHTOA", preserveHTOA ? "1" : "0"); - sw.Save("WVCompressionMode", wvCompressionMode.ToString()); - sw.Save("WVExtraMode", wvExtraMode.ToString()); - sw.Save("KeepOriginalFilenames", keepOriginalFilenames ? "1" : "0"); + sw.Save("PreserveHTOA", preserveHTOA); + sw.Save("AutoCorrectFilenames", autoCorrectFilenames); + sw.Save("FLACCompressionLevel", flacCompressionLevel); + sw.Save("FLACVerify", flacVerify); + sw.Save("WVCompressionMode", wvCompressionMode); + sw.Save("WVExtraMode", wvExtraMode); + sw.Save("KeepOriginalFilenames", keepOriginalFilenames); sw.Save("SingleFilenameFormat", singleFilenameFormat); sw.Save("TrackFilenameFormat", trackFilenameFormat); - sw.Save("RemoveSpecialCharacters", removeSpecial ? "1" : "0"); + sw.Save("RemoveSpecialCharacters", removeSpecial); sw.Save("SpecialCharactersExceptions", specialExceptions); - sw.Save("ReplaceSpaces", replaceSpaces ? "1" : "0"); - sw.Save("EmbedLog", embedLog ? "1" : "0"); - sw.Save("FillUpCUE", fillUpCUE ? "1" : "0"); + sw.Save("ReplaceSpaces", replaceSpaces); + sw.Save("EmbedLog", embedLog); + sw.Save("FillUpCUE", fillUpCUE); } public void Load(SettingsReader sr) { - string val; + fixWhenConfidence = sr.LoadUInt32("ArFixWhenConfidence", 1, 1000) ?? 1; + fixWhenPercent = sr.LoadUInt32("ArFixWhenPercent", 1, 100) ?? 50; + encodeWhenConfidence = sr.LoadUInt32("ArEncodeWhenConfidence", 1, 1000) ?? 1; + encodeWhenPercent = sr.LoadUInt32("ArEncodeWhenPercent", 1, 100) ?? 50; + noUnverifiedOutput = sr.LoadBoolean("ArNoUnverifiedOutput") ?? true; + fixOffset = sr.LoadBoolean("ArFixOffset") ?? true; + writeArTags = sr.LoadBoolean("ArWriteCRC") ?? true; + writeArLog = sr.LoadBoolean("ArWriteLog") ?? true; - val = sr.Load("ArFixWhenConfidence"); - if ((val == null) || !UInt32.TryParse(val, out fixWhenConfidence) || - fixWhenConfidence <= 0 || fixWhenConfidence > 1000) - fixWhenConfidence = 1; - - val = sr.Load("ArFixWhenPercent"); - if ((val == null) || !UInt32.TryParse(val, out fixWhenPercent) || - fixWhenPercent <= 0 || fixWhenPercent > 100) - fixWhenPercent = 50; - - val = sr.Load("ArEncodeWhenConfidence"); - if ((val == null) || !UInt32.TryParse(val, out encodeWhenConfidence) || - encodeWhenConfidence <= 0 || encodeWhenConfidence > 1000) - encodeWhenConfidence = 1; - - val = sr.Load("ArEncodeWhenPercent"); - if ((val == null) || !UInt32.TryParse(val, out encodeWhenPercent) || - encodeWhenPercent <= 0 || encodeWhenPercent > 100) - encodeWhenPercent = 50; - - val = sr.Load("ArNoUnverifiedOutput"); - noUnverifiedOutput = (val != null) ? (val != "0") : true; - - val = sr.Load("ArFixOffset"); - fixOffset = (val != null) ? (val != "0") : true; - - val = sr.Load("ArWriteCRC"); - writeArTags = (val != null) ? (val != "0") : true; - - val = sr.Load("ArWriteLog"); - writeArLog = (val != null) ? (val != "0") : true; - - val = sr.Load("PreserveHTOA"); - preserveHTOA = (val != null) ? (val != "0") : true; - - val = sr.Load("AutoCorrectFilenames"); - autoCorrectFilenames = (val != null) ? (val != "0") : false; - - val = sr.Load("FLACCompressionLevel"); - if ((val == null) || !UInt32.TryParse(val, out flacCompressionLevel) || - flacCompressionLevel > 8) - flacCompressionLevel = 5; - - val = sr.Load("FLACVerify"); - flacVerify = (val != null) ? (val != "0") : false; - - val = sr.Load("WVCompressionMode"); - if ((val == null) || !Int32.TryParse(val, out wvCompressionMode) || - (wvCompressionMode < 0) || (wvCompressionMode > 3)) - wvCompressionMode = 1; - - val = sr.Load("WVExtraMode"); - if ((val == null) || !Int32.TryParse(val, out wvExtraMode) || - (wvExtraMode < 0) || (wvExtraMode > 6)) - wvExtraMode = 0; - - val = sr.Load("KeepOriginalFilenames"); - keepOriginalFilenames = (val != null) ? (val != "0") : true; - - val = sr.Load("SingleFilenameFormat"); - singleFilenameFormat = (val != null) ? val : "%F"; - - val = sr.Load("TrackFilenameFormat"); - trackFilenameFormat = (val != null) ? val : "%N-%A-%T"; - - val = sr.Load("RemoveSpecialCharacters"); - removeSpecial = (val != null) ? (val != "0") : true; - - val = sr.Load("SpecialCharactersExceptions"); - specialExceptions = (val != null) ? val : "-()"; - - val = sr.Load("ReplaceSpaces"); - replaceSpaces = (val != null) ? (val != "0") : true; - - val = sr.Load("EmbedLog"); - embedLog = (val != null) ? (val != "0") : true; - - val = sr.Load("FillUpCUE"); - fillUpCUE = (val != null) ? (val != "0") : true; + preserveHTOA = sr.LoadBoolean("PreserveHTOA") ?? true; + autoCorrectFilenames = sr.LoadBoolean("AutoCorrectFilenames") ?? false; + flacCompressionLevel = sr.LoadUInt32("FLACCompressionLevel", 0, 8) ?? 5; + flacVerify = sr.LoadBoolean("FLACVerify") ?? false; + wvCompressionMode = sr.LoadInt32("WVCompressionMode", 0, 3) ?? 1; + wvExtraMode = sr.LoadInt32("WVExtraMode", 0, 6) ?? 0; + keepOriginalFilenames = sr.LoadBoolean("KeepOriginalFilenames") ?? true; + singleFilenameFormat = sr.Load("SingleFilenameFormat") ?? "%F"; + trackFilenameFormat = sr.Load("TrackFilenameFormat") ?? "%N-%A-%T"; + removeSpecial = sr.LoadBoolean("RemoveSpecialCharacters") ?? true; + specialExceptions = sr.Load("SpecialCharactersExceptions") ?? "-()"; + replaceSpaces = sr.LoadBoolean("ReplaceSpaces") ?? true; + embedLog = sr.LoadBoolean("EmbedLog") ?? true; + fillUpCUE = sr.LoadBoolean("FillUpCUE") ?? true; } public string CleanseString (string s) @@ -1724,7 +1666,7 @@ namespace CUEToolsLib destTags.Add("TITLE", track.Title); if (destTags.Get("ARTIST") == null && "" != track.Artist) destTags.Add("ARTIST", track.Artist); - destTags.Add("TRACKNUMBER", iTrack.ToString()); + destTags.Add("TRACKNUMBER", (iTrack + 1).ToString()); if (_accurateRipId != null && _config.writeArTags) { if (_accurateOffset && accResult == HttpStatusCode.OK) diff --git a/CUEToolsLib/Settings.cs b/CUEToolsLib/Settings.cs index 43d2250..e854379 100644 --- a/CUEToolsLib/Settings.cs +++ b/CUEToolsLib/Settings.cs @@ -71,6 +71,29 @@ namespace CUEToolsLib public string Load(string name) { return _settings.ContainsKey(name) ? _settings[name] : null; } + + public bool? LoadBoolean(string name) { + string val = Load(name); + if (val == "0") return false; + if (val == "1") return true; + return null; + } + + public int? LoadInt32(string name, int? min, int? max) { + int val; + if (!Int32.TryParse(Load(name), out val)) return null; + if (min.HasValue && (val < min.Value)) return null; + if (max.HasValue && (val > max.Value)) return null; + return val; + } + + public uint? LoadUInt32(string name, uint? min, uint? max) { + uint val; + if (!UInt32.TryParse(Load(name), out val)) return null; + if (min.HasValue && (val < min.Value)) return null; + if (max.HasValue && (val > max.Value)) return null; + return val; + } } public class SettingsWriter { @@ -86,6 +109,18 @@ namespace CUEToolsLib _sw.WriteLine(name + "=" + value); } + public void Save(string name, bool value) { + Save(name, value ? "1" : "0"); + } + + public void Save(string name, int value) { + Save(name, value.ToString()); + } + + public void Save(string name, uint value) { + Save(name, value.ToString()); + } + public void Close() { _sw.Close(); }