AniWorld Downloader is a command-line tool for downloading and streaming anime, series and movies, compatible with Windows, macOS, and Linux.
Project description
AniWorld Downloader
AniWorld Downloader is a tool for downloading content from various streaming sites. It features a modern web interface and can be easily deployed using Docker.
Table of Contents
- Core Features
- Supported Sites
- Supported Hosters
- Installation
- Usage
- Docker Deployment
- API Endpoints
- Support
- Legal Disclaimer
- License
Core Features
- Web Interface: A modern web UI for easy searching, downloading, and queue management with real-time progress tracking.
- Docker Support: Containerized deployment with Docker and Docker Compose for a quick and easy setup.
- Download Queue: Manage all your downloads in one place with a clear and organized queue.
- Multiple Sources: Download content from a variety of sources.
- Custom Download Paths: Set different download directories for series/anime and movies to keep your library organized.
Supported Sites
You can download content from the following websites:
- AniWorld.to (Anime)
- S.to (Anime & Series)
- MegaKino.ms (Movies)
Supported Hosters
The downloader supports a wide range of popular hosters, including:
- VOE
- Filemoon
- Vidmoly
- Doodstream
- Streamtape
- LoadX
- Luluvdo
- Vidoza
- SpeedFiles
Installation
Prerequisites
Ensure you have Python 3.9 or higher installed.
Additionally, make sure Git is installed if you plan to install the development version.
Installation
Install Latest Stable Release (Recommended)
To install the latest stable version, use the following command:
pip install --upgrade aniworld
Install Latest Development Version (Requires Git)
To install the latest development version directly from GitHub, use the following command:
pip install --upgrade git+https://github.com/Yezun-hikari/AniWorld-Downloader.git@next#egg=aniworld
Usage
The primary way to use this tool is through its web interface, especially when deployed with Docker.
Web Interface
Launch the modern web interface for easy searching, downloading, and queue management:
aniworld --web-ui
The web interface provides:
- Modern Search: Search for anime, series, and movies across all supported sites.
- Episode/Movie Selection: A visual picker to select what you want to download.
- Download Queue: Track the real-time progress of all your downloads.
- User Authentication: Optional multi-user support with admin controls.
- Settings Management: Configure providers, languages, and download preferences.
Web Interface Options
# Basic web interface (localhost only)
aniworld --web-ui
# Expose to network (accessible from other devices)
aniworld --web-ui --web-expose
# Enable authentication for multi-user support
aniworld --web-ui --enable-web-auth
# Set custom download paths
aniworld --web-ui --output-dir /path/to/series-downloads --movie-dir /path/to/movie-downloads
Docker Deployment
The recommended way to run the AniWorld Downloader is with Docker, which simplifies setup and dependency management.
Using Docker Compose (Recommended)
-
Clone the repository:
git clone https://github.com/Yezun-hikari/AniWorld-Downloader.git cd AniWorld-Downloader
-
Modify
docker-compose.ymlto set your download paths. By default, it will createdownloadsandmoviesdirectories in the project folder. -
Build and start the container:
docker-compose up -d --build
Docker Configuration
The Docker container runs with:
- User Security: Non-root user for enhanced security.
- System Dependencies: Includes ffmpeg for video processing.
- Web Interface: Enabled by default with authentication and network exposure.
- Download Directories:
/app/downloads(for series/anime)/app/movies(for movies)
- Port: 8080 (configurable via environment variables)
Using Docker Compose with Gluetun VPN
For users who want to route the container's traffic through a VPN, you can use Gluetun. Here is an example docker-compose.yml for a Portainer stack:
version: '3.8'
services:
aniworld:
container_name: aniworld-downloader
image: aniworld-downloader:local
volumes:
- ./downloads:/app/downloads
- ./movies:/app/movies
- ./data:/app/data
stdin_open: true
tty: true
restart: unless-stopped
network_mode: "service:vpn"
vpn:
image: 'qmcgaw/gluetun'
container_name: vpn
cap_add:
- NET_ADMIN
environment:
- VPN_SERVICE_PROVIDER= # e.g., mullvad, nordvpn, protonvpn
- OPENVPN_USER= # Your OpenVPN username
- OPENVPN_PASSWORD= # Your OpenVPN password
ports:
- "8080:8080" # AniWorld WebUI
- "8001:8000" # Gluetun API for integrations like gethomepage
volumes:
- ./gluetun:/gluetun
restart: unless-stopped
In this setup:
- The
aniworldservice is configured to use the network of thevpnservice (network_mode: "service:vpn"). - The
vpnservice is a Gluetun container. You must configure theVPN_SERVICE_PROVIDER(e.g., Mullvad, NordVPN, ProtonVPN) and your credentials. For a full list of providers and setup instructions, refer to the official Gluetun documentation. - Port
8080exposes the AniWorld Downloader web interface. - Port
8001exposes the Gluetun API, which can be used for integrations with dashboards like gethomepage.
API Endpoints
The web interface provides a simple API to monitor download status, making it easy to integrate with dashboards like gethomepage.
/api/download-status
This endpoint provides real-time information about the currently active download.
- URL:
/api/download-status - Method:
GET - Authentication: None. This endpoint is publicly accessible.
Example Response
If a download is in progress, the API will return a JSON object like this:
{
"series_name": "Oshi No Ko",
"current_episode_progress": "35%",
"download_speed": "8.46MiB/s",
"eta": "00:28",
"overall_progress": "0/1",
"success": true
}
If no download is active, it will return:
{
"success": false,
"message": "No active downloads"
}
gethomepage Integration
You can add a widget to your gethomepage dashboard to monitor your downloads. Add the following configuration to your services.yaml file:
- AniWorld Downloader:
icon: https://github.com/Yezun-hikari/AniWorld-Downloader/blob/main/src/aniworld/nuitka/icon.webp?raw=true
href: http://localhost:8080/
description: WebUI for Anime-Downloads
widget:
type: customapi
url: http://localhost:8080/api/download-status
mappings:
- field: series_name
label: Name
- field: current_episode_progress
label: Progress
- field: download_speed
label: Speed
- field: overall_progress
label: Episodes
- field: eta
label: ETA
Note: The gethomepage widget will only display the first four mapped fields on the dashboard.
Credits
Original AniWorld-Downloader: phoenixthrush
MEGAKino-Downloader: Tmaster055
Support
If you need help with AniWorld Downloader, you can:
- Submit an issue on the GitHub Issues page.
If you find this tool useful, consider starring the repository on GitHub. Your support is greatly appreciated!
Thank you for using AniWorld Downloader!
⚠️ Legal Disclaimer
I provide this tool for educational and informational purposes only. You are solely responsible for how you use it. Any actions taken using this tool are entirely your own responsibility. I do not condone or support illegal use.
License
This project is licensed under the MIT License. For more details, see the LICENSE file or click the blue text above.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aniworld_downloader-3.8.2.tar.gz.
File metadata
- Download URL: aniworld_downloader-3.8.2.tar.gz
- Upload date:
- Size: 133.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0edefabb37aa1faff719e8a42fbb116a8ab9ae7aa984e0d1d0b51a9cc4f3de72
|
|
| MD5 |
665d32d69d7b966ee9fa0d3f346a4c85
|
|
| BLAKE2b-256 |
f2a3580577861a2472ca22a0d0368c663def2aa08dff13723cd46a8f57e617d0
|
Provenance
The following attestation bundles were made for aniworld_downloader-3.8.2.tar.gz:
Publisher:
build.yml on Yezun-hikari/AniWorld-Downloader
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aniworld_downloader-3.8.2.tar.gz -
Subject digest:
0edefabb37aa1faff719e8a42fbb116a8ab9ae7aa984e0d1d0b51a9cc4f3de72 - Sigstore transparency entry: 688990030
- Sigstore integration time:
-
Permalink:
Yezun-hikari/AniWorld-Downloader@772536b7134f45c893d10e78402de184212d7f14 -
Branch / Tag:
refs/tags/v.3.8.3y - Owner: https://github.com/Yezun-hikari
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@772536b7134f45c893d10e78402de184212d7f14 -
Trigger Event:
release
-
Statement type:
File details
Details for the file aniworld_downloader-3.8.2-py3-none-any.whl.
File metadata
- Download URL: aniworld_downloader-3.8.2-py3-none-any.whl
- Upload date:
- Size: 156.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40128de9e6b66d73c07a98003417944d1224e4bd70c0416bd21c1b955f8d8fa3
|
|
| MD5 |
627f237d7f282474547fea93181489cd
|
|
| BLAKE2b-256 |
1c9c7d8ffce3d2e2d9ba8681ac56f90282887c612e92b38e612d614b517dc2bd
|
Provenance
The following attestation bundles were made for aniworld_downloader-3.8.2-py3-none-any.whl:
Publisher:
build.yml on Yezun-hikari/AniWorld-Downloader
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aniworld_downloader-3.8.2-py3-none-any.whl -
Subject digest:
40128de9e6b66d73c07a98003417944d1224e4bd70c0416bd21c1b955f8d8fa3 - Sigstore transparency entry: 688990079
- Sigstore integration time:
-
Permalink:
Yezun-hikari/AniWorld-Downloader@772536b7134f45c893d10e78402de184212d7f14 -
Branch / Tag:
refs/tags/v.3.8.3y - Owner: https://github.com/Yezun-hikari
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@772536b7134f45c893d10e78402de184212d7f14 -
Trigger Event:
release
-
Statement type: