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 16, 2023
1 parent 1e64bb6 commit 5988e6b
Show file tree
Hide file tree
Showing 44 changed files with 323 additions and 3,588 deletions.
File renamed without changes.
91 changes: 91 additions & 0 deletions src/rust/multi.ninemanga/Cargo.lock

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_br"
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
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,48 @@
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> {
if let Ok(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 get_manga_id(url: String) -> String {
let manga_id = url.split('/').nth_back(0).unwrap_or_default();
String::from(manga_id)
}

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 +54,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 +95,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 +105,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 @@ -114,10 +134,12 @@ pub fn get_date(node: Node, date_format: &str, locale: &str) -> f64 {

pub fn get_chapter_pages(base_url: String, id: String) -> Vec<String> {
let mut pages: Vec<String> = Vec::new();
let html = Request::new(&id, HttpMethod::Get).html();
for page in html.select("select#page").first().select("option").array() {
let page_node = page.as_node();
pages.push(format!("{}{}", base_url, page_node.attr("value").read()));
if let Ok(html) = Request::new(&id, HttpMethod::Get).html() {
for page in html.select("select#page").first().select("option").array() {
if let Ok(page_node) = page.as_node() {
pages.push(format!("{}{}", base_url, page_node.attr("value").read()));
}
}
}
pages
}
Expand Down Expand Up @@ -172,15 +194,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,35 @@

#![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 = format!("https://{}.ninemanga.com", lang);
language = lang;
}

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

NineMangaSource {
base_url,
language,
..Default::default()
}
}
Expand All @@ -22,13 +40,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 @@ -42,8 +60,8 @@ fn get_chapter_list(id: String) -> Result<Vec<Chapter>> {
}

#[get_page_list]
fn get_page_list(id: String) -> Result<Vec<Page>> {
get_instance().parse_page_list(id)
fn get_page_list(id: String, chapter_id: String) -> Result<Vec<Page>> {
get_instance().parse_page_list(id, chapter_id)
}

#[modify_image_request]
Expand All @@ -54,4 +72,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 5988e6b

Please sign in to comment.