anime-grubber

Crates.ioanime-grubber
lib.rsanime-grubber
version0.0.7
sourcesrc
created_at2024-10-21 15:19:50.664757
updated_at2024-10-27 18:20:14.552318
descriptionA convenient library for extracting images of cute characters from websites.
homepagehttps://github.com/TOwInOK/anime-grubber
repositoryhttps://github.com/TOwInOK/anime-grubber
max_upload_size
id1417638
size33,750
TOwInOK#nqcq (TOwInOK)

documentation

https://docs.rs/anime-grubber

README

anime-grubber

Crates.io Documentation License удобная библиотека для извлечения изображений милых (или не совсем) персонажей с веб-сайтов.

Возможности

  • Извлечение изображений и GIF с аниме-сайтов и других ресурсов.
  • Поддержка работы с различными категориями медиа, включая SFW (Safe for Work) и NSFW (Not Safe for Work).
  • Лёгкая интеграция с асинхронными приложениями на базе Tokio.
  • Встроенные агенты для работы с популярными API (например, Waifu.pics).
  • Логирование событий для отладки и отслеживания процесса загрузки медиа.

Агенты

Установка

Пропишите в консоль:

cargo add anime-grubber

или

Добавьте anime-grubber в ваш Cargo.toml:

[dependencies]
anime-grubber = "0"

Использование

use anime_grubber::agents::waifu_pics::{Waifu, Categories, SFW};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let instance = Waifu::new(Categories::SFW(SFW::Dance));
    let image = instance.get().await?;
    println!("Fetched image URL: {}", image);
    Ok(())
}

Примеры использования

Извлечение одного изображения

Этот пример показывает, как можно получить одно изображение из категории SFW::Dance:

use anime_grubber::agents::waifu_pics::{Waifu, Categories, SFW};
use tracing::info;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let instance = Waifu::new(Categories::SFW(SFW::Dance));
    let image = instance.get().await?;
    info!("Fetched image URL: {}", image);
    Ok(())
}

Извлечение нескольких изображений

Получение сразу нескольких изображений из той же категории:

use anime_grubber::agents::waifu_pics::{Waifu, Categories, SFW};
use tracing::info;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let instance = Waifu::new(Categories::SFW(SFW::Dance));
    let images = instance.get_many().await?;
    assert_eq!(images.len(), 30);
    info!("{:#?}", images);
    Ok(())
}

Логирование

Для удобства отладки используется библиотека tracing. Пример настройки глобального логгера можно увидеть в тестах.

use tracing_subscriber::FmtSubscriber;

tracing::subscriber::set_global_default(
    FmtSubscriber::builder()
        .with_max_level(tracing::Level::DEBUG) //  or you can use INFO .with_max_level(tracing::Level::INFO)
        .pretty()
        .without_time()
        .finish(),
).expect("Failed to set global default subscriber");

Тестирование

Библиотека содержит примеры тестов, которые можно найти в модуле Tests:

Лицензия

Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.

Commit count: 24

cargo fmt