This commit is contained in:
MrIkso 2024-08-02 00:27:02 +03:00
parent 146eb8dfdb
commit 4d5cfb36c4
2 changed files with 31 additions and 12 deletions

View file

@ -1,10 +1,13 @@
using EpubSharp; using EpubSharp;
using Smakolykytl2Epub.Models;
using Smakolykytl2Epub.Utils; using Smakolykytl2Epub.Utils;
var client = new HttpClient(); var client = new HttpClient();
int titleId = int.Parse(args[0]);
int chapsterId = int.Parse(args[1]) - 1;
var projectTitle = await Ranobe.GetById(int.Parse(args[0])); var projectTitle = await Ranobe.GetById(titleId);
if (projectTitle != null) if (projectTitle != null)
{ {
// Print // Print
@ -25,16 +28,22 @@ if (projectTitle != null)
writer.SetCover(imageBytes, ImageFormat.Png); writer.SetCover(imageBytes, ImageFormat.Png);
} }
var books = (await Ranobe.GetChaptersById(int.Parse(args[0])))?.books[int.Parse(args[1]) - 1]; Books? books = await Ranobe.GetChaptersById(titleId);
if (books != null) Book? book = books.books[chapsterId];
foreach (var item in books.chapters)
if (book != null)
{
foreach (var item in book.chapters)
{ {
Console.WriteLine(item.title); Console.WriteLine("Завантаження розділу: {0}", item.title);
var content = (await Ranobe.GetChapterById(item.id))!.chapter.content; var content = (await Ranobe.GetChapterById(item.id))!.chapter.content;
writer.AddChapter(item.title, HtmlConverter.ConvertJsonToHtml(content)); writer.AddChapter(item.title, HtmlConverter.ConvertJsonToHtml(content));
Thread.Sleep(1000); Thread.Sleep(1000);
} }
// Done // Done
writer.Write("new.epub"); var fileName = string.Format("{0} - {1}.epub", project.title, book.title);
writer.Write(fileName);
Console.WriteLine("Файл збережено як: {0}", fileName);
}
} }

View file

@ -18,7 +18,7 @@ public class Mark
public class TextJson public class TextJson
{ {
public string type { get; set; } public string type { get; set; }
public List<Content> content { get; set; } public List<Content?> content { get; set; }
} }
public class HtmlConverter public class HtmlConverter
@ -40,12 +40,22 @@ public class HtmlConverter
else if (token is JObject) else if (token is JObject)
{ {
var text = JsonConvert.DeserializeObject<TextJson>(token.ToString()); var text = JsonConvert.DeserializeObject<TextJson>(token.ToString());
foreach (var str in text?.content!) for (int i = 0; i < text?.content?.Count; i++)
{ {
if (str.type == "hardBreak") html += "<br>"; Content str = text.content[i];
html += str.text; if (str != null)
{
html += str.text;
}
if (str.type == "hardBreak")
{
html += "<br>";
}
if (str.type == "paragraph")
{
html += "<p>";
}
} }
html += "<br>"; html += "<br>";
} }
else else