diff --git a/AaxDecrypter/DecryptSupportLibraries.cs b/AaxDecrypter/DecryptSupportLibraries.cs index c5952295..7053e9ed 100644 --- a/AaxDecrypter/DecryptSupportLibraries.cs +++ b/AaxDecrypter/DecryptSupportLibraries.cs @@ -7,8 +7,6 @@ namespace AaxDecrypter // OTHER EXTERNAL DEPENDENCIES // ffprobe has these pre-req.s as I'm using it: // avcodec-58.dll, avdevice-58.dll, avfilter-7.dll, avformat-58.dll, avutil-56.dll, postproc-54.dll, swresample-3.dll, swscale-5.dll, taglib-sharp.dll - // - // something else needs the cygwin files (cyg*.dll) private static string appPath_ { get; } = Path.GetDirectoryName(Dinah.Core.Exe.FileLocationOnDisk); private static string decryptLib_ { get; } = Path.Combine(appPath_, "DecryptLib"); diff --git a/Libation.sln b/Libation.sln index 2afaee22..180dc899 100644 --- a/Libation.sln +++ b/Libation.sln @@ -54,10 +54,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibationWinForms", "Libatio EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsDesigner", "WinFormsDesigner\WinFormsDesigner.csproj", "{0807616A-A77A-4B08-A65A-1582B09E114B}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ffmpeg decrypt", "_Demos\ffmpeg decrypt\ffmpeg decrypt.csproj", "{DF72740C-900A-45DA-A3A6-4DDD68F286F2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "inAudibleLite", "_Demos\inAudibleLite\inAudibleLite.csproj", "{74D02251-898E-4CAF-80C7-801820622903}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dinah.Core", "..\Dinah.Core\Dinah.Core\Dinah.Core.csproj", "{9E951521-2587-4FC6-AD26-FAA9179FB6C4}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dinah.EntityFrameworkCore", "..\Dinah.Core\Dinah.EntityFrameworkCore\Dinah.EntityFrameworkCore.csproj", "{1255D9BA-CE6E-42E4-A253-6376540B9661}" @@ -152,14 +148,6 @@ Global {0807616A-A77A-4B08-A65A-1582B09E114B}.Debug|Any CPU.Build.0 = Debug|Any CPU {0807616A-A77A-4B08-A65A-1582B09E114B}.Release|Any CPU.ActiveCfg = Release|Any CPU {0807616A-A77A-4B08-A65A-1582B09E114B}.Release|Any CPU.Build.0 = Release|Any CPU - {DF72740C-900A-45DA-A3A6-4DDD68F286F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DF72740C-900A-45DA-A3A6-4DDD68F286F2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DF72740C-900A-45DA-A3A6-4DDD68F286F2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DF72740C-900A-45DA-A3A6-4DDD68F286F2}.Release|Any CPU.Build.0 = Release|Any CPU - {74D02251-898E-4CAF-80C7-801820622903}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {74D02251-898E-4CAF-80C7-801820622903}.Debug|Any CPU.Build.0 = Debug|Any CPU - {74D02251-898E-4CAF-80C7-801820622903}.Release|Any CPU.ActiveCfg = Release|Any CPU - {74D02251-898E-4CAF-80C7-801820622903}.Release|Any CPU.Build.0 = Release|Any CPU {9E951521-2587-4FC6-AD26-FAA9179FB6C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9E951521-2587-4FC6-AD26-FAA9179FB6C4}.Debug|Any CPU.Build.0 = Debug|Any CPU {9E951521-2587-4FC6-AD26-FAA9179FB6C4}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -239,8 +227,6 @@ Global {111420E2-D4F0-4068-B46A-C4B6DCC823DC} = {38E6C6D9-963A-4C5B-89F4-F2F14885ADFD} {635F00E1-AAD1-45F7-BEB7-D909AD33B9F6} = {8679CAC8-9164-4007-BDD2-F004810EDA14} {0807616A-A77A-4B08-A65A-1582B09E114B} = {8679CAC8-9164-4007-BDD2-F004810EDA14} - {DF72740C-900A-45DA-A3A6-4DDD68F286F2} = {F61184E7-2426-4A13-ACEF-5689928E2CE2} - {74D02251-898E-4CAF-80C7-801820622903} = {F61184E7-2426-4A13-ACEF-5689928E2CE2} {9E951521-2587-4FC6-AD26-FAA9179FB6C4} = {43E3ACB3-E0BC-4370-8DBB-E3720C8C8FD1} {1255D9BA-CE6E-42E4-A253-6376540B9661} = {43E3ACB3-E0BC-4370-8DBB-E3720C8C8FD1} {35803735-B669-4090-9681-CC7F7FABDC71} = {7FBBB086-0807-4998-85BF-6D1A49C8AD05} diff --git a/_Demos/ffmpeg decrypt/Escaper.cs b/_Demos/ffmpeg decrypt/Escaper.cs deleted file mode 100644 index c1527800..00000000 --- a/_Demos/ffmpeg decrypt/Escaper.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Text.RegularExpressions; - -namespace ffmpeg_decrypt -{ - // from: http://csharptest.net/529/how-to-correctly-escape-command-line-arguments-in-c/index.html - public static class Escaper - { - /// - /// Quotes all arguments that contain whitespace, or begin with a quote and returns a single - /// argument string for use with Process.Start(). - /// - /// A list of strings for arguments, may not contain null, '\0', '\r', or '\n' - /// The combined list of escaped/quoted strings - /// Raised when one of the arguments is null - /// Raised if an argument contains '\0', '\r', or '\n' - public static string EscapeArguments(params string[] args) - { - var arguments = new System.Text.StringBuilder(); - var invalidChar = new Regex("[\x00\x0a\x0d]");// these can not be escaped - var needsQuotes = new Regex(@"\s|""");// contains whitespace or two quote characters - var escapeQuote = new Regex(@"(\\*)(""|$)");// one or more '\' followed with a quote or end of string - - for (int carg = 0; args != null && carg < args.Length; carg++) - { - if (args[carg] == null) - throw new ArgumentNullException("args[" + carg + "]"); - - if (invalidChar.IsMatch(args[carg])) - throw new ArgumentOutOfRangeException("args[" + carg + "]"); - - if (args[carg] == string.Empty) - arguments.Append("\"\""); - else if (!needsQuotes.IsMatch(args[carg])) - arguments.Append(args[carg]); - else - { - arguments.Append('"'); - arguments.Append(escapeQuote.Replace(args[carg], m => - m.Groups[1].Value + m.Groups[1].Value + - (m.Groups[2].Value == "\"" ? "\\\"" : "") - )); - arguments.Append('"'); - } - - if (carg + 1 < args.Length) - arguments.Append(' '); - } - return arguments.ToString(); - } - } -} diff --git a/_Demos/ffmpeg decrypt/Extensions.cs b/_Demos/ffmpeg decrypt/Extensions.cs deleted file mode 100644 index a2ed96fd..00000000 --- a/_Demos/ffmpeg decrypt/Extensions.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Windows.Forms; - -namespace ffmpeg_decrypt -{ - public static class StringExt - { - public static string SurroundWithQuotes(this string str) => "\"" + str + "\""; - - public static string ExtractString(this string haystack, string before, int needleLength) - { - var index = haystack.IndexOf(before); - var needle = haystack.Substring(index + before.Length, needleLength); - - return needle; - } - } - - public static class ControlExt - { - /// - /// Executes the Action asynchronously on the UI thread, does not block execution on the calling thread. - /// - /// - /// - public static void UIThread(this Control control, Action code) - { - if (control.InvokeRequired) - control.BeginInvoke(code); - else - code.Invoke(); - } - } -} diff --git a/_Demos/ffmpeg decrypt/Form1.Designer.cs b/_Demos/ffmpeg decrypt/Form1.Designer.cs deleted file mode 100644 index 61343ed2..00000000 --- a/_Demos/ffmpeg decrypt/Form1.Designer.cs +++ /dev/null @@ -1,293 +0,0 @@ -namespace ffmpeg_decrypt -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); - this.inpbutton = new System.Windows.Forms.Button(); - this.outpbutton = new System.Windows.Forms.Button(); - this.inputdisplay = new System.Windows.Forms.TextBox(); - this.outputdisplay = new System.Windows.Forms.TextBox(); - this.convertbutton = new System.Windows.Forms.Button(); - this.txtConsole = new System.Windows.Forms.TextBox(); - this.qualityCombo = new System.Windows.Forms.ComboBox(); - this.setQualityLbl = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.statuslbl = new System.Windows.Forms.Label(); - this.rmp3 = new System.Windows.Forms.RadioButton(); - this.raac = new System.Windows.Forms.RadioButton(); - this.rflac = new System.Windows.Forms.RadioButton(); - this.inputPnl = new System.Windows.Forms.Panel(); - this.convertGb = new System.Windows.Forms.GroupBox(); - this.decryptConvertPnl = new System.Windows.Forms.Panel(); - this.convertRb = new System.Windows.Forms.RadioButton(); - this.decryptRb = new System.Windows.Forms.RadioButton(); - this.inputPnl.SuspendLayout(); - this.convertGb.SuspendLayout(); - this.decryptConvertPnl.SuspendLayout(); - this.SuspendLayout(); - // - // inpbutton - // - this.inpbutton.Location = new System.Drawing.Point(306, 0); - this.inpbutton.Name = "inpbutton"; - this.inpbutton.Size = new System.Drawing.Size(99, 23); - this.inpbutton.TabIndex = 0; - this.inpbutton.Text = "Choose .aax ..."; - this.inpbutton.UseVisualStyleBackColor = true; - this.inpbutton.Click += new System.EventHandler(this.inpbutton_Click); - // - // outpbutton - // - this.outpbutton.Location = new System.Drawing.Point(306, 29); - this.outpbutton.Name = "outpbutton"; - this.outpbutton.Size = new System.Drawing.Size(99, 23); - this.outpbutton.TabIndex = 1; - this.outpbutton.Text = "Set extract dir..."; - this.outpbutton.UseVisualStyleBackColor = true; - this.outpbutton.Click += new System.EventHandler(this.outpbutton_Click); - // - // inputdisplay - // - this.inputdisplay.Location = new System.Drawing.Point(0, 2); - this.inputdisplay.Name = "inputdisplay"; - this.inputdisplay.Size = new System.Drawing.Size(300, 20); - this.inputdisplay.TabIndex = 2; - // - // outputdisplay - // - this.outputdisplay.Location = new System.Drawing.Point(0, 31); - this.outputdisplay.Name = "outputdisplay"; - this.outputdisplay.Size = new System.Drawing.Size(300, 20); - this.outputdisplay.TabIndex = 3; - // - // convertbutton - // - this.convertbutton.Enabled = false; - this.convertbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.convertbutton.Location = new System.Drawing.Point(306, 58); - this.convertbutton.Name = "convertbutton"; - this.convertbutton.Size = new System.Drawing.Size(99, 107); - this.convertbutton.TabIndex = 6; - this.convertbutton.Text = "Convert Audible Audio File"; - this.convertbutton.UseVisualStyleBackColor = true; - this.convertbutton.Click += new System.EventHandler(this.convertbutton_Click); - // - // txtConsole - // - this.txtConsole.BackColor = System.Drawing.Color.Black; - this.txtConsole.ForeColor = System.Drawing.Color.White; - this.txtConsole.Location = new System.Drawing.Point(12, 199); - this.txtConsole.Multiline = true; - this.txtConsole.Name = "txtConsole"; - this.txtConsole.ReadOnly = true; - this.txtConsole.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.txtConsole.Size = new System.Drawing.Size(405, 184); - this.txtConsole.TabIndex = 7; - // - // qualityCombo - // - this.qualityCombo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.qualityCombo.FormattingEnabled = true; - this.qualityCombo.Items.AddRange(new object[] { - "32", - "80", - "96", - "128", - "160", - "192", - "256", - "320"}); - this.qualityCombo.Location = new System.Drawing.Point(148, 41); - this.qualityCombo.Name = "qualityCombo"; - this.qualityCombo.Size = new System.Drawing.Size(146, 21); - this.qualityCombo.TabIndex = 9; - // - // setQualityLbl - // - this.setQualityLbl.AutoSize = true; - this.setQualityLbl.Location = new System.Drawing.Point(145, 21); - this.setQualityLbl.Name = "setQualityLbl"; - this.setQualityLbl.Size = new System.Drawing.Size(149, 13); - this.setQualityLbl.TabIndex = 10; - this.setQualityLbl.Text = "Set MP3/M4B Quality (kbit/s):"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 183); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(40, 13); - this.label1.TabIndex = 11; - this.label1.Text = "Status:"; - // - // statuslbl - // - this.statuslbl.AutoSize = true; - this.statuslbl.Location = new System.Drawing.Point(58, 183); - this.statuslbl.Name = "statuslbl"; - this.statuslbl.Size = new System.Drawing.Size(51, 13); - this.statuslbl.TabIndex = 12; - this.statuslbl.Text = "[statuslbl]"; - // - // rmp3 - // - this.rmp3.AutoSize = true; - this.rmp3.Location = new System.Drawing.Point(6, 19); - this.rmp3.Name = "rmp3"; - this.rmp3.Size = new System.Drawing.Size(76, 17); - this.rmp3.TabIndex = 13; - this.rmp3.Text = "MP3 audio"; - this.rmp3.UseVisualStyleBackColor = true; - // - // raac - // - this.raac.AutoSize = true; - this.raac.Checked = true; - this.raac.Location = new System.Drawing.Point(6, 42); - this.raac.Name = "raac"; - this.raac.Size = new System.Drawing.Size(125, 17); - this.raac.TabIndex = 14; - this.raac.TabStop = true; - this.raac.Text = "AAC M4B Audiobook"; - this.raac.UseVisualStyleBackColor = true; - // - // rflac - // - this.rflac.AutoSize = true; - this.rflac.Location = new System.Drawing.Point(6, 65); - this.rflac.Name = "rflac"; - this.rflac.Size = new System.Drawing.Size(99, 17); - this.rflac.TabIndex = 15; - this.rflac.Text = "FLAC HQ audio"; - this.rflac.UseVisualStyleBackColor = true; - // - // inputPnl - // - this.inputPnl.Controls.Add(this.convertGb); - this.inputPnl.Controls.Add(this.decryptConvertPnl); - this.inputPnl.Controls.Add(this.inputdisplay); - this.inputPnl.Controls.Add(this.inpbutton); - this.inputPnl.Controls.Add(this.outpbutton); - this.inputPnl.Controls.Add(this.outputdisplay); - this.inputPnl.Controls.Add(this.convertbutton); - this.inputPnl.Location = new System.Drawing.Point(12, 12); - this.inputPnl.Name = "inputPnl"; - this.inputPnl.Size = new System.Drawing.Size(405, 168); - this.inputPnl.TabIndex = 16; - // - // convertGb - // - this.convertGb.Controls.Add(this.rmp3); - this.convertGb.Controls.Add(this.setQualityLbl); - this.convertGb.Controls.Add(this.rflac); - this.convertGb.Controls.Add(this.qualityCombo); - this.convertGb.Controls.Add(this.raac); - this.convertGb.Location = new System.Drawing.Point(0, 80); - this.convertGb.Name = "convertGb"; - this.convertGb.Size = new System.Drawing.Size(300, 85); - this.convertGb.TabIndex = 14; - this.convertGb.TabStop = false; - this.convertGb.Text = "Convert options"; - // - // decryptConvertPnl - // - this.decryptConvertPnl.Controls.Add(this.convertRb); - this.decryptConvertPnl.Controls.Add(this.decryptRb); - this.decryptConvertPnl.Location = new System.Drawing.Point(0, 58); - this.decryptConvertPnl.Name = "decryptConvertPnl"; - this.decryptConvertPnl.Size = new System.Drawing.Size(266, 16); - this.decryptConvertPnl.TabIndex = 13; - // - // convertRb - // - this.convertRb.AutoSize = true; - this.convertRb.Location = new System.Drawing.Point(88, 0); - this.convertRb.Name = "convertRb"; - this.convertRb.Size = new System.Drawing.Size(62, 17); - this.convertRb.TabIndex = 1; - this.convertRb.Text = "Convert"; - this.convertRb.UseVisualStyleBackColor = true; - this.convertRb.CheckedChanged += new System.EventHandler(this.decryptConvertRb_CheckedChanged); - // - // decryptRb - // - this.decryptRb.AutoSize = true; - this.decryptRb.Location = new System.Drawing.Point(0, 0); - this.decryptRb.Name = "decryptRb"; - this.decryptRb.Size = new System.Drawing.Size(82, 17); - this.decryptRb.TabIndex = 0; - this.decryptRb.Text = "Just decrypt"; - this.decryptRb.UseVisualStyleBackColor = true; - this.decryptRb.CheckedChanged += new System.EventHandler(this.decryptConvertRb_CheckedChanged); - // - // Form1 - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(429, 395); - this.Controls.Add(this.inputPnl); - this.Controls.Add(this.txtConsole); - this.Controls.Add(this.label1); - this.Controls.Add(this.statuslbl); - this.Name = "Form1"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Open Source Audible Converter"; - this.inputPnl.ResumeLayout(false); - this.inputPnl.PerformLayout(); - this.convertGb.ResumeLayout(false); - this.convertGb.PerformLayout(); - this.decryptConvertPnl.ResumeLayout(false); - this.decryptConvertPnl.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button inpbutton; - private System.Windows.Forms.Button outpbutton; - private System.Windows.Forms.TextBox inputdisplay; - private System.Windows.Forms.TextBox outputdisplay; - private System.Windows.Forms.Button convertbutton; - private System.Windows.Forms.TextBox txtConsole; - private System.Windows.Forms.ComboBox qualityCombo; - private System.Windows.Forms.Label setQualityLbl; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label statuslbl; - private System.Windows.Forms.RadioButton rmp3; - private System.Windows.Forms.RadioButton raac; - private System.Windows.Forms.RadioButton rflac; - private System.Windows.Forms.Panel inputPnl; - private System.Windows.Forms.GroupBox convertGb; - private System.Windows.Forms.Panel decryptConvertPnl; - private System.Windows.Forms.RadioButton convertRb; - private System.Windows.Forms.RadioButton decryptRb; - } -} diff --git a/_Demos/ffmpeg decrypt/Form1.cs b/_Demos/ffmpeg decrypt/Form1.cs deleted file mode 100644 index f2714444..00000000 --- a/_Demos/ffmpeg decrypt/Form1.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace ffmpeg_decrypt -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - - qualityCombo.SelectedIndex = 1; // value == 80 - statuslbl.Text = ""; - decryptRb.Checked = true; - } - - private void inpbutton_Click(object sender, EventArgs e) - { - using var ofd = new OpenFileDialog { Filter = "Audible Audio Files|*.aax", Title = "Select an Audible Audio File", FileName = "" }; - if (ofd.ShowDialog() == DialogResult.OK) - { - inputdisplay.Text = ofd.FileName; - outputdisplay.Text = Path.GetDirectoryName(ofd.FileName); - convertbutton.Enabled = true; - } - } - - private void outpbutton_Click(object sender, EventArgs e) - { - using var fbd = new FolderBrowserDialog(); - if (fbd.ShowDialog() == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath)) - outputdisplay.Text = fbd.SelectedPath; - } - - private async void convertbutton_Click(object sender, EventArgs e) - { - //var sw = Stopwatch.StartNew(); - - // disable UI - inputPnl.Enabled = false; - - statuslbl.Text = "Getting File Hash..."; - var checksum = await RCrack.GetChecksum(inputdisplay.Text); - - statuslbl.Text = "Cracking Activation Bytes..."; - var activation_bytes = await RCrack.GetActivationBytes(checksum); - - statuslbl.Text = "Converting File..."; - var encodeTo - = decryptRb.Checked ? EncodeTo.DecryptOnly - : rmp3.Checked ? EncodeTo.Mp3 - : raac.Checked ? EncodeTo.M4b - : rflac.Checked ? EncodeTo.Flac - : throw new NotImplementedException(); - await decryptAndSaveFile(activation_bytes, inputdisplay.Text, outputdisplay.Text, txtConsole, encodeTo, int.Parse(qualityCombo.Text)); - - // re-enable UI - inputPnl.Enabled = true; - - //sw.Stop(); - //var total = (int)sw.Elapsed.TotalSeconds; - - statuslbl.Text = "Conversion Complete!"; - } - - // ProcessStartInfo.Arguments: use Escaper.EscapeArguments instead of .SurroundWithQuotes() - - // see also: https://stackoverflow.com/questions/4291912/process-start-how-to-get-the-output - // top 2 answers show: easy, sync, async - - enum EncodeTo - { - /// Decrypt only. Retain original encoding - DecryptOnly, - /// LAME MP3 - Mp3, - /// M4B AAC - M4b, - /// FLAC HD - Flac - } - - private static async Task decryptAndSaveFile(string activation_bytes, string inputPath, string outputPath, TextBoxBase debugWindow, EncodeTo encodeTo, int encodeQuality = 80) - { - Resources.Extract("ffmpeg.exe"); - - var fileBase = Path.Combine(outputPath, Path.GetFileNameWithoutExtension(inputPath)); - - string arguments; - - // only decrypt. no re-encoding - if (encodeTo == EncodeTo.DecryptOnly) - { - var fileout = fileBase + ".m4b"; - arguments = $"-activation_bytes {activation_bytes} -i {inputPath.SurroundWithQuotes()} -vn -c:a copy {fileout.SurroundWithQuotes()}"; - } - // re-encode. encoding will be determined by file extension - else // if (convertRb.Checked) - { - var fileout = fileBase + "." + encodeTo.ToString().ToLower(); - arguments = $"-y -activation_bytes {activation_bytes} -i {inputPath.SurroundWithQuotes()} -ab {encodeQuality} -map_metadata 0 -id3v2_version 3 -vn {fileout.SurroundWithQuotes()}"; - } - - // nothing in stdout. progress/debug info is in stderr - var startInfo = new ProcessStartInfo - { - FileName = Path.Combine(Resources.resdir, "ffmpeg.exe"), - Arguments = arguments, - CreateNoWindow = true, - RedirectStandardError = true, - UseShellExecute = false, - WorkingDirectory = Directory.GetCurrentDirectory() - }; - - using var ffm = new Process { StartInfo = startInfo, EnableRaisingEvents = true }; - ffm.ErrorDataReceived += (s, ea) => debugWindow.UIThread(() => debugWindow.AppendText($"DEBUG: {ea.Data}\r\n")); - - ffm.Start(); - ffm.BeginErrorReadLine(); - await Task.Run(() => ffm.WaitForExit()); - ffm.Close(); - } - - private void decryptConvertRb_CheckedChanged(object sender, EventArgs e) => convertGb.Enabled = convertRb.Checked; - } -} diff --git a/_Demos/ffmpeg decrypt/Program.cs b/_Demos/ffmpeg decrypt/Program.cs deleted file mode 100644 index cef604d7..00000000 --- a/_Demos/ffmpeg decrypt/Program.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace ffmpeg_decrypt -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.SetHighDpiMode(HighDpiMode.SystemAware); - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new Form1()); - } - } -} diff --git a/_Demos/ffmpeg decrypt/RCrack.cs b/_Demos/ffmpeg decrypt/RCrack.cs deleted file mode 100644 index 1783b061..00000000 --- a/_Demos/ffmpeg decrypt/RCrack.cs +++ /dev/null @@ -1,85 +0,0 @@ -using System; -using System.Diagnostics; -using System.IO; -using System.Threading.Tasks; - -namespace ffmpeg_decrypt -{ - public static class RCrack - { - public static async Task GetChecksum(string aaxPath) - { - Resources.Extract("ffprobe.exe"); - - var startInfo = new ProcessStartInfo - { - FileName = Path.Combine(Resources.resdir, "ffprobe.exe"), - Arguments = aaxPath.SurroundWithQuotes(), - CreateNoWindow = true, - RedirectStandardOutput = true, - RedirectStandardError = true, - UseShellExecute = false, - WorkingDirectory = Directory.GetCurrentDirectory() - }; - - using var ffp = new Process { StartInfo = startInfo }; - ffp.Start(); - - // checksum is in the debug info. ffprobe's debug info is written to stderr, not stdout - var ffprobeStderr = ffp.StandardError.ReadToEnd(); - - await ffp.WaitForExitAsync(); - - ffp.Close(); - - // example checksum line: - // ... [aax] file checksum == 0c527840c4f18517157eb0b4f9d6f9317ce60cd1 - var checksum = ffprobeStderr.ExtractString("file checksum == ", 40); - - return checksum; - } - - /// use checksum to get activation bytes. activation bytes are unique per audible customer. only have to do this 1x/customer - public static async Task GetActivationBytes(string checksum) - { - Resources.Extract("rcrack.exe"); - - Resources.Extract("alglib1.dll"); - // RainbowCrack files to recover your own Audible activation data (activation_bytes) in an offline manner - Resources.Extract("audible_byte#4-4_0_10000x789935_0.rtc"); - Resources.Extract("audible_byte#4-4_1_10000x791425_0.rtc"); - Resources.Extract("audible_byte#4-4_2_10000x790991_0.rtc"); - Resources.Extract("audible_byte#4-4_3_10000x792120_0.rtc"); - Resources.Extract("audible_byte#4-4_4_10000x790743_0.rtc"); - Resources.Extract("audible_byte#4-4_5_10000x790568_0.rtc"); - Resources.Extract("audible_byte#4-4_6_10000x791458_0.rtc"); - Resources.Extract("audible_byte#4-4_7_10000x791707_0.rtc"); - Resources.Extract("audible_byte#4-4_8_10000x790202_0.rtc"); - Resources.Extract("audible_byte#4-4_9_10000x791022_0.rtc"); - - var startInfo = new ProcessStartInfo - { - FileName = Path.Combine(Resources.resdir, "rcrack.exe"), - Arguments = @". -h " + checksum, - CreateNoWindow = true, - RedirectStandardOutput = true, - UseShellExecute = false, - WorkingDirectory = Directory.GetCurrentDirectory() - }; - - using var rcr = new Process { StartInfo = startInfo }; - rcr.Start(); - - var rcrackStdout = rcr.StandardOutput.ReadToEnd(); - - await rcr.WaitForExitAsync(); - rcr.Close(); - - // example result - // 0c527840c4f18517157eb0b4f9d6f9317ce60cd1 \xbd\x89X\x09 hex:bd895809 - var activation_bytes = rcrackStdout.ExtractString("hex:", 8); - - return activation_bytes; - } - } -} diff --git a/_Demos/ffmpeg decrypt/Resources.cs b/_Demos/ffmpeg decrypt/Resources.cs deleted file mode 100644 index 35d2c6fe..00000000 --- a/_Demos/ffmpeg decrypt/Resources.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.IO; - -namespace ffmpeg_decrypt -{ - public static class Resources - { - public static string resdir { get; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "res"); - - /// extract embedded resource to file if it doesn't already exist - public static void Extract(string resourceName) - { - // first determine whether files exist already in res dir - if (File.Exists(Path.Combine(resdir, resourceName))) - return; - - // extract embedded resource - // this technique works but there are easier ways: - // https://stackoverflow.com/questions/13031778/how-can-i-extract-a-file-from-an-embedded-resource-and-save-it-to-disk - Directory.CreateDirectory(resdir); - using var resource = System.Reflection.Assembly.GetCallingAssembly().GetManifestResourceStream($"{nameof(ffmpeg_decrypt)}.res." + resourceName); - using var reader = new BinaryReader(resource); - using var file = new FileStream(Path.Combine(resdir, resourceName), FileMode.OpenOrCreate); - using var writer = new BinaryWriter(file); - writer.Write(reader.ReadBytes((int)resource.Length)); - } - } -} diff --git a/_Demos/ffmpeg decrypt/ffmpeg decrypt.csproj b/_Demos/ffmpeg decrypt/ffmpeg decrypt.csproj deleted file mode 100644 index 48fb5010..00000000 --- a/_Demos/ffmpeg decrypt/ffmpeg decrypt.csproj +++ /dev/null @@ -1,65 +0,0 @@ - - - - WinExe - net5.0-windows - ffmpeg_decrypt - true - - - - - - - - - - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - - \ No newline at end of file diff --git a/_Demos/ffmpeg decrypt/res/alglib1.dll b/_Demos/ffmpeg decrypt/res/alglib1.dll deleted file mode 100644 index 6da4ca52..00000000 Binary files a/_Demos/ffmpeg decrypt/res/alglib1.dll and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_0_10000x789935_0.rtc b/_Demos/ffmpeg decrypt/res/audible_byte#4-4_0_10000x789935_0.rtc deleted file mode 100644 index 6359b7a3..00000000 Binary files a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_0_10000x789935_0.rtc and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_1_10000x791425_0.rtc b/_Demos/ffmpeg decrypt/res/audible_byte#4-4_1_10000x791425_0.rtc deleted file mode 100644 index 57aa2b11..00000000 Binary files a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_1_10000x791425_0.rtc and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_2_10000x790991_0.rtc b/_Demos/ffmpeg decrypt/res/audible_byte#4-4_2_10000x790991_0.rtc deleted file mode 100644 index 0ab3c43a..00000000 Binary files a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_2_10000x790991_0.rtc and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_3_10000x792120_0.rtc b/_Demos/ffmpeg decrypt/res/audible_byte#4-4_3_10000x792120_0.rtc deleted file mode 100644 index 8e0438c8..00000000 Binary files a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_3_10000x792120_0.rtc and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_4_10000x790743_0.rtc b/_Demos/ffmpeg decrypt/res/audible_byte#4-4_4_10000x790743_0.rtc deleted file mode 100644 index 1e169c3e..00000000 Binary files a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_4_10000x790743_0.rtc and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_5_10000x790568_0.rtc b/_Demos/ffmpeg decrypt/res/audible_byte#4-4_5_10000x790568_0.rtc deleted file mode 100644 index 77c2a193..00000000 Binary files a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_5_10000x790568_0.rtc and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_6_10000x791458_0.rtc b/_Demos/ffmpeg decrypt/res/audible_byte#4-4_6_10000x791458_0.rtc deleted file mode 100644 index 4f7b21c9..00000000 Binary files a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_6_10000x791458_0.rtc and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_7_10000x791707_0.rtc b/_Demos/ffmpeg decrypt/res/audible_byte#4-4_7_10000x791707_0.rtc deleted file mode 100644 index f4b7b061..00000000 Binary files a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_7_10000x791707_0.rtc and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_8_10000x790202_0.rtc b/_Demos/ffmpeg decrypt/res/audible_byte#4-4_8_10000x790202_0.rtc deleted file mode 100644 index e279ee04..00000000 Binary files a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_8_10000x790202_0.rtc and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_9_10000x791022_0.rtc b/_Demos/ffmpeg decrypt/res/audible_byte#4-4_9_10000x791022_0.rtc deleted file mode 100644 index 18e558f2..00000000 Binary files a/_Demos/ffmpeg decrypt/res/audible_byte#4-4_9_10000x791022_0.rtc and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/ffmpeg.exe b/_Demos/ffmpeg decrypt/res/ffmpeg.exe deleted file mode 100644 index 57ceafbc..00000000 Binary files a/_Demos/ffmpeg decrypt/res/ffmpeg.exe and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/ffprobe.exe b/_Demos/ffmpeg decrypt/res/ffprobe.exe deleted file mode 100644 index 42721143..00000000 Binary files a/_Demos/ffmpeg decrypt/res/ffprobe.exe and /dev/null differ diff --git a/_Demos/ffmpeg decrypt/res/rcrack.exe b/_Demos/ffmpeg decrypt/res/rcrack.exe deleted file mode 100644 index a67724e5..00000000 Binary files a/_Demos/ffmpeg decrypt/res/rcrack.exe and /dev/null differ diff --git a/_Demos/inAudibleLite/Form1.Designer.cs b/_Demos/inAudibleLite/Form1.Designer.cs deleted file mode 100644 index a0facccc..00000000 --- a/_Demos/inAudibleLite/Form1.Designer.cs +++ /dev/null @@ -1,167 +0,0 @@ -namespace inAudibleLite -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.btnConvert = new System.Windows.Forms.Button(); - this.txtInputFile = new System.Windows.Forms.TextBox(); - this.btnSelectFile = new System.Windows.Forms.Button(); - this.txtOutputFile = new System.Windows.Forms.TextBox(); - this.rtbLog = new System.Windows.Forms.RichTextBox(); - this.progressBar1 = new System.Windows.Forms.ProgressBar(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.decryptKeyLbl = new System.Windows.Forms.Label(); - this.decryptKeyTb = new System.Windows.Forms.TextBox(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - this.SuspendLayout(); - // - // btnConvert - // - this.btnConvert.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.btnConvert.Location = new System.Drawing.Point(12, 306); - this.btnConvert.Name = "btnConvert"; - this.btnConvert.Size = new System.Drawing.Size(600, 23); - this.btnConvert.TabIndex = 7; - this.btnConvert.Text = "Begin Conversion"; - this.btnConvert.UseVisualStyleBackColor = true; - this.btnConvert.Click += new System.EventHandler(this.btnConvert_Click); - // - // txtInputFile - // - this.txtInputFile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txtInputFile.Location = new System.Drawing.Point(47, 14); - this.txtInputFile.Name = "txtInputFile"; - this.txtInputFile.Size = new System.Drawing.Size(565, 20); - this.txtInputFile.TabIndex = 1; - // - // btnSelectFile - // - this.btnSelectFile.Location = new System.Drawing.Point(12, 12); - this.btnSelectFile.Name = "btnSelectFile"; - this.btnSelectFile.Size = new System.Drawing.Size(27, 23); - this.btnSelectFile.TabIndex = 0; - this.btnSelectFile.Text = "..."; - this.btnSelectFile.UseVisualStyleBackColor = true; - this.btnSelectFile.Click += new System.EventHandler(this.btnSelectFile_Click); - // - // txtOutputFile - // - this.txtOutputFile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txtOutputFile.Location = new System.Drawing.Point(47, 40); - this.txtOutputFile.Name = "txtOutputFile"; - this.txtOutputFile.Size = new System.Drawing.Size(565, 20); - this.txtOutputFile.TabIndex = 2; - // - // rtbLog - // - this.rtbLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.rtbLog.Location = new System.Drawing.Point(12, 66); - this.rtbLog.Name = "rtbLog"; - this.rtbLog.Size = new System.Drawing.Size(491, 205); - this.rtbLog.TabIndex = 5; - this.rtbLog.Text = ""; - // - // progressBar1 - // - this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.progressBar1.Location = new System.Drawing.Point(12, 277); - this.progressBar1.Name = "progressBar1"; - this.progressBar1.Size = new System.Drawing.Size(600, 23); - this.progressBar1.TabIndex = 6; - // - // pictureBox1 - // - this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pictureBox1.Location = new System.Drawing.Point(512, 111); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(100, 100); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pictureBox1.TabIndex = 6; - this.pictureBox1.TabStop = false; - // - // decryptKeyLbl - // - this.decryptKeyLbl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.decryptKeyLbl.AutoSize = true; - this.decryptKeyLbl.Location = new System.Drawing.Point(509, 69); - this.decryptKeyLbl.Name = "decryptKeyLbl"; - this.decryptKeyLbl.Size = new System.Drawing.Size(64, 13); - this.decryptKeyLbl.TabIndex = 3; - this.decryptKeyLbl.Text = "Decrypt key"; - // - // decryptKeyTb - // - this.decryptKeyTb.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.decryptKeyTb.Location = new System.Drawing.Point(512, 85); - this.decryptKeyTb.Name = "decryptKeyTb"; - this.decryptKeyTb.Size = new System.Drawing.Size(100, 20); - this.decryptKeyTb.TabIndex = 4; - this.decryptKeyTb.Text = "bd895809"; - // - // Form1 - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(624, 341); - this.Controls.Add(this.decryptKeyTb); - this.Controls.Add(this.decryptKeyLbl); - this.Controls.Add(this.pictureBox1); - this.Controls.Add(this.progressBar1); - this.Controls.Add(this.rtbLog); - this.Controls.Add(this.txtOutputFile); - this.Controls.Add(this.btnSelectFile); - this.Controls.Add(this.txtInputFile); - this.Controls.Add(this.btnConvert); - this.Name = "Form1"; - this.Text = "inAudibleLite 1.0"; - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button btnConvert; - private System.Windows.Forms.TextBox txtInputFile; - private System.Windows.Forms.Button btnSelectFile; - private System.Windows.Forms.TextBox txtOutputFile; - private System.Windows.Forms.RichTextBox rtbLog; - private System.Windows.Forms.ProgressBar progressBar1; - private System.Windows.Forms.PictureBox pictureBox1; - private System.Windows.Forms.Label decryptKeyLbl; - private System.Windows.Forms.TextBox decryptKeyTb; - } -} diff --git a/_Demos/inAudibleLite/Form1.cs b/_Demos/inAudibleLite/Form1.cs deleted file mode 100644 index ca95fd2b..00000000 --- a/_Demos/inAudibleLite/Form1.cs +++ /dev/null @@ -1,121 +0,0 @@ -using System; -using System.Diagnostics; -using System.IO; -using System.Threading.Tasks; -using System.Windows.Forms; -using AaxDecrypter; -using Dinah.Core.IO; -using Dinah.Core.Logging; -using Dinah.Core.Windows.Forms; -using Serilog; - -namespace inAudibleLite -{ - public partial class Form1 : Form - { - public const string APP_NAME = "inAudibleLite 1.0"; - - private ISimpleAaxToM4bConverter converter; - - private Action _conversionCompleteAction { get; } - public Form1(Action conversionCompleteAction) : this() => _conversionCompleteAction = conversionCompleteAction; - - public Form1() - { - InitializeComponent(); - this.btnConvert.Enabled = false; - - initSerilog(); - redirectWriteLine(); - } - - private static void initSerilog() - { - // default. for reference. output example: - // 2019-11-26 08:48:40.224 -05:00 [DBG] Begin Libation - var default_outputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"; - // with class and method info. output example: - // 2019-11-26 08:48:40.224 -05:00 [DBG] (at LibationWinForms.Program.init()) Begin Libation - var code_outputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] (at {Caller}) {Message:lj}{NewLine}{Exception}"; - - - var logPath = Path.Combine(Path.GetTempPath(), "Log.log"); - - Log.Logger = new LoggerConfiguration() - .Enrich.WithCaller() - .MinimumLevel.Debug() - .WriteTo.File(logPath, - rollingInterval: RollingInterval.Month, - outputTemplate: code_outputTemplate) - .CreateLogger(); - - Log.Logger.Debug("Begin Libation"); - - // .Here() captures debug info via System.Runtime.CompilerServices attributes. Warning: expensive - //var withLineNumbers_outputTemplate = "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message}{NewLine}in method {MemberName} at {FilePath}:{LineNumber}{NewLine}{Exception}{NewLine}"; - //Log.Logger.Here().Debug("Begin Libation. Debug with line numbers"); - } - - private void redirectWriteLine() - { - // redirect Console.WriteLine to console, log file, textbox - var multiLogger = new MultiTextWriter( - Console.Out, - new RichTextBoxTextWriter(this.rtbLog), - new SerilogTextWriter()); - Console.SetOut(multiLogger); - } - - string aaxPath; - public async Task getActivationBytes() - { - var checksum = await ffmpeg_decrypt.RCrack.GetChecksum(aaxPath); - var activationBytes = await ffmpeg_decrypt.RCrack.GetActivationBytes(checksum); - return activationBytes; - } - - private async void btnSelectFile_Click(object sender, EventArgs e) - { - var openFileDialog = new OpenFileDialog { Filter = "Audible files (*.aax)|*.aax" }; - if (openFileDialog.ShowDialog() != DialogResult.OK) - return; - - this.rtbLog.Clear(); - - this.txtInputFile.Text = openFileDialog.FileName; - aaxPath = this.txtInputFile.Text; - converter = await AaxToM4bConverter.CreateAsync(this.txtInputFile.Text, this.decryptKeyTb.Text, getActivationBytes); - - pictureBox1.Image = Dinah.Core.Drawing.ImageReader.ToImage(converter.coverBytes); - - this.txtOutputFile.Text = converter.outputFileName; - - this.btnConvert.Enabled = true; - } - - private async void btnConvert_Click(object sender, EventArgs e) - { - this.btnConvert.Enabled = false; - - // only re-process prelim stats if input filename was changed - //also pick up new decrypt key, etc//if (this.txtInputFile.Text != converter?.inputFileName) - converter = await AaxToM4bConverter.CreateAsync(this.txtInputFile.Text, this.decryptKeyTb.Text, getActivationBytes); - - converter.AppName = APP_NAME; - converter.SetOutputFilename(this.txtOutputFile.Text); - converter.DecryptProgressUpdate += (s, progress) => this.progressBar1.UpdateValue(progress); - - // REAL WORK DONE HERE - await Task.Run(() => converter.Run()); - - Console.WriteLine("Output directory: " + converter.outDir); - - // open output dir - Process.Start("file://" + converter.outDir); - - this.btnConvert.Enabled = true; - - _conversionCompleteAction?.Invoke(converter.outputFileName); - } - } -} diff --git a/_Demos/inAudibleLite/Program.cs b/_Demos/inAudibleLite/Program.cs deleted file mode 100644 index d9f2ac8b..00000000 --- a/_Demos/inAudibleLite/Program.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Windows.Forms; - -namespace inAudibleLite -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.SetHighDpiMode(HighDpiMode.SystemAware); - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new Form1()); - } - } -} diff --git a/_Demos/inAudibleLite/inAudibleLite.csproj b/_Demos/inAudibleLite/inAudibleLite.csproj deleted file mode 100644 index e38de6b0..00000000 --- a/_Demos/inAudibleLite/inAudibleLite.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - WinExe - net5.0-windows - true - - - - - - - - - \ No newline at end of file