Skip to content

Commit

Permalink
core: Implement System.CommandLine
Browse files Browse the repository at this point in the history
  • Loading branch information
CakesTwix committed Aug 2, 2024
1 parent 91d1c74 commit de398ba
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 37 deletions.
91 changes: 57 additions & 34 deletions Program.cs
Original file line number Diff line number Diff line change
@@ -1,49 +1,72 @@
using EpubSharp;
using System.CommandLine;
using Smakolykytl2Epub.Models;
using Smakolykytl2Epub.Utils;

var client = new HttpClient();
// 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};

int titleId = int.Parse(args[0]);
int chapsterId = int.Parse(args[1]) - 1;
var rootCommand = new RootCommand("A simple ranobe loader for Smakolykytl :)");
rootCommand.AddOption(titleIDOption);
rootCommand.AddOption(chapterIDOption);

var projectTitle = await Ranobe.GetById(titleId);
if (projectTitle != null)
{
// Print
var project = projectTitle.project;
Console.WriteLine(project.title);
Console.WriteLine(project.alternatives);
Console.WriteLine(project.description);
// Run main program
rootCommand.SetHandler(DownloadTitleAsync, titleIDOption, chapterIDOption);

// Basic Info
var writer = new EpubWriter();
writer.AddAuthor(project.author);
writer.SetTitle(project.title);
return rootCommand.InvokeAsync(args).Result;

// Add Cover Image
using (var response = await client.GetAsync(project.image.url))
// Main Program
static async Task DownloadTitleAsync(int titleID, int chapterID){
var client = new HttpClient();
var projectTitle = await Ranobe.GetById(titleID);
if (projectTitle.project != null)
{
var imageBytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
writer.SetCover(imageBytes, ImageFormat.Png);
}
// Print
var project = projectTitle.project;

Console.WriteLine(project.title);
Console.WriteLine(project.alternatives);
Console.WriteLine(project.description);

Books? books = await Ranobe.GetChaptersById(titleId);
Book? book = books.books[chapsterId];
// Basic Info
var writer = new EpubWriter();
writer.AddAuthor(project.author);
writer.SetTitle(project.title);

if (book != null)
{
foreach (var item in book.chapters)
// Add Cover Image
using (var response = await client.GetAsync(project.image.url))
{
Console.WriteLine("Завантаження розділу: {0}", item.title);
var content = (await Ranobe.GetChapterById(item.id))!.chapter.content;
writer.AddChapter(item.title, HtmlConverter.ConvertJsonToHtml(content));
Thread.Sleep(1000);
var imageBytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
writer.SetCover(imageBytes, ImageFormat.Png);
}

// Done
var fileName = string.Format("{0} - {1}.epub", project.title, book.title);
writer.Write(fileName);
Console.WriteLine("Файл збережено як: {0}", fileName);
Books? books = await Ranobe.GetChaptersById(titleID);
Book? book = books.books[chapterID];

if (book != null)
{
foreach (var item in book.chapters)
{
Console.WriteLine("Завантаження розділу: {0}", item.title);
var content = (await Ranobe.GetChapterById(item.id))!.chapter.content;
writer.AddChapter(item.title, HtmlConverter.ConvertJsonToHtml(content));
Thread.Sleep(1000);
}

// Done
var fileName = string.Format("{0} - {1}.epub", project.title, book.title);
writer.Write(fileName);
Console.WriteLine("Файл збережено як: {0}", fileName);
}
} else {
Console.WriteLine("Нічого не знайшли :(");
}
}
}
7 changes: 4 additions & 3 deletions Smakolykytl2Epub.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="AngleSharp" Version="1.1.2"/>
<PackageReference Include="EpubSharp.dll" Version="1.1.5"/>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3"/>
<PackageReference Include="AngleSharp" Version="1.1.2" />
<PackageReference Include="EpubSharp.dll" Version="1.1.5" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
</ItemGroup>

</Project>

0 comments on commit de398ba

Please sign in to comment.