core: Cleanup Code

This commit is contained in:
CakesTwix 2023-08-13 14:44:06 +03:00
parent 4be374c6ec
commit 146eb8dfdb
Signed by: CakesTwix
GPG key ID: 7B11051D5CE19825
9 changed files with 84 additions and 47 deletions

View file

@ -24,4 +24,3 @@ public class Books
{
public List<Book> books { get; set; }
}

View file

@ -4,4 +4,3 @@ public class Chapters
{
public Chapter chapter { get; set; }
}

View file

@ -42,4 +42,3 @@ public class Tag
public int id { get; set; }
public string title { get; set; }
}

View file

@ -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);
}

View file

@ -1,14 +1,11 @@
<p align="center">
<img src="assets/logo.png" width="256px"/><br>
</p>
# Smakolykytl2Epub [![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)](https://opensource.org/licenses/)
<p align="center">
<img src="https://img.shields.io/github/languages/code-size/CakesTwix/cloudstream-extensions-uk?style=for-the-badge"/>
<img src="https://img.shields.io/github/languages/code-size/CakesTwix/Smakolykytl2Epub?style=for-the-badge"/>
<img src="https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black"/>
<img src="https://img.shields.io/badge/Rider-000000.svg?style=for-the-badge&logo=Rider&logoColor=white&color=black&labelColor=crimson"/>
<img src="https://img.shields.io/badge/c%23-%23239120.svg?style=for-the-badge&logo=c-sharp&logoColor=white"/>
@ -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/)

58
README.md.backup Normal file
View file

@ -0,0 +1,58 @@
<p align="center">
<img src="assets/logo.png" width="256px"/><br>
</p>
# Smakolykytl2Epub [![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)](https://opensource.org/licenses/)
<p align="center">
<img src="https://img.shields.io/github/languages/code-size/CakesTwix/cloudstream-extensions-uk?style=for-the-badge"/>
<img src="https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black"/>
<img src="https://img.shields.io/badge/Rider-000000.svg?style=for-the-badge&logo=Rider&logoColor=white&color=black&labelColor=crimson"/>
<img src="https://img.shields.io/badge/c%23-%23239120.svg?style=for-the-badge&logo=c-sharp&logoColor=white"/>
<img src="https://img.shields.io/badge/.NET-5C2D91?style=for-the-badge&logo=.net&logoColor=white"/><br><br>
<a href="https://www.buymeacoffee.com/cakestwix"><img width="150" src="https://img.buymeacoffee.com/button-api/?text=Buy me a tea&emoji=🍵&slug=cakestwix&button_colour=FF5F5F&font_colour=ffffff&font_family=Poppins&outline_colour=000000&coffee_colour=FFDD00" /></a>
</p>
Консольний додаток, що дає змогу конвертувати книгу зі 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/)

View file

@ -8,9 +8,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AngleSharp" Version="1.0.4" />
<PackageReference Include="EpubSharp.dll" Version="1.1.5" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="AngleSharp" Version="1.0.4"/>
<PackageReference Include="EpubSharp.dll" Version="1.1.5"/>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3"/>
</ItemGroup>
</Project>

View file

@ -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<TextJson>(token.ToString());
var text = JsonConvert.DeserializeObject<TextJson>(token.ToString());
foreach (var str in text?.content!)
{
if (str.type == "hardBreak") html += "<br>";
html += str.text;
}
html += "<br>";

View file

@ -1,18 +1,17 @@
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<Projects?> 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<Projects>(content);
@ -20,7 +19,7 @@ public class Ranobe
public static async Task<Books?> 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<Books>(content);
@ -28,7 +27,7 @@ public class Ranobe
public static async Task<Chapters?> 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<Chapters>(content);