From 146eb8dfdbd613bd62c0f9061b4fd773bde26b6d Mon Sep 17 00:00:00 2001 From: CakesTwix Date: Sun, 13 Aug 2023 14:44:06 +0300 Subject: [PATCH] core: Cleanup Code --- Models/Book.cs | 3 +-- Models/Chapters.cs | 3 +-- Models/Projects.cs | 3 +-- Program.cs | 17 +++++------- README.md | 10 ++----- README.md.backup | 58 +++++++++++++++++++++++++++++++++++++++++ Smakolykytl2Epub.csproj | 6 ++--- Utils/Json2HTML.cs | 16 +++--------- Utils/Ranobe.cs | 15 +++++------ 9 files changed, 84 insertions(+), 47 deletions(-) create mode 100644 README.md.backup diff --git a/Models/Book.cs b/Models/Book.cs index 8bc9e88..6518bd8 100644 --- a/Models/Book.cs +++ b/Models/Book.cs @@ -23,5 +23,4 @@ public class Chapter public class Books { public List books { get; set; } -} - +} \ No newline at end of file diff --git a/Models/Chapters.cs b/Models/Chapters.cs index 2943611..478480b 100644 --- a/Models/Chapters.cs +++ b/Models/Chapters.cs @@ -3,5 +3,4 @@ namespace Smakolykytl2Epub.Models; public class Chapters { public Chapter chapter { get; set; } -} - +} \ No newline at end of file diff --git a/Models/Projects.cs b/Models/Projects.cs index c8f9ebc..347f257 100644 --- a/Models/Projects.cs +++ b/Models/Projects.cs @@ -41,5 +41,4 @@ public class Tag { public int id { get; set; } public string title { get; set; } -} - +} \ No newline at end of file diff --git a/Program.cs b/Program.cs index ae04afd..2ae668d 100644 --- a/Program.cs +++ b/Program.cs @@ -1,39 +1,36 @@ -using System.Text; -using EpubSharp; -using Newtonsoft.Json.Linq; -using Smakolykytl2Epub.Models; +using EpubSharp; using Smakolykytl2Epub.Utils; var client = new HttpClient(); - var projectTitle = await Ranobe.GetById(int.Parse(args[0])); if (projectTitle != null) { // Print - Project project = projectTitle.project; + var project = projectTitle.project; Console.WriteLine(project.title); Console.WriteLine(project.alternatives); Console.WriteLine(project.description); // Basic Info - EpubWriter writer = new EpubWriter(); + var writer = new EpubWriter(); writer.AddAuthor(project.author); writer.SetTitle(project.title); - + // Add Cover Image using (var response = await client.GetAsync(project.image.url)) { - byte[] imageBytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false); + var imageBytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false); writer.SetCover(imageBytes, ImageFormat.Png); } + var books = (await Ranobe.GetChaptersById(int.Parse(args[0])))?.books[int.Parse(args[1]) - 1]; if (books != null) foreach (var item in books.chapters) { Console.WriteLine(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)); Thread.Sleep(1000); } diff --git a/README.md b/README.md index 3d0b72d..29e5cba 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,11 @@ - -


- # Smakolykytl2Epub [![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)](https://opensource.org/licenses/)

- + @@ -28,6 +25,7 @@ # Завантажити перший том ./Smakolykytl2Epub 2 1 ``` + ``` ┌─[cakestwix@arch] - [...] - [Sun Aug 13, 14:11] └─[$]> ./Smakolykytl2Epub 2 1 @@ -44,14 +42,10 @@ Solo Leveling / Only I Level Up / 나 혼자만 레벨업НАЙСЛАБШИЙ М ... ``` - - - ## Authors - [@CakesTwix](https://www.github.com/CakesTwix) - ## License - [GPL-v3](https://choosealicense.com/licenses/gpl-3.0/) diff --git a/README.md.backup b/README.md.backup new file mode 100644 index 0000000..3d0b72d --- /dev/null +++ b/README.md.backup @@ -0,0 +1,58 @@ + + +

+
+

+ + +# Smakolykytl2Epub [![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)](https://opensource.org/licenses/) + +

+ + + + +

+ +

+ +Консольний додаток, що дає змогу конвертувати книгу зі smakolykytl.site в Epub + +## Usage/Examples + +```bash +# ./Smakolykytl2Epub Айді_тайтла Номер_тому +# 2 +# https://smakolykytl.site/titles/2 +# 1 +# Завантажити перший том +./Smakolykytl2Epub 2 1 +``` +``` +┌─[cakestwix@arch] - [...] - [Sun Aug 13, 14:11] +└─[$]> ./Smakolykytl2Epub 2 1 +Лиш я прокачаю свій рівень +Solo Leveling / Only I Level Up / 나 혼자만 레벨업НАЙСЛАБШИЙ МИСЛИВЕЦЬ У СВІТІ! +У мисливця Е-рангу Сон Джин-У немає ні грошей, ні таланту, ні перспектив, про які можна було б говорити. Й вочевидь, йому також не щастить! Коли одного доленосного дня він потрапляє в приховане подвійне підземелля, його покидає група та залишає помирати від рук найжахливіших монстрів, яких він коли-небудь зустрічав. +Але перед останнім, смертельним ударом… + +Дзінь! + +[Вітаю, ви стали Гравцем.] +Пролог +Мисливець E‑рангу +... +``` + + + + +## Authors + +- [@CakesTwix](https://www.github.com/CakesTwix) + + +## License + +- [GPL-v3](https://choosealicense.com/licenses/gpl-3.0/) + diff --git a/Smakolykytl2Epub.csproj b/Smakolykytl2Epub.csproj index 0430e72..deebb1e 100644 --- a/Smakolykytl2Epub.csproj +++ b/Smakolykytl2Epub.csproj @@ -8,9 +8,9 @@ - - - + + + diff --git a/Utils/Json2HTML.cs b/Utils/Json2HTML.cs index 37c10fb..21261b4 100644 --- a/Utils/Json2HTML.cs +++ b/Utils/Json2HTML.cs @@ -1,6 +1,3 @@ -using System.Text; -using System.Text.RegularExpressions; -using AngleSharp.Common; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -28,30 +25,25 @@ public class HtmlConverter { public static string ConvertJsonToHtml(string json) { - JToken token = JToken.Parse(json); + var token = JToken.Parse(json); return ConvertTokenToHtml(token); } private static string ConvertTokenToHtml(JToken token) { - string html = ""; + var html = ""; if (token is JArray) { - foreach (JToken childToken in token.Children()) - { - html += ConvertTokenToHtml(childToken); - - } + foreach (var childToken in token.Children()) html += ConvertTokenToHtml(childToken); } else if (token is JObject) { - TextJson? text = JsonConvert.DeserializeObject(token.ToString()); + var text = JsonConvert.DeserializeObject(token.ToString()); foreach (var str in text?.content!) { if (str.type == "hardBreak") html += "
"; html += str.text; - } html += "
"; diff --git a/Utils/Ranobe.cs b/Utils/Ranobe.cs index 16d9d73..fdc80f4 100644 --- a/Utils/Ranobe.cs +++ b/Utils/Ranobe.cs @@ -1,34 +1,33 @@ -using Smakolykytl2Epub.Models; using Newtonsoft.Json; -using JsonSerializer = System.Text.Json.JsonSerializer; +using Smakolykytl2Epub.Models; namespace Smakolykytl2Epub.Utils; public class Ranobe { - private static readonly HttpClient Client = new HttpClient(); private const string ApiUrl = "https://api.smakolykytl.site/api/user/"; private const string SiteUrl = "https://smakolykytl.site/"; + private static readonly HttpClient Client = new(); public static async Task GetById(int id) { - var response = await Client.GetAsync(ApiUrl + "projects/" + id.ToString()); + var response = await Client.GetAsync(ApiUrl + "projects/" + id); var content = await response.Content.ReadAsStringAsync(); // Console.WriteLine(content); return JsonConvert.DeserializeObject(content); } - + public static async Task GetChaptersById(int id) { - var response = await Client.GetAsync(ApiUrl + "projects/" + id.ToString() + "/books"); + var response = await Client.GetAsync(ApiUrl + "projects/" + id + "/books"); var content = await response.Content.ReadAsStringAsync(); // Console.WriteLine(content); return JsonConvert.DeserializeObject(content); } - + public static async Task GetChapterById(int id) { - var response = await Client.GetAsync(ApiUrl + "chapters/" + id.ToString()); + var response = await Client.GetAsync(ApiUrl + "chapters/" + id); var content = await response.Content.ReadAsStringAsync(); // Console.WriteLine(content); return JsonConvert.DeserializeObject(content);