This commit is contained in:
Chenx221 2024-06-19 12:07:56 +08:00
parent 6e32c2286c
commit a189e42524

View File

@ -11,9 +11,37 @@ namespace ConsoleApp1
static void Main(string[] args) static void Main(string[] args)
{ {
// 设置控制台的输出编码为UTF-8 // 设置控制台的输出编码为UTF-8
System.Text.Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.OutputEncoding = Encoding.GetEncoding(936); Console.OutputEncoding = Encoding.GetEncoding(936);
// 确认运行模式
Console.Write("请输入运行模式0:append,1:init");
string? runMode = Console.ReadLine();
// 确保指定模式合法
if (runMode != "0" && runMode != "1")
{
Console.WriteLine("运行模式不合法。");
PauseBeforeExit(0);
return;
}
string listFilePath = string.Empty;
if (runMode == "1") // init模式
{
// 获取list.txt文件路径
Console.Write("请输入list.txt文件的完整路径");
listFilePath = Console.ReadLine() ?? "";
// 确保list.txt文件存在
if (string.IsNullOrWhiteSpace(listFilePath) || !File.Exists(listFilePath))
{
Console.WriteLine("list.txt 文件不存在。");
PauseBeforeExit(0);
return;
}
}
// 获取上级文件夹路径 // 获取上级文件夹路径
Console.Write("请输入漫画所在的根路径:"); Console.Write("请输入漫画所在的根路径:");
string? parentFolder = Console.ReadLine(); string? parentFolder = Console.ReadLine();
@ -37,20 +65,18 @@ namespace ConsoleApp1
PauseBeforeExit(0); PauseBeforeExit(0);
return; return;
} }
// 读取txt文件中的文件夹顺序
string listFilePath = @"G:\list.txt";
if (!File.Exists(listFilePath))
{
Console.WriteLine("list.txt 文件不存在。");
PauseBeforeExit(0);
return;
}
List<string> folderOrder = [.. File.ReadAllLines(listFilePath)];
// 获取所有漫画文件夹并按顺序排序 List<string> comicFolders;
List<string> comicFolders = [.. Directory.GetDirectories(parentFolder).OrderBy(folder => folderOrder.IndexOf(Path.GetFileName(folder)))]; if (runMode == "1") // init模式
{
List<string> folderOrder = new(File.ReadAllLines(listFilePath));
comicFolders = [.. Directory.GetDirectories(parentFolder).OrderBy(folder => folderOrder.IndexOf(Path.GetFileName(folder)))];
}
else // append模式或其他
{
// 获取所有漫画文件夹 // 获取所有漫画文件夹
//string[] comicFolders = Directory.GetDirectories(parentFolder); comicFolders = new List<string>(Directory.GetDirectories(parentFolder));
}
// 设置初始日期 // 设置初始日期
DateTime currentDate = new(2020, 1, 1, 0, 0, 0); DateTime currentDate = new(2020, 1, 1, 0, 0, 0);
@ -109,11 +135,8 @@ namespace ConsoleApp1
{ {
archive.CreateEntryFromFile(imageFile, Path.GetFileName(imageFile)); archive.CreateEntryFromFile(imageFile, Path.GetFileName(imageFile));
} }
string comicInfoXmlContent = runMode == "1" ? GenerateComicInfoXml2(comicFolder, currentDate) : GenerateComicInfoXml(comicFolder);
// 创建 ComicInfo.xml 并添加到 CBZ 文件
//string comicInfoXmlContent = GenerateComicInfoXml(comicFolder);
// init needed
string comicInfoXmlContent = GenerateComicInfoXml2(comicFolder, currentDate);
ZipArchiveEntry comicInfoEntry = archive.CreateEntry("ComicInfo.xml"); ZipArchiveEntry comicInfoEntry = archive.CreateEntry("ComicInfo.xml");
using StreamWriter writer = new(comicInfoEntry.Open()); using StreamWriter writer = new(comicInfoEntry.Open());
writer.Write(comicInfoXmlContent); writer.Write(comicInfoXmlContent);
@ -135,7 +158,7 @@ namespace ConsoleApp1
// 生成 ComicInfo.xml 内容 // 生成 ComicInfo.xml 内容
private static string GenerateComicInfoXml(string comicFolder) private static string GenerateComicInfoXml(string comicFolder)
{ {
string title = SecurityElement.Escape(comicFolder); string title = SecurityElement.Escape(Path.GetFileName(comicFolder));
int year = DateTime.Now.Year; int year = DateTime.Now.Year;
int month = DateTime.Now.Month; int month = DateTime.Now.Month;
int day = DateTime.Now.Day; int day = DateTime.Now.Day;
@ -151,7 +174,7 @@ namespace ConsoleApp1
// 生成 ComicInfo.xml 内容 // 生成 ComicInfo.xml 内容
private static string GenerateComicInfoXml2(string comicFolder, DateTime date) private static string GenerateComicInfoXml2(string comicFolder, DateTime date)
{ {
string title = SecurityElement.Escape(comicFolder); string title = SecurityElement.Escape(Path.GetFileName(comicFolder));
int year = date.Year; int year = date.Year;
int month = date.Month; int month = date.Month;
int day = date.Day; int day = date.Day;