From 3a97b93b6d701338945656b0d11fc4c6a79070e7 Mon Sep 17 00:00:00 2001 From: tarsin Date: Fri, 16 Jun 2023 16:48:24 +0800 Subject: [PATCH] Parse gid and token --- app/src/main/rust/src/lib.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/rust/src/lib.rs b/app/src/main/rust/src/lib.rs index 5632c273f..f9723cc66 100644 --- a/app/src/main/rust/src/lib.rs +++ b/app/src/main/rust/src/lib.rs @@ -22,7 +22,7 @@ use jnix::jni::sys::{jint, jintArray, jobject, jobjectArray, JavaVM, JNI_VERSION use jnix::jni::JNIEnv; use jnix::{IntoJava, JnixEnv}; use jnix_macros::IntoJava; -use log::{error, LevelFilter}; +use log::LevelFilter; use std::borrow::Cow; use std::ffi::c_void; use tl::{Node, NodeHandle, Parser, VDom}; @@ -91,6 +91,16 @@ fn parse_rating(str: &str) -> f32 { } } +fn parse_token_and_gid(str: &str) -> (i64, String) { + let reg = regex!( + "https?://(?:exhentai.org|e-hentai.org|lofi.e-hentai.org)/(?:g|mpv)/(\\d+)/([0-9a-f]{10})" + ); + let grp = reg.captures(str).unwrap(); + let token = &grp[2]; + let gid = grp[1].parse().unwrap(); + (gid, token.to_string()) +} + #[derive(Default, IntoJava)] #[allow(non_snake_case)] #[jnix(package = "com.hippo.ehviewer.client.data")] @@ -211,7 +221,7 @@ pub fn parseGalleryInfo(env: JNIEnv, _class: JClass, input: JString) -> jobject Some(attr) => attr, }, }; - error!("{}", gdlink); + let (gid, token) = parse_token_and_gid(gdlink); let thumb = match dom.query_selector("[data-src]")?.next() { None => match dom.query_selector("[src]")?.next() { None => "a", @@ -230,8 +240,8 @@ pub fn parseGalleryInfo(env: JNIEnv, _class: JClass, input: JString) -> jobject let ir = dom.get_first_element_by_class_name("ir")?; let rating = ir.as_tag()?.attributes().get("style")??.try_as_utf8_str()?; Some(BaseGalleryInfo { - gid: 0, - token: "".to_string(), + gid, + token, title: decode_html_entities(title.trim()).to_string(), titleJpn: None, thumbKey: thumb