Properly show hentai ID
This commit is contained in:
		
							parent
							
								
									e03d746ce6
								
							
						
					
					
						commit
						56898120d9
					
				| 
						 | 
					@ -206,7 +206,7 @@ checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "hentaihavenrs"
 | 
					name = "hentaihavenrs"
 | 
				
			||||||
version = "0.1.0"
 | 
					version = "0.1.1"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "clap",
 | 
					 "clap",
 | 
				
			||||||
 "quick-xml",
 | 
					 "quick-xml",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
[package]
 | 
					[package]
 | 
				
			||||||
name = "hentaihavenrs"
 | 
					name = "hentaihavenrs"
 | 
				
			||||||
version = "0.1.0"
 | 
					version = "0.1.1"
 | 
				
			||||||
authors = ["blank X <theblankx@protonmail.com>"]
 | 
					authors = ["blank X <theblankx@protonmail.com>"]
 | 
				
			||||||
edition = "2018"
 | 
					edition = "2018"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,7 +37,7 @@ pub async fn view(arg_m: &ArgMatches<'_>) {
 | 
				
			||||||
                        if one_done {
 | 
					                        if one_done {
 | 
				
			||||||
                            println!("");
 | 
					                            println!("");
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        println!("ID: {}\n{}", id, &hentai);
 | 
					                        println!("{}", &hentai);
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    None => {
 | 
					                    None => {
 | 
				
			||||||
                        if one_done {
 | 
					                        if one_done {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@ impl fmt::Display for SearchResult {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Debug)]
 | 
					#[derive(Debug)]
 | 
				
			||||||
pub struct HentaiInfo {
 | 
					pub struct HentaiInfo {
 | 
				
			||||||
 | 
					    pub id: String,
 | 
				
			||||||
    pub slug: String,
 | 
					    pub slug: String,
 | 
				
			||||||
    pub title: String,
 | 
					    pub title: String,
 | 
				
			||||||
    pub views: usize,
 | 
					    pub views: usize,
 | 
				
			||||||
| 
						 | 
					@ -34,7 +35,8 @@ pub struct HentaiInfo {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl fmt::Display for HentaiInfo {
 | 
					impl fmt::Display for HentaiInfo {
 | 
				
			||||||
    fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
 | 
					    fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
 | 
				
			||||||
        write!(formatter, "Title: {}\nViews: {}\nCensored: {}\nGenres: {}\nEpisodes: {}\nSummary:\n{}",
 | 
					        write!(formatter, "ID: {}\nTitle: {}\nViews: {}\nCensored: {}\nGenres: {}\nEpisodes: {}\nSummary:\n{}",
 | 
				
			||||||
 | 
					            &self.id,
 | 
				
			||||||
            &self.title,
 | 
					            &self.title,
 | 
				
			||||||
            self.views,
 | 
					            self.views,
 | 
				
			||||||
            match self.censored {
 | 
					            match self.censored {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										21
									
								
								src/utils.rs
								
								
								
								
							
							
						
						
									
										21
									
								
								src/utils.rs
								
								
								
								
							| 
						 | 
					@ -19,7 +19,7 @@ pub async fn search(client: reqwest::Client, query: &str) -> Result<Vec<structs:
 | 
				
			||||||
pub async fn get_hentai(client: reqwest::Client, id: &str) -> Result<Option<structs::HentaiInfo>, structs::Error> {
 | 
					pub async fn get_hentai(client: reqwest::Client, id: &str) -> Result<Option<structs::HentaiInfo>, structs::Error> {
 | 
				
			||||||
    let url = match id.contains(|c: char| !c.is_digit(10)) {
 | 
					    let url = match id.contains(|c: char| !c.is_digit(10)) {
 | 
				
			||||||
        true => format!("https://hentaihaven.xxx/watch/{}", &id),
 | 
					        true => format!("https://hentaihaven.xxx/watch/{}", &id),
 | 
				
			||||||
        false => format!("https://hentaihaven.xxx/?post_type=wp-manga&p={}", &id)
 | 
					        false => format!("https://hentaihaven.xxx/?p={}", &id)
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    let resp = client.get(&url)
 | 
					    let resp = client.get(&url)
 | 
				
			||||||
        .send()
 | 
					        .send()
 | 
				
			||||||
| 
						 | 
					@ -27,6 +27,7 @@ pub async fn get_hentai(client: reqwest::Client, id: &str) -> Result<Option<stru
 | 
				
			||||||
    if resp.status() != 200 {
 | 
					    if resp.status() != 200 {
 | 
				
			||||||
        return Ok(None);
 | 
					        return Ok(None);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    let mut id = String::new();
 | 
				
			||||||
    let slug = resp.url().path().trim_end_matches('/').rsplitn(2, '/').nth(0).unwrap().to_string();
 | 
					    let slug = resp.url().path().trim_end_matches('/').rsplitn(2, '/').nth(0).unwrap().to_string();
 | 
				
			||||||
    let text = resp.text().await?.replace(" ", " ");
 | 
					    let text = resp.text().await?.replace(" ", " ");
 | 
				
			||||||
    let mut reader = Reader::from_str(&text);
 | 
					    let mut reader = Reader::from_str(&text);
 | 
				
			||||||
| 
						 | 
					@ -109,6 +110,20 @@ pub async fn get_hentai(client: reqwest::Client, id: &str) -> Result<Option<stru
 | 
				
			||||||
                                Err(_) => ()
 | 
					                                Err(_) => ()
 | 
				
			||||||
                            };
 | 
					                            };
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					                    } else if id.is_empty() {
 | 
				
			||||||
 | 
					                        let data_post = e.attributes()
 | 
				
			||||||
 | 
					                            .find(|i| {
 | 
				
			||||||
 | 
					                                match i.as_ref() {
 | 
				
			||||||
 | 
					                                    Ok(i) => i.key == b"data-post",
 | 
				
			||||||
 | 
					                                    Err(_) => false
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            });
 | 
				
			||||||
 | 
					                        if let Some(data_post) = data_post {
 | 
				
			||||||
 | 
					                            match data_post.unwrap().unescape_and_decode_value(&reader) {
 | 
				
			||||||
 | 
					                                Ok(data_post) => id = data_post,
 | 
				
			||||||
 | 
					                                Err(_) => ()
 | 
				
			||||||
 | 
					                            };
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
| 
						 | 
					@ -166,9 +181,13 @@ pub async fn get_hentai(client: reqwest::Client, id: &str) -> Result<Option<stru
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        buf.clear();
 | 
					        buf.clear();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if id.is_empty() {
 | 
				
			||||||
 | 
					        return Ok(None);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    episode_urls.reverse();
 | 
					    episode_urls.reverse();
 | 
				
			||||||
    summary = summary.trim().to_string();
 | 
					    summary = summary.trim().to_string();
 | 
				
			||||||
    Ok(Some(structs::HentaiInfo {
 | 
					    Ok(Some(structs::HentaiInfo {
 | 
				
			||||||
 | 
					        id: id,
 | 
				
			||||||
        slug: slug,
 | 
					        slug: slug,
 | 
				
			||||||
        title: title,
 | 
					        title: title,
 | 
				
			||||||
        views: rank,
 | 
					        views: rank,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue