Skip to content

Commit

Permalink
Create multi.ninemanga from ninemanga.
Browse files Browse the repository at this point in the history
  • Loading branch information
feserr committed Jul 11, 2023
1 parent 1e64bb6 commit 3497df9
Show file tree
Hide file tree
Showing 43 changed files with 161 additions and 3,415 deletions.
File renamed without changes.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
[package]
name = "ninemanga_es"
name = "ninemanga"
version = "0.1.0"
edition = "2021"
publish = false

[lib]
crate-type = ["cdylib"]

[profile.dev]
panic = "abort"

[profile.release]
panic = "abort"
opt-level = "s"
strip = true
lto = true

[dependencies]
aidoku = { git = "https://github.com/Aidoku/aidoku-rs/" }
ninemanga_template = { path = "../../template" }
6 changes: 6 additions & 0 deletions src/rust/multi.ninemanga/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
cargo +nightly build --release
mkdir -p target/wasm32-unknown-unknown/release/Payload
cp res/* target/wasm32-unknown-unknown/release/Payload
cp target/wasm32-unknown-unknown/release/*.wasm target/wasm32-unknown-unknown/release/Payload/main.wasm
cd target/wasm32-unknown-unknown/release ; zip -r package.aix Payload
mv package.aix ../../../package.aix
File renamed without changes
File renamed without changes.
20 changes: 20 additions & 0 deletions src/rust/multi.ninemanga/res/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[
{
"type": "group",
"title": "Settings",
"items": [
{
"type": "select",
"key": "sourceURL",
"title": "Source",
"values": [
"https://ninemanga.com"
],
"titles": [
"Ninemanga"
],
"default": "http://ninemanga.com"
}
]
}
]
50 changes: 50 additions & 0 deletions src/rust/multi.ninemanga/res/source.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"info": {
"id": "multi.ninemanga",
"lang": "multi",
"name": "Ninemanga",
"version": 1,
"url": "https://ninemanga.com",
"nsfw": 1
},
"languages": [
{
"code": "en",
"default": true
},
{
"code": "es"
},
{
"code": "fr"
},
{
"code": "it"
},
{
"code": "de"
},
{
"code": "br"
},
{
"code": "ru"
},
{
"code": "other",
"value": "NULL"
}
],
"languageSelectType": "single",
"listings": [
{
"name": "Latest"
},
{
"name": "Hot"
},
{
"name": "New Titles"
}
]
}
Original file line number Diff line number Diff line change
@@ -1,25 +1,43 @@
use aidoku::{
prelude::format,
std::current_date,
std::Vec,
std::{
current_date,
defaults::defaults_get,
html::Node,
net::{HttpMethod, Request},
String,
String, Vec,
},
MangaStatus,
};
pub fn extract_f32_from_string(chapter_title: String, name : String) -> f32 {

pub fn get_lang_code() -> Option<String> {
let languages_val = defaults_get("languages");
if let Ok(languages) = languages_val.as_array() {
if let Ok(language) = languages.get(0).as_string() {
return Some(language.read());
}
}

None
}

pub fn extract_f32_from_string(chapter_title: String, name: String) -> f32 {
if is_string_numeric(chapter_title.clone()) {
chapter_title.parse::<f32>().unwrap_or(0.0)
} else if chapter_title.contains("vol") || chapter_title.contains("Том") || chapter_title.contains("Vol") {
let title = chapter_title.to_lowercase();
} else if chapter_title.contains("vol")
|| chapter_title.contains("Том")
|| chapter_title.contains("Vol")
{
let title = chapter_title.to_lowercase();
let text: String = if title.contains("vol") {
title
.replace(&title[..title.find("vol.").unwrap() + 7], "")
.replace("ch.", "")
} else {
chapter_title.replace(&chapter_title[..chapter_title.find("Том").unwrap_or(0) + 8], "")
chapter_title.replace(
&chapter_title[..chapter_title.find("Том").unwrap_or(0) + 8],
"",
)
};
text.chars()
.filter(|a| (*a >= '0' && *a <= '9') || *a == ' ' || *a == '.')
Expand All @@ -31,10 +49,11 @@ pub fn extract_f32_from_string(chapter_title: String, name : String) -> f32 {
.find(|a| *a > 0.0)
.unwrap_or(0.0)
} else {
chapter_title.to_ascii_lowercase()
.replace(&name.to_ascii_lowercase(),"")
chapter_title
.to_ascii_lowercase()
.replace(&name.to_ascii_lowercase(), "")
.replace("ch.", "")
.replace("Ch.","")
.replace("Ch.", "")
.split('-')
.last()
.unwrap()
Expand Down Expand Up @@ -71,6 +90,7 @@ pub fn status_from_string(status: String) -> MangaStatus {
_ => MangaStatus::Unknown,
};
}

fn is_string_numeric(str: String) -> bool {
for c in str.chars() {
if !c.is_numeric() {
Expand All @@ -80,11 +100,6 @@ fn is_string_numeric(str: String) -> bool {
true
}

pub fn get_chapter_number(id: String) -> f32 {
let values: Vec<&str> = id.split(' ').collect();
values[values.len() - 1].parse::<f32>().unwrap()
}

pub fn get_date(node: Node, date_format: &str, locale: &str) -> f64 {
let time_en = ["min", "minute", "minutes", "hour", "hours"];
let time_es = ["minuto", "minutos", "hora", "horas"];
Expand Down Expand Up @@ -172,15 +187,3 @@ pub fn get_search_url(
url.push_str("&type=high");
url
}

pub fn stupidencode(string: String) -> String {
let mut result = String::new();
for c in string.chars() {
if c.is_alphanumeric() {
result.push(c);
} else if c == ' ' {
result.push('_');
}
}
result
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,40 @@

#![no_std]
#![feature(pattern)]

use aidoku::{
prelude::*, error::Result, std::String, std::Vec, std::net::Request,
Filter, Listing, Manga, MangaPageResult, Page, Chapter, DeepLink,
error::Result,
prelude::*,
std::net::Request,
std::String,
std::Vec,
Chapter, DeepLink, Filter, Listing, Manga, MangaPageResult, Page,
};

use ninemanga_template::template::NineMangaSource;
mod helper;
mod parser;

use parser::NineMangaSource;

fn get_instance() -> NineMangaSource {
NineMangaSource{
base_url: "https://br.ninemanga.com",
language: "pt-br",
completed_series: "Série Concluído",
let lang_code = helper::get_lang_code();
let base_url;
let language;
match lang_code {
Some(lang) => {
base_url = String::from(format!("https://{}.ninemanga.com", lang));

Check warning on line 24 in src/rust/multi.ninemanga/src/lib.rs

View workflow job for this annotation

GitHub Actions / lint

useless conversion to the same type: `aidoku

std::String`::warning: useless conversion to the same type: `aidoku::std::String` --> src/lib.rs:24:15 | 24 | base_url = String::from(format!("https://{}.ninemanga.com", lang)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("https://{}.ninemanga.com", lang)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion = note: `#[warn(clippy::useless_conversion)]` on by default
language = lang;
}

_ => {
base_url = String::from("https://www.ninemanga.com");
language = String::from("en");
}
}

NineMangaSource {
base_url,
language,
completed_series: "Completed Series",
..Default::default()
}
}
Expand All @@ -22,13 +45,13 @@ fn get_manga_list(filters: Vec<Filter>, page: i32) -> Result<MangaPageResult> {
}

#[get_manga_listing]
fn get_manga_listing(listing: Listing, page: i32) -> Result<MangaPageResult>{
fn get_manga_listing(listing: Listing, page: i32) -> Result<MangaPageResult> {
let url = match listing.name.as_str() {
"Recientes" => format!("{}/list/New-Update/", get_instance().base_url),
"Caliente" => format!("{}/list/Hot-Book/", get_instance().base_url),
"Latest" => format!("{}/list/New-Update/", get_instance().base_url),
"Hot" => format!("{}/list/Hot-Book/", get_instance().base_url),
_ => format!("{}/list/New-Book/", get_instance().base_url),
};
get_instance().parse_manga_listing(url, page)
get_instance().parse_manga_listing(url, page)
}

#[get_manga_details]
Expand All @@ -54,4 +77,4 @@ fn modify_image_request(request: Request) {
#[handle_url]
fn handle_url(url: String) -> Result<DeepLink> {
get_instance().handle_url(url)
}
}
Loading

0 comments on commit 3497df9

Please sign in to comment.