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