Skip to main content

YoitsuWrap

Wrapper Python pour AnimeSamaApi — téléchargez des épisodes d'anime et des chapitres de scan en quelques lignes de code.

Python License: GPL v3 Version


Sommaire


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-dlp installé (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(
    BASE_URL="http://127.0.0.1",            # URL de l'API
    PORT=5000,                              # Port de l'API
    PATH=r"C:\Users\vous\Téléchargements"   # Dossier de destination
)

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(BASE_URL="http://127.0.0.1", PORT=5000, PATH=r"C:\Téléchargements")

# 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 str URL de base de l'API (ex: http://127.0.0.1)
PORT int Port de l'API (ex: 5000)
PATH str Dossier racine pour les téléchargements

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yoitsuwrap-0.1.4.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yoitsuwrap-0.1.4-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

File details

Details for the file yoitsuwrap-0.1.4.tar.gz.

File metadata

  • Download URL: yoitsuwrap-0.1.4.tar.gz
  • Upload date:
  • Size: 25.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for yoitsuwrap-0.1.4.tar.gz
Algorithm Hash digest
SHA256 91a9409d4db1a21a09b8b8e1d7dd607bc073a43e550749fd06ab9a4b01e5a74b
MD5 6464c5f233486bee767296357b20e0a6
BLAKE2b-256 b487e8674288754d9166207b253f77763e1074437d933925d64634dc52a8603a

See more details on using hashes here.

File details

Details for the file yoitsuwrap-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: yoitsuwrap-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 27.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for yoitsuwrap-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 69189ba8b769bd6ae6fb7940802e91628797474933963de6b182a938b7717b9c
MD5 54b5b25314e6054abbb77ec0c1f38507
BLAKE2b-256 e828d61d30d040876c87400a9b095b4edf075d5b9521a49bfa458af13992d83d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page