#image #anime #gif #fetch #api-bindings

anime-grubber

A convenient library for extracting images of cute characters from websites

6 releases

new 0.0.7 Oct 27, 2024
0.0.5 Oct 26, 2024

#445 in Web programming

Download history 233/week @ 2024-10-17 248/week @ 2024-10-24

481 downloads per month

MIT license

25KB
286 lines

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.

Dependencies

~5–15MB
~220K SLoC