YoitsuWrap
Wrapper Python pour AnimeSamaApi — téléchargez des épisodes d'anime et des chapitres de scan en quelques lignes de code.
Sommaire
- Présentation
- Prérequis
- Installation
- Configuration
- Utilisation
- Structure du projet
- Référence des classes
- Roadmap
- Licence
Présentation
YoitsuWrap est un wrapper Python orienté objet qui simplifie l'interaction avec AnimeSamaApi. Il expose une API propre et intuitive pour :
- Rechercher un anime par son titre
- Télécharger des épisodes (VOSTFR, VF) via
yt-dlp - Télécharger des chapitres de scan (images)
- Paralléliser les téléchargements avec du multithreading
Prérequis
- Python 3.8+
- Une instance AnimeSamaApi lancée et accessible (par défaut sur
http://127.0.0.1:5000) yt-dlpinstallé (géré automatiquement via les dépendances)
Installation
Via pip (recommandé)
pip install YoitsuWrap
En mode développement
git clone https://github.com/TMCooper/YoitsuWrap.git
cd YoitsuWrap
pip install -e .
Configuration
Avant toute utilisation, créez un objet Config pointant vers votre instance AnimeSamaApi :
from YoitsuWrap.Config import Config
config = Config.create_config(
urls=["http://127.0.0.1"], # URL de(s) l'API(s)
ports=[5000, 8000], # Port de(s) l'API(s)
path=r"C:\Users\vous\Téléchargements" # Dossier de destination
sources=["ANIMESAMA", "VOIRANIME"]) # Permet d'avoir une hasmap et recuperer la configuration d'une api ou l'autre simplement
Note : Si l'API est inaccessible, le programme affichera une erreur et s'arrêtera.
Les fichiers téléchargés seront organisés automatiquement dans le dossier PATH selon la structure suivante :
PATH/
└── Anime/
└── <Titre>/
├── <Saison>/
│ └── <Version>/
│ ├── 1.mp4
│ ├── 2.mp4
│ └── ...
└── Scans/
└── Chapitre 1/
├── page_1.jpg
├── page_2.jpg
└── ...
Utilisation
Recherche & téléchargement d'un anime
from YoitsuWrap.Config import Config
from YoitsuWrap.Anime import Anime
config = Config.create_config(urls=["http://127.0.0.1"], ports=[5000, 8000], path=r"C:\Téléchargements", sources=["ANIMESAMA", "VOIRANIME"])
# Rechercher un anime (version VOSTFR par défaut)
frieren = Anime.search_by_name(title="Frieren", config=config)
# Télécharger tous les épisodes ET les scans disponibles
frieren.download_all()
# Télécharger uniquement les épisodes
frieren.download_anime()
# Télécharger uniquement les épisodes d'une saison précise
frieren.download_anime(season="1")
# Télécharger uniquement les scans
frieren.download_scan()
# Télécharger un chapitre de scan spécifique
frieren.download_scan(chapter=5)
Travailler avec les saisons
from YoitsuWrap.Season import Season
# Récupérer un objet Season directement
saison = Season.search_by_name(
title="Spice And Wolf",
saison="remake2024",
version="vostfr",
config=config
)
# Télécharger toute la saison (2 épisodes en parallèle)
saison.download_season(max_workers=2)
# Informations
print(saison.get_title()) # "Spice And Wolf"
print(saison.get_saison()) # "remake2024"
print(saison.get_episodes_numbers()) # Nombre d'épisodes
print(saison.get_version()) # "vostfr"
Travailler avec les épisodes
from YoitsuWrap.Episode import Episode
# Récupérer la liste des épisodes d'une saison
episodes = Episode.search_by_name(
title="Spice And Wolf",
saison="remake2024",
version="vostfr",
config=config
)
# Télécharger le premier épisode
episodes[0].download_episode()
# Informations sur un épisode
print(episodes[0].get_title()) # "Spice And Wolf"
print(episodes[0].get_episode_number()) # 1
print(episodes[0].get_season()) # "remake2024"
print(episodes[0].get_link()) # URL de l'épisode
Travailler avec les scans
from YoitsuWrap.Scan import Scan
# Récupérer un objet Scan
scan = Scan.search_by_name(manga_name="Frieren", config=config)
# Télécharger tous les chapitres (4 images en parallèle, 2 chapitres simultanés)
scan.download_scan(images_workers=4, max_workers=2)
# Télécharger un chapitre spécifique
scan.download_scan(chapter=33, images_workers=4)
# Informations
print(scan.get_number_of_chapters()) # Nombre total de chapitres
print(scan.get_number_of_pages()) # Nombre total de pages
Structure du projet
YoitsuWrap/
├── src/
│ └── YoitsuWrap/
│ ├── Config.py # Configuration de la connexion à l'API
│ ├── Anime.py # Classe principale — point d'entrée recommandé
│ ├── Season.py # Gestion des saisons d'un anime
│ ├── Episode.py # Gestion et téléchargement des épisodes
│ ├── Scan.py # Gestion des scans (manga)
│ └── Chapter.py # Gestion et téléchargement des chapitres
├── pyproject.toml
└── README.md
Référence des classes
Config
| Paramètre | Type | Description |
|---|---|---|
BASE_URL |
dict[str] |
URL de base de l'API (ex: http://127.0.0.1) |
PORT |
dict[int] |
Port de(s) l'API (ex: [5000] / [5000, 8000]) |
PATH |
str |
Dossier racine pour les téléchargements |
SOURCE |
dict[str] |
Variable permettant a l'utilisateur de préciser au code quel lien corespond a quel api (ex : [ANIMESAMA, VOIRANIME]) |
Anime
| Méthode | Description |
|---|---|
Anime.search_by_name(title, config, version="vostfr") |
Recherche et construit l'objet anime |
download_anime(season=None, max_seasons_workers=1, max_workers=2) |
Télécharge les épisodes |
download_scan(chapter=None, images_workers=1, max_workers=2) |
Télécharge les scans |
download_all(max_seasons_workers=1, max_workers=2, chapter_workers=1) |
Télécharge tout (épisodes + scans) |
get_title() |
Retourne le titre |
get_cover() |
Retourne l'URL de la couverture |
get_link() |
Retourne le lien vers la page source |
get_season(season="1") |
Retourne un objet Season |
get_seasons() |
Retourne toutes les saisons |
get_scan() |
Retourne l'objet Scan |
Season
| Méthode | Description |
|---|---|
Season.search_by_name(title, saison, version, config) |
Construit l'objet saison |
download_season(max_workers=1) |
Télécharge toute la saison |
get_episodes() |
Retourne la liste des objets Episode |
get_episodes_numbers() |
Retourne le nombre d'épisodes |
get_saison() |
Retourne le nom de la saison |
get_version() |
Retourne la version (ex: vostfr) |
Episode
| Méthode | Description |
|---|---|
Episode.search_by_name(title, saison, version, config) |
Retourne la liste des épisodes |
download_episode() |
Télécharge l'épisode |
get_episode_number() |
Retourne le numéro de l'épisode |
get_link() |
Retourne l'URL de l'épisode |
get_season() |
Retourne la saison associée |
get_version() |
Retourne la version |
Scan
| Méthode | Description |
|---|---|
Scan.search_by_name(manga_name, config) |
Construit l'objet scan |
download_scan(chapter=None, images_workers=1, max_workers=1) |
Télécharge le(s) chapitre(s) |
get_chapters(chapter=None) |
Retourne un ou tous les chapitres |
get_number_of_chapters() |
Retourne le nombre de chapitres |
get_number_of_pages() |
Retourne le nombre total de pages |
Chapter
| Méthode | Description |
|---|---|
Chapter.search_by_name(manga_title, config) |
Retourne un dict de tous les chapitres |
download_chapter(max_workers=1) |
Télécharge toutes les pages du chapitre |
get_chapter_name() |
Retourne le nom du chapitre (ex: "Chapitre 1") |
get_number_of_pages() |
Retourne le nombre de pages |
get_page_link() |
Retourne la liste des URLs des pages |
Licence
Ce projet est distribué sous licence GPL-3.0-or-later. Voir le fichier LICENSE pour plus de détails.
Se repo est fait et maintenue par TMCooper
Metadata
Release files for YoitsuWrap 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| yoitsuwrap-0.1.5.tar.gz | 27.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| yoitsuwrap-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 56.2 kB
Release files / yoitsuwrap-0.1.5.tar.gz
| Download URL | yoitsuwrap-0.1.5.tar.gz |
|---|---|
| Size | 27.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
edecec33b9174c409d0ae7cde1b6450cfd7065535422b4cc504cff0aa6a53d84
|
|
BLAKE2b-256 checksum How to use checksums |
45a58c7cc1ba95fab85128d14c25823dbad067233f5131578f092163a7ca5c2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / yoitsuwrap-0.1.5-py3-none-any.whl
| Download URL | yoitsuwrap-0.1.5-py3-none-any.whl |
|---|---|
| Size | 28.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ab9569f78be59bf54145843932457f6d6eb5eaf242d4cbd5951062e3569ccef2
|
|
BLAKE2b-256 checksum How to use checksums |
c49a3166f9164c4568a38ecb99dec69029b920b447fc24273e3b52ecfc01c972
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for YoitsuWrap 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.