gogoanime_scraper/
lib.rs

1pub mod download;
2pub mod input_handler;
3pub mod parser;
4pub mod scraper;
5pub mod utils;
6
7pub static URL: &str = "https://anitaku.bz/";
8pub static SEARCH_URL: &str = "https://anitaku.bz/search.html?keyword=";
9pub static CAT_URL: &str = "https://anitaku.bz/category/";
10
11/// Get the anime list by name
12///
13/// # Arguments
14///
15/// * `anime_name` - The name of the anime
16///
17/// # Returns
18///
19/// A tuple containing the anime URL and the anime name
20pub async fn get_anime_list_by_name(anime_name: String) -> (Vec<String>, Vec<String>, Vec<String>) {
21    let trimmed_name = input_handler::trim(anime_name);
22    let url = format!("{}{}", SEARCH_URL, trimmed_name);
23    let body = utils::get_html(url)
24        .await
25        .expect("An error has occured, please verify if you are connected to the internet");
26    get_anime_info(body)
27}
28
29pub fn get_anime_info(body: String) -> (Vec<String>, Vec<String>, Vec<String>) {
30    let anime_url = parser::get_anime_url(body.clone());
31    let anime_name = parser::get_anime_name(body.clone());
32    let anime_images = parser::get_anime_images(body);
33    (anime_url, anime_name, anime_images)
34}
35
36pub async fn download_anime_episodes(
37    anime_url_ending: String,
38    path: &str,
39) -> Result<(), Box<dyn std::error::Error>> {
40    scraper::get_anime_episodes_and_download_the_episodes(anime_url_ending, path).await
41}
42
43pub fn get_anime_details(body: String) -> (Vec<String>, Vec<String>) {
44    let anime_url = parser::get_anime_url(body.clone());
45    let anime_name = parser::get_anime_name(body);
46    (anime_url, anime_name)
47}