From 078d751446360ceca6a8e59783f634e841600f1b Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Sun, 3 Oct 2021 10:00:35 -0700 Subject: [PATCH] m --- IPASorter/FileClass.cs | 3 ++ IPASorter/IPASorter.csproj | 6 +++ IPASorter/Program.cs | 84 ++++++++++++-------------------------- README.md | 3 ++ 4 files changed, 39 insertions(+), 57 deletions(-) create mode 100644 README.md diff --git a/IPASorter/FileClass.cs b/IPASorter/FileClass.cs index fa6fb3f..ac4228b 100644 --- a/IPASorter/FileClass.cs +++ b/IPASorter/FileClass.cs @@ -9,5 +9,8 @@ namespace IPASorter public string path { get; set; } public string md5sum { get; set; } public string fileName { get; set; } + public string CFBundleIdentifier { get; set; } + public string CFBundleVersion { get; set; } + public string MinimumOSVersion { get; set; } } } diff --git a/IPASorter/IPASorter.csproj b/IPASorter/IPASorter.csproj index c73e0d1..d7bd561 100644 --- a/IPASorter/IPASorter.csproj +++ b/IPASorter/IPASorter.csproj @@ -5,4 +5,10 @@ netcoreapp3.1 + + + ..\..\..\..\Documents\GitHub\PlistCS\PlistCS\PlistCS\bin\Release\PlistCS.dll + + + diff --git a/IPASorter/Program.cs b/IPASorter/Program.cs index 71a08de..289f549 100644 --- a/IPASorter/Program.cs +++ b/IPASorter/Program.cs @@ -1,6 +1,9 @@ -using System; +using PlistCS; + +using System; using System.Collections.Generic; using System.IO; +using System.IO.Compression; using System.Linq; using System.Security.Cryptography; using System.Text; @@ -16,19 +19,20 @@ namespace IPASorter static void Main(string[] args) { Console.WriteLine("IPASorter by KawaiiZenbo"); + if(Directory.Exists(".\\sortertemp")) + { + Directory.Delete(".\\sortertemp", true); + } + // parse filepath if given string argsFilePath = args.Length != 0 ? args[0] : "./"; if (!argsFilePath.EndsWith("/") || !argsFilePath.EndsWith("\\")) argsFilePath += "/"; - // create temp dir - if (Directory.Exists("%appdata%/IPASorterTemp/")) Directory.CreateDirectory("%appdata%/IPASorterTemp/"); - // run steps FileScanner(argsFilePath); - MD5Eliminator(); + // MD5Eliminator(); obsolete + InfoPlistRenamer(); - //done - if (Directory.Exists("%appdata%/IPASorterTemp/")) Directory.Delete("%appdata%/IPASorterTemp/"); Console.WriteLine("complete :)"); } @@ -48,48 +52,34 @@ namespace IPASorter } // step 2 - static void MD5Eliminator() - { - foreach (IPAFile i in files) - { - Console.WriteLine($"checking against {i.path} ({i.md5sum})"); - foreach (IPAFile j in files) - { - //Console.WriteLine($"checking {j.path} ({j.md5sum})"); - if(i.md5sum == j.md5sum && i.path != j.path) - { - Console.WriteLine("sound the alarms! these are the same file!!!!!!"); - files.Remove(j); - File.Delete(j.path); - NewFilesEnumerater(); - return; - } - } - } - } - - // step 3 - static void InfoPlistEliminator() - { - - } - - // step 4 static void InfoPlistRenamer() { + Directory.CreateDirectory(".\\sortertemp"); foreach (IPAFile i in files) { - File.Move(i.path, i.path.Replace(i.fileName, "")); + // extract ipa + Directory.CreateDirectory($".\\sortertemp\\{i.fileName}"); + ZipFile.ExtractToDirectory(i.path, $".\\sortertemp\\{i.fileName}"); + string plistpath = $".\\sortertemp\\{i.fileName}\\Payload\\{Directory.GetDirectories($".\\sortertemp\\{i.fileName}\\Payload\\")[0].Split('\\')[Directory.GetDirectories($".\\sortertemp\\{i.fileName}\\Payload\\")[0].Split('\\').Length - 1]}\\Info.plist"; + Dictionary plist = (Dictionary)Plist.readPlist(plistpath); + Directory.Delete($".\\sortertemp\\{i.fileName}", true); + i.CFBundleIdentifier = plist["CFBundleIdentifier"].ToString(); + i.CFBundleVersion = plist["CFBundleVersion"].ToString(); + i.MinimumOSVersion = plist["MinimumOSVersion"].ToString(); + File.Move(i.path, i.path.Replace(i.fileName, $"{plist["CFBundleIdentifier"]}-{plist["CFBundleVersion"]}-(iOS_{plist["MinimumOSVersion"]}).ipa")); + i.path = i.path.Replace(i.fileName, $"{plist["CFBundleIdentifier"]}-{plist["CFBundleVersion"]}-(iOS_{plist["MinimumOSVersion"]}).ipa"); + i.fileName = $"{plist["CFBundleIdentifier"]}-{plist["CFBundleVersion"]}-(iOS_{plist["MinimumOSVersion"]}).ipa"; } + Directory.Delete(".\\sortertemp", true); } - // step 5??? + // step 3??? static void Sort() { } - // misc functions + // keeping this around just in case static string CalculateMD5(string fileName) { using (var md5 = MD5.Create()) @@ -101,26 +91,6 @@ namespace IPASorter } } } - - static void NewFilesEnumerater() - { - foreach (IPAFile i in files) - { - Console.WriteLine($"checking against {i.path} ({i.md5sum})"); - foreach (IPAFile j in files) - { - //Console.WriteLine($"checking {j.path} ({j.md5sum})"); - if (i.md5sum == j.md5sum && i.path != j.path) - { - Console.WriteLine("sound the alarms! these are the same file!!!!!!"); - files.Remove(j); - File.Delete(j.path); - NewFilesEnumerater(); - break; - } - } - } - } } } diff --git a/README.md b/README.md new file mode 100644 index 0000000..6c28b90 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +### IPASorter + +plist parsing from https://github.com/animetrics/PlistCS