Skip to content

CrunchyDL/CrunchyDL

Repository files navigation

CrunchyDL Logo

πŸš€ CrunchyDL

Docker React Node.js SQLite Ko-fi Discord

A premium, community-driven platform for automated anime management and downloading. Built with a modern, high-performance architecture and a stunning user interface.

Dashboard Preview

Note

This repository includes code that was generated or assisted by AI tools. All contributions should still be reviewed, tested, and maintained by humans.


✨ Flagship Features

πŸ“Ί Smart Automation (Smart DL)

  • Sub-per-Sub Catch-up: Periodic series monitoring. Automatically detects and downloads missing episodes even for late subscriptions.
  • Hierarchical Multi-Season Tracking: Advanced logic to handle series with multiple seasons, ensuring correct naming (S1, S2, etc.) and global episode synchronization.
  • Multilingual Metadata: Choose your preferred language/region (Spanish, English, etc.) during setup for all series titles and descriptions.
  • Native Internationalization (i18n): Fully localized interface in English and Spanish with automatic browser detection.

βš™οΈ Engine Stability

  • Proactive Session Cleanup: Automatically terminates Crunchyroll streaming sessions after each download to prevent the dreaded TOO_MANY_ACTIVE_STREAMS error.
  • Smart Rate Limiting: Built-in mandatory cooldowns and connection management to ensure account safety and API compliance.
  • Cross-Service Sync: Advanced matching logic that synchronizes catalog metadata with local library storage to prevent duplicate downloads.

πŸ‘₯ Governance & Auditing (RBAC)

  • Real-time Monitoring Dashboard: Integrated widget for tracking automated check history, download volume, and system uptime.
  • Granular Roles: Permission management for Administrators, Contributors, and Standard Users.
  • Audit Logs: Full traceability of all administrative actions.

🎨 Premium Experience

  • Interactive Setup Wizard: A 4-step initial setup to configure your database (SQLite/MySQL), API keys (TMDB/TVDB), and credentials.
  • Modern UI/UX: Ultra-responsive dark mode interface with fluid micro-animations and integrated image editors.

πŸ“‹ Requirements

Before starting, ensure your environment meets the following criteria for a smooth experience:

  • System: Windows 10/11 or Linux (Ubuntu/Debian recommended).
  • Node.js: v22.0.0 or later (Required for native execution).
  • pnpm: v10 or later (Corepack recommended).
  • FFmpeg: v5.0 or later (Must be in your system's PATH).
  • Git: Required for cloning submodules.
  • MKVToolNix (mkvmerge): Must be in your system's PATH.
  • DRM (Optional): At least one functional CDM (Widevine/Playready) is required to download protected content in high quality.
  • Docker (Recommended): Docker Desktop or Engine with Docker Compose v3+.

πŸ› οΈ Quick Start

  1. Clone the repository:
    git clone --recursive https://github.com/CrunchyDL/CrunchyDL.git
    cd CrunchyDL
  2. Configure DRM (Optional but recommended): Place your CDM files in the following folders (created automatically or manually):
    • widevine/: Client blob and private key (or .wvd file).
    • playready/: bgroupcert.dat and zgpriv.dat.
  3. Start with Docker:
    docker-compose up -d
  4. Complete the Setup: Visit http://localhost:3001 and follow the Setup Wizard to initialize your administrator account and services.

πŸ’» Native Installation (Non-Docker)

If you prefer to run the application directly on your host system (Windows or Linux) without Docker, follow these steps:

1. Prerequisites

  • Node.js: v22 or later.
  • pnpm: v10 or later.
  • FFmpeg: Must be installed and in your system's PATH.
  • Git: For cloning and submodules.
  • MKVToolNix (mkvmerge): Must be installed and in your system's PATH.
  • DRM Tools (Windows): Either mp4decrypt or shaka-packager must be in your PATH for decryption to work.

2. Automatic Setup

We provide helper scripts to automate the build and dependency installation:

Windows (PowerShell):

.\scripts\setup-native.ps1

Linux (Bash):

bash scripts/setup-native.sh

3. Manual Build (If needed)

  1. Initialize Submodules: git submodule update --init --recursive
  2. Frontend Build: cd frontend && pnpm install --frozen-lockfile && pnpm run build
  3. Prepare Backend: Copy frontend/dist/* to backend/public/
  4. Backend Setup: cd backend && pnpm install --frozen-lockfile
  5. Submodule Build: cd backend/multi-downloader-nx && pnpm install --frozen-lockfile && pnpm run tsc false false
  6. Start Server: cd backend && node index.js

πŸƒ Quick Start (Post-Setup)

Once the setup is complete, you can start the server using the launchers in the root directory:

  • Windows: Double-click run-windows.bat
  • Linux: Run bash run-linux.sh

Visit http://localhost:3001 to use the application.


Subtitle Translation

CrunchyDL can translate an available English subtitle into the translated subtitle languages selected in Settings. The normal subtitle priority still controls default track order: if a translated language is also in the priority list, it is handled before other translated extras. Official subtitles are never duplicated.

The setup wizard and Settings page offer an explicit translation toggle plus two optional providers. You may leave translation disabled, enable either provider, or configure both with automatic failover:

  • DeepL API Free: the most accurate provider in normal use. It requires a key and has a monthly character quota.
  • LibreTranslate: open source and self-hostable, or usable through a remote LibreTranslate-compatible API. A local instance avoids external quotas, but requires an additional service and uses generic Spanish rather than separate es-ES and es-419 models. Translation quality can contain mistakes.
  • NLLB Local: local AI translation using Meta's NLLB model through the bundled optional service. It is heavier than LibreTranslate and downloads the model on first start, but it runs locally and does not use an external quota. NLLB-Translate tends to translate more literally, so subtitles can contain wording errors or unnatural phrasing.

Keys entered in the setup wizard are stored encrypted and work for Docker and native installations. You can rotate providers, URLs, keys, translated target languages, and optional .ass export later in Settings. Exported translated .ass files are muxed into the video and copied to a subtitles/ subfolder inside the series folder.

If you enable .ass export, the translated subtitle file can be edited manually after download. This is useful for fixing literal or awkward lines from NLLB-Translate or LibreTranslate so the subtitles read naturally.

To run the bundled optional LibreTranslate service in Docker with English and Spanish models:

docker compose --profile libretranslate up -d --build

Use http://libretranslate:5000 as the LibreTranslate URL inside the Docker setup wizard when the web app runs in Docker. For a native LibreTranslate service, the usual URL is http://localhost:5000. For a hosted API, enter the API base URL and optional API key in Settings.

To run the bundled optional NLLB service in Docker:

docker compose --profile nllb up -d --build

Use http://nllb:5001 as the NLLB URL inside the Docker setup wizard when the web app runs in Docker. For a native/local NLLB service, use http://localhost:5001. The default Docker service uses facebook/nllb-200-distilled-600M and stores the model cache in data/nllb-cache.

To run LibreTranslate natively with only the English and Spanish models:

pip install libretranslate
libretranslate --load-only en,es

For direct CLI use or environment-based overrides, see .env.example. Useful overrides include SUBTITLE_TRANSLATION_ENABLED, SUBTITLE_TRANSLATION_PROVIDERS, LIBRETRANSLATE_URL, LIBRETRANSLATE_API_KEY, NLLB_TRANSLATE_URL, and NLLB_MODEL. DeepL API Free currently allows up to 500,000 translated characters per month.


Server File Logging

The server keeps full verbose output in the console, but logs/server.log is compact by default to avoid huge text files. In compact mode, the file stores stderr, warnings/errors, lifecycle messages, failed requests, and completion events.

Optional environment variables:

  • SERVER_FILE_LOG_MODE=compact|all|off (default: compact)
  • SERVER_LOG_MAX_BYTES=5242880 (default: 5 MB before rotation)
  • SERVER_LOG_MAX_FILES=3 (default: keep server.log.1 to server.log.3)
  • SERVER_LOG_MAX_LINE_CHARS=2000 (default: truncate very long lines)
  • SERVER_LOG_PATH=/custom/path/server.log (default: logs/server.log)

πŸ–₯️ Desktop Launcher (System Tray)

For a more integrated experience on Windows and Linux, we provide a lightweight System Tray launcher that allows you to start the server and open the web interface from your taskbar.

The Launcher also includes an administrator interface with service controls, repository selection, live system metrics, library counters, disk usage, and console access.

Launcher Administrator Interface

1. Build the Launcher

Before using it for the first time, you need to compile the binary:

Windows:

  • Double-click build-launcher.bat

Linux:

  • Run bash build-launcher.sh

2. Run the Launcher

Once built, you can start it using:

  • Windows: Double-click start-launcher.bat or run launcher-bin/crunchydl-launcher.exe
  • Linux: Run launcher-bin/crunchydl-launcher (ensure it has execute permissions: chmod +x)

Right-click the orange icon in your system tray to access the menu.


πŸ” DRM & CDM Configuration

This application uses the multi-downloader-nx core for decryption. To enable high-quality downloading (1080p+), you must provide your own CDM (Content Decryption Module) files.

  • Widevine: Recommended for most content. Put your files in the root /widevine folder.
  • Playready: Supported for specific streams. Put your files in the root /playready folder.

Important

Legal Disclaimer: This software is intended for personal, educational, and research purposes ONLY. We do not provide any copyrighted content, decryption keys, or bypasses for digital rights management. The user is solely responsible for obtaining the necessary credentials and CDM files from their own legal devices and complying with the Terms of Service of any platform accessed.


πŸ› οΈ Tech Stack

Layer Technologies
Frontend React 18, Vite, Vanilla CSS, Lucide Icons, i18next
Backend Node.js, Express, Undici, FFmpeg
Database SQLite (default) / MySQL (optional)
Infrastructure Docker & Docker Compose

β˜• Support the Project

If you like the project and want to support its development, you can buy me a coffee:

Ko-fi

You can also see our list of amazing Donors.


πŸ’¬ Community

Join our Discord Server to get support, share suggestions, or just chat with other users!

Discord


πŸ“œ License & Ethics

Licensed under the PolyForm Noncommercial 1.0.0. Personal and hobbyist use is permitted; commercial use is strictly prohibited.

See the LICENSE file for more details.

About

Webservice for multi-downloader-nx to download anime from well know site

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors