Skip to content

AniWorld Downloader is a command-line tool for downloading and streaming anime, series, and movies. It works on Windows, macOS, and Linux. If you enjoy using it, feel free to leave a ⭐!

License

Notifications You must be signed in to change notification settings

phoenixthrush/AniWorld-Downloader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AniWorld Downloader

AniWorld Downloader is a versatile command-line tool designed for downloading and streaming anime, series, and movies. It supports Windows, macOS, and Linux, offering a seamless experience across platforms.

Downloads License

AniWorld Downloader - Demo

(back to top)

Features

  • Download Episodes or Seasons: Effortlessly download individual episodes or entire seasons with a single command.
  • Stream Instantly: Watch episodes directly using the integrated mpv player for a seamless experience.
  • Auto-Next Playback: Enjoy uninterrupted viewing with automatic transitions to the next episode.
  • Multiple Providers: Access a variety of streaming providers on aniworld.to for greater flexibility.
  • Language Preferences: Easily switch between German Dub, English Sub, or German Sub to suit your needs.
  • Aniskip Support: Automatically skip intros and outros for a smoother viewing experience.
  • Group Watching with Syncplay: Host synchronized anime sessions with friends using Syncplay integration.

(back to top)

🚧 Documentation 🚧

I am currently working on a documentation for AniWorld Downloader, which you can access here: https://www.phoenixthrush.com/AniWorld-Downloader-Docs/

The documentation is a work in progress, so feel free to check back from time to time for updates and new information.

Most information in this README is already available in more detail on the documentation website. In the future, this README will be simplified to only give a basic overview.

(back to top)

Supported Providers

To see the list of supported providers, check the SUPPORTED_PROVIDERS variable.

(back to top)

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.

Note: If you are using an ARM-based system, you might face issues with the curses module. To resolve this, use the amd64 Python version instead of the ARM version. For more details, refer to GitHub Issue #14.

Python Installation Tutorial (Windows) Python Installation Tutorial

Note: If you've restarted the terminal and aniworld isn't being recognized, you have two options:

  • Add aniworld to your PATH so it can be found globally.
  • Run python -m aniworld, which should work without adding it to the PATH.

(back to top)

Installation

Install Latest Stable Release (Recommended)

To install the latest stable version directly from GitHub, 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/phoenixthrush/AniWorld-Downloader.git@next#egg=aniworld

Re-run this command periodically to update to the latest development build. These builds are from the next branch and may include experimental or unstable changes.

(back to top)

Local Installation (Requires Git)

For a local installation, follow these steps:

  1. Clone the repository:
git clone https://github.com/phoenixthrush/AniWorld-Downloader aniworld
  1. Install the package in editable mode:
pip install -U -e ./aniworld
  1. To update your local version, run:
git -C aniworld pull

(back to top)

Executable Releases

You don't need Python installed to use the binary builds of AniWorld available on GitHub.

Releases

(back to top)

Uninstallation

To uninstall AniWorld Downloader, run the following command:

pip --uninstall aniworld

(back to top)

Usage

AniWorld Downloader offers three versatile usage modes:

  1. Interactive Menu: Launch the tool and navigate through an intuitive menu to select and manage downloads or streams.
  2. Command-Line Arguments: Execute specific tasks directly by providing arguments, such as downloading a particular episode or setting preferences.
  3. Python Library: Integrate AniWorld Downloader into your Python projects to programmatically manage anime, series, or movie downloads.

Choose the method that best suits your workflow and enjoy a seamless experience!

Menu Example

To start the interactive menu, simply run:

aniworld

Command-Line Arguments Example

AniWorld Downloader provides a variety of command-line options for downloading and streaming anime without relying on the interactive menu. These options unlock advanced features such as --aniskip, --keep-watching, and --syncplay-password.

Example 1: Download a Single Episode

To download episode 1 of "Demon Slayer: Kimetsu no Yaiba":

aniworld --episode https://aniworld.to/anime/stream/demon-slayer-kimetsu-no-yaiba/staffel-1/episode-1

Example 2: Download Multiple Episodes

To download multiple episodes of "Demon Slayer":

aniworld --episode https://aniworld.to/anime/stream/demon-slayer-kimetsu-no-yaiba/staffel-1/episode-1 https://aniworld.to/anime/stream/demon-slayer-kimetsu-no-yaiba/staffel-1/episode-2

Example 3: Watch Episodes with Aniskip

To watch an episode while skipping intros and outros:

aniworld --episode https://aniworld.to/anime/stream/demon-slayer-kimetsu-no-yaiba/staffel-1/episode-1 --action Watch --aniskip

Example 4: Syncplay with Friends

To syncplay a specific episode with friends:

aniworld --episode https://aniworld.to/anime/stream/demon-slayer-kimetsu-no-yaiba/staffel-1/episode-1 --action Syncplay --keep-watching

Language Options for Syncplay

You can select different languages for yourself and your friends:

  • For German Dub:

    aniworld --episode https://aniworld.to/anime/stream/demon-slayer-kimetsu-no-yaiba/staffel-1/episode-1 --action Syncplay --keep-watching --language "German Dub" --aniskip
  • For English Sub:

    aniworld --episode https://aniworld.to/anime/stream/demon-slayer-kimetsu-no-yaiba/staffel-1/episode-1 --action Syncplay --keep-watching --language "English Sub" --aniskip

Note: Syncplay automatically groups users watching the same anime (regardless of episode). To restrict access, set a password for the room:

aniworld --episode https://aniworld.to/anime/stream/demon-slayer-kimetsu-no-yaiba/staffel-1/episode-1 --action Syncplay --keep-watching --language "English Sub" --aniskip --syncplay-password beans

Example 5: Download with Specific Provider and Language

To download an episode using the VOE provider with English subtitles:

aniworld --episode https://aniworld.to/anime/stream/demon-slayer-kimetsu-no-yaiba/staffel-1/episode-1 --provider VOE --language "English Sub"

Example 6: Use an Episode File

You can download episodes listed in a text file. Below is an example of a text file (test.txt):

# The whole anime
https://aniworld.to/anime/stream/alya-sometimes-hides-her-feelings-in-russian

# The whole Season 2
https://aniworld.to/anime/stream/demon-slayer-kimetsu-no-yaiba/staffel-2

# Only Season 3 Episode 13
https://aniworld.to/anime/stream/kaguya-sama-love-is-war/staffel-3/episode-13

To download the episodes specified in the file, use:

aniworld --episode-file test.txt --language "German Dub"

This can also be combined with Watch and Syncplay actions, as well as other arguments, for a more customized experience.

(back to top)

Library Example

You can also use AniWorld Downloader as a library in your Python scripts to programmatically manage anime downloads or streams. Here's an example:

from aniworld.models import Anime, Episode

# Define an Anime object with a list of episodes
anime = Anime(
  episode_list=[
    Episode(
      slug="food-wars-shokugeki-no-sma",
      season=1,
      episode=5
    ),
    Episode(
      link="https://aniworld.to/anime/stream/food-wars-shokugeki-no-sma/staffel-1/episode-6"
    )
  ]
)

# Iterate through the episodes and retrieve direct links
for episode in anime:
  print(f"Episode: {episode}")
  print(f"Direct Link: {episode.get_direct_link('VOE', 'German Sub')}")

(back to top)

Anime4K Setup

Enhance your anime viewing experience with Anime4K. Follow the instructions below to configure Anime4K for use with the mpv player, even outside of AniWorld Downloader.

For High-Performance GPUs

(Examples: GTX 1080, RTX 2070, RTX 3060, RX 590, Vega 56, 5700XT, 6600XT, M1 Pro/Max/Ultra, M2 Pro/Max)

Run the following command to optimize Anime4K for high-end GPUs:

aniworld --anime4k High

For Low-Performance GPUs

(Examples: GTX 980, GTX 1060, RX 570, M1, M2, Intel integrated GPUs)

Run the following command to configure Anime4K for low-end GPUs:

aniworld --anime4k Low

Uninstall Anime4K

To remove Anime4K from your setup, use this command:

aniworld --anime4k Remove

Additional Information

All files for Anime4K are saved in the mpv directory during installation.

  • Windows: C:\Users\<YourUsername>\AppData\Roaming\mpv
  • macOS: /Users/<YourUsername>/.config/mpv
  • Linux: /home/<YourUsername>/.config/mpv

You can switch between High and Low modes at any time to match your GPU's performance. To cleanly uninstall Anime4K, use the Remove option.

(back to top)

Dependencies

AniWorld Downloader depends on the following Python packages:

  • requests: For handling HTTP requests.
  • beautifulsoup4: For parsing and scraping HTML content.
  • yt-dlp: For downloading videos from supported providers.
  • npyscreen: For creating interactive terminal-based user interfaces.
  • tqdm: For providing progress bars during downloads.
  • fake_useragent: For generating random user-agent strings.
  • packaging: For parsing version numbers and handling package versions.
  • py-cpuinfo: Only required on Windows for gathering CPU information (AVX2 support for MPV).
  • windows-curses: Required on Windows systems to enable terminal-based UI functionality.

These dependencies are automatically installed when you set up AniWorld Downloader using pip.

(back to top)

Credits

  • mpv: A versatile media player used for seamless streaming.
  • yt-dlp: A powerful tool for downloading videos from various providers.
  • Syncplay: Enables synchronized playback sessions with friends.
  • Anime4K: A cutting-edge real-time upscaler for enhancing anime video quality.
  • Aniskip: Provides the opening and ending skip times for the Aniskip extension.

(back to top)

Still Left Todo

  • Implement a provider fallback mechanism

(back to top)

Contributing

Contributions to AniWorld Downloader are highly appreciated! You can help enhance the project by:

  • Reporting Bugs: Identify and report issues to improve functionality.
  • Suggesting Features: Share ideas to expand the tool's capabilities.
  • Submitting Pull Requests: Contribute code to fix bugs or add new features.

Contributors

Contributors
  • Lulu (since Sep 14, 2024)
    Wakatime Badge

  • Tmaster055 (since Oct 21, 2024)
    Wakatime Badge

    Special thanks to Tmaster055 for resolving the Aniskip issue by correctly fetching the MAL ID!
    Additional thanks to fundyjo for contributing the Doodstream extractor!

(back to top)

Support

If you need help with AniWorld Downloader, you can:

While email support is available, opening a GitHub issue is preferred, even for installation-related questions, as it helps others benefit from shared solutions. However, feel free to email if that’s your preference.

If you find AniWorld Downloader useful, consider starring the repository on GitHub. Your support is greatly appreciated and inspires continued development.

Thank you for using AniWorld Downloader!

(back to top)

Legal Disclaimer

AniWorld Downloader is made for accessing content that’s already publicly available online. It doesn’t support or promote piracy or copyright violations. The developer isn’t responsible for how the tool is used or for any content found through external links.

All content accessed with AniWorld Downloader is available on the internet, and the tool itself doesn’t host or share copyrighted files. It also has no control over the accuracy, legality, or availability of the websites it links to.

If you have concerns about any content accessed through this tool, please reach out directly to the website’s owner, admin, or hosting provider. Thanks for your understanding.

(back to top)

Star History

Star History Chart

(back to top)

License

This project is licensed under the MIT License.
For more details, see the LICENSE file.

(back to top)

About

AniWorld Downloader is a command-line tool for downloading and streaming anime, series, and movies. It works on Windows, macOS, and Linux. If you enjoy using it, feel free to leave a ⭐!

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 5