Metadata-Version: 2.1
Name: anicli-api
Version: 0.2.1
Summary: Anime extractor api implementation
License: MIT
Author: Georgiy aka Vypivshiy
Requires-Python: >=3.8,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: bs4 (>=0.0.1,<0.0.2)
Requires-Dist: httpx (>=0.23.0,<0.24.0)
Description-Content-Type: text/plain

# anicli-api
[![CI](https://github.com/vypivshiy/anicli-api/actions/workflows/ci.yml/badge.svg)](https://github.com/vypivshiy/anicli-api/actions/workflows/ci.yml)
[![Documentation Status](https://readthedocs.org/projects/anicli-api/badge/?version=latest)](https://anicli-api.readthedocs.io/en/latest/?badge=latest)

Программный интерфейс парсера аниме с различных источников.

Присутствует поддержка sync и async методов с помощью `httpx` библиотеки, для получения информации и прямых ссылок 
на видео.

# install
`pip install anicli-api`

# Overview
Модуль экстрактора имеют следующую структуру пошагового получения объекта:
```shell
# Extractor works schema:
    [Extractor]
        | search(<query>)/ongoing()  -> List[SearchResult | Ongoing]
        V                           
  [SearchResult | Ongoing]          
         | get_anime()  -> AnimeInfo
         V                          
    [AnimeInfo]                     
        | get_episodes()  -> List[Episode]  
        V                           
    [Episode]                      
        | get_videos()  -> List[Video]              
        V                           
    [Video]
        | get_source()  -> MetaVideo or Str
        V
    MetaVideo(type, quality, url, extra_headers) or url
```

# Quickstart example
Смотрите примеры [examples](examples) и [документации](https://anicli-api.readthedocs.io/en/latest/index.html)!

# Примечания

Проект разработан преимущественно на личное, некоммерческое использование на стороне клиента. 
Автор проекта не несет ответственности за поломки, убытки в высоко нагруженных проектах и решение
предоставляется "Как есть" в соответствии с [MIT](LIENSE) лицензией.

Если вы всё же решили этот проект использовать в **production** условиях, 
то выстаивайте архитектуру своих проектов **на предварительный сбор информации** 
(например, полученные данные сохранять в базу данных и оттуда позже получать), 
так как большинство парсеров работает в обход официальных методов и применяются такие библиотеки как re, bs4. 

Следовательно, могут быть проблемы от производительности, до получения ошибок по типу 403 (срабатывание ddos защиты) или 
502 (доступа к сайту запрещён).

**Этот проект не включает инструменты кеширования и сохранения всех полученных данных, только эндпоинты 
с готовой реализацией архитектуры парсеров**

# DEV
 [DEV](DEV.MD)

# Contributing
[CONTRIBUTING](CONTRIBUTING.MD)

# TODO
* ~~CI CD автотестов~~
~~* Поправить sphinx документацию~~
* Получение видео по ссылке (like yt-dlp)
* расширенный поиск (по жанрам, годам, etc)
* улучшение документации
* Продумать стандартизацию атрибутов в экстракторах (если такое реально?)
* ~~asyncio tests~~
* ~~coverage~~
* ~~добавить примеры~~
* ~~Написать документацию для high level применения пока на уровне example примеров~~
* ~~Написать документацию для low level разработки экстракторов~~
* ~~Дописать asyncio методы для animego~~
* ~~Портировать anilibria, animevost, animania экстракторы из старого проекта~~

