core: Implement System.CommandLine

This commit is contained in:
CakesTwix 2024-08-02 10:29:51 +03:00
parent 91d1c74d78
commit de398badab
Signed by: CakesTwix
GPG key ID: 7B11051D5CE19825
2 changed files with 61 additions and 37 deletions

View file

@ -1,17 +1,37 @@
using EpubSharp; using EpubSharp;
using System.CommandLine;
using Smakolykytl2Epub.Models; using Smakolykytl2Epub.Models;
using Smakolykytl2Epub.Utils; using Smakolykytl2Epub.Utils;
// CLI
var titleIDOption = new Option<int>(
aliases: ["--title", "-t"],
description: "Title ID, can be taken from the link"
) {IsRequired = true};
var chapterIDOption = new Option<int>(
aliases: ["--chapter", "-c"],
description: "Chapter ID, can be taken from the link"
) {IsRequired = true};
var rootCommand = new RootCommand("A simple ranobe loader for Smakolykytl :)");
rootCommand.AddOption(titleIDOption);
rootCommand.AddOption(chapterIDOption);
// Run main program
rootCommand.SetHandler(DownloadTitleAsync, titleIDOption, chapterIDOption);
return rootCommand.InvokeAsync(args).Result;
// Main Program
static async Task DownloadTitleAsync(int titleID, int chapterID){
var client = new HttpClient(); var client = new HttpClient();
var projectTitle = await Ranobe.GetById(titleID);
int titleId = int.Parse(args[0]); if (projectTitle.project != null)
int chapsterId = int.Parse(args[1]) - 1;
var projectTitle = await Ranobe.GetById(titleId);
if (projectTitle != null)
{ {
// Print // Print
var project = projectTitle.project; var project = projectTitle.project;
Console.WriteLine(project.title); Console.WriteLine(project.title);
Console.WriteLine(project.alternatives); Console.WriteLine(project.alternatives);
Console.WriteLine(project.description); Console.WriteLine(project.description);
@ -28,8 +48,8 @@ if (projectTitle != null)
writer.SetCover(imageBytes, ImageFormat.Png); writer.SetCover(imageBytes, ImageFormat.Png);
} }
Books? books = await Ranobe.GetChaptersById(titleId); Books? books = await Ranobe.GetChaptersById(titleID);
Book? book = books.books[chapsterId]; Book? book = books.books[chapterID];
if (book != null) if (book != null)
{ {
@ -46,4 +66,7 @@ if (projectTitle != null)
writer.Write(fileName); writer.Write(fileName);
Console.WriteLine("Файл збережено як: {0}", fileName); Console.WriteLine("Файл збережено як: {0}", fileName);
} }
} else {
Console.WriteLine("Нічого не знайшли :(");
}
} }

View file

@ -11,6 +11,7 @@
<PackageReference Include="AngleSharp" Version="1.1.2" /> <PackageReference Include="AngleSharp" Version="1.1.2" />
<PackageReference Include="EpubSharp.dll" Version="1.1.5" /> <PackageReference Include="EpubSharp.dll" Version="1.1.5" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
</ItemGroup> </ItemGroup>
</Project> </Project>