Skip to content

Gishky/crunchyroll-jellyfin

Β 
Β 

Repository files navigation

Crunchyroll Metadata Plugin for Jellyfin

Jellyfin Logo

A Jellyfin metadata plugin that fetches anime metadata directly from Crunchyroll, with intelligent season and episode mapping designed to match how most users organize their libraries.

πŸ”— Leia em PortuguΓͺs (Brasil): README.pt-BR.md


✨ Features

  • Series Metadata: Title, overview, release year, genres, and age rating
  • Season Metadata: Season titles and descriptions
  • Episode Metadata: Title, overview, runtime, and air date
  • Images: Posters, backdrops, and episode thumbnails
  • Multi-language Support: English, Portuguese (Brazil), Japanese, and more

πŸ”₯ FlareSolverr Required

⚠️ Since v2.0.0, FlareSolverr is required for this plugin to work.

Crunchyroll is now protected by Cloudflare, which blocks all direct API requests. This plugin uses Chrome DevTools Protocol (CDP) inside FlareSolverr's browser to bypass Cloudflare and fetch metadata.

Without FlareSolverr running, the plugin will not be able to retrieve any metadata.

πŸ“– FlareSolverr Installation & Configuration Guide

Quick start:

docker run -d --name flaresolverr -p 8191:8191 ghcr.io/flaresolverr/flaresolverr:latest

Then configure the plugin with the FlareSolverr URL (http://localhost:8191) and Docker container name (flaresolverr) in the plugin settings.


🎯 Problems This Plugin Solves

Split Seasons (AniDB-style behavior)

Some metadata providers treat each season as a separate series. This plugin avoids that by:

  • Automatically mapping Jellyfin seasons to Crunchyroll seasons
  • Keeping all seasons grouped under a single series entry

Continuous Episode Numbering

Crunchyroll sometimes uses continuous episode numbering across seasons.

Example:

  • Jujutsu Kaisen: Season 2 starts at episode 25 on Crunchyroll
  • Typical Jellyfin library: Season 2 starts at episode 1

This plugin uses automatic episode offset calculation, ensuring:

  • S02E01 in Jellyfin β†’ Crunchyroll Episode 25 βœ…
  • S02E02 in Jellyfin β†’ Crunchyroll Episode 26 βœ…

πŸ“¦ Installation

Method 1: Plugin Repository (Recommended)

  1. Open the Jellyfin Dashboard
  2. Go to Dashboard > Plugins > Repositories
  3. Click + and add the following manifest URL:
https://raw.githubusercontent.com/ocnaibill/crunchyroll-jellyfin/main/manifest.json
  1. Save and go to Dashboard > Plugins > Catalog
  2. Search for Crunchyroll Metadata and click Install
  3. Restart Jellyfin
# Linux (systemd)
sudo systemctl restart jellyfin

# Docker
docker restart jellyfin

Method 2: Manual Installation

  1. Download Jellyfin.Plugin.Crunchyroll.zip from the Releases page
  2. Extract the files to the appropriate plugins directory:
OS Path
Linux /var/lib/jellyfin/plugins/Crunchyroll/
Windows C:\ProgramData\Jellyfin\Server\plugins\Crunchyroll\
macOS ~/.local/share/jellyfin/plugins/Crunchyroll/
Docker /config/plugins/Crunchyroll/

Create the Crunchyroll folder if it does not exist.

  1. Restart Jellyfin

Method 3: Build from Source

git clone https://github.com/ocnaibill/crunchyroll-jellyfin.git
cd crunchyroll-jellyfin
dotnet build -c Release

The compiled DLL will be located at:

Jellyfin.Plugin.Crunchyroll/bin/Release/net8.0/Jellyfin.Plugin.Crunchyroll.dll

Copy it to your Jellyfin plugins directory and restart the server.


βš™οΈ Configuration

Configure the plugin at:

Dashboard > Plugins > Crunchyroll Metadata

Language Settings

  • Preferred Language: Primary metadata language
  • Fallback Language: Used when the preferred language is unavailable

FlareSolverr (Required)

  • FlareSolverr URL: URL of the FlareSolverr instance (default: http://localhost:8191)
  • Docker Container Name: Name of the FlareSolverr Docker container (default: flaresolverr)
  • Chrome CDP URL: (Advanced) Override the Chrome DevTools Protocol URL. Leave empty for auto-detection.

πŸ“– See FLARESOLVERR.md for detailed setup instructions.

Season & Episode Mapping

  • Enable Season Mapping: Maps Jellyfin seasons to Crunchyroll seasons
  • Enable Episode Offset Mapping: Handles continuous episode numbering automatically

Cache

  • Cache Expiration: Metadata cache duration in hours (default: 24h)

πŸ”§ Usage

Anime Library Setup

  1. Create or edit a TV Shows library
  2. Set the content type to Shows
  3. Enable Crunchyroll under:
    • Series Metadata Downloaders
    • Season Metadata Downloaders
    • Episode Metadata Downloaders
  4. Enable Crunchyroll under Image Fetchers
  5. Adjust provider priority as desired

Recommended File Naming

Animes/
β”œβ”€β”€ Jujutsu Kaisen/
β”‚   β”œβ”€β”€ Season 1/
β”‚   β”‚   β”œβ”€β”€ Jujutsu Kaisen - S01E01 - Ryomen Sukuna.mkv
β”‚   β”‚   └── ...
β”‚   └── Season 2/
β”‚       β”œβ”€β”€ Jujutsu Kaisen - S02E01 - Hidden Inventory.mkv
β”‚       └── ...

Manual Identification

If the plugin does not automatically match a series:

  1. Open the series in Jellyfin
  2. Click Edit Metadata
  3. Select Identify
  4. Search for the title on Crunchyroll
  5. Choose the correct result and refresh metadata

πŸ› Troubleshooting

Series not found

  • Ensure the series title matches Crunchyroll naming
  • Use manual identification if needed
  • Confirm the anime is available on Crunchyroll

Incorrect language

  • Verify language settings in the plugin configuration
  • Some titles may not be localized in all languages

Episode mismatch

  • Ensure episode offset mapping is enabled
  • Verify that each season starts at episode 1 locally

Debug Logs

Enable debug logs in Dashboard > Logs and search for Crunchyroll.


πŸ”„ Updates

When installed via the plugin repository, Jellyfin will automatically notify you when updates are available.


πŸ› οΈ Developer Notes

Plugin Versioning

Jellyfin reads the plugin version from the compiled .NET assembly, not from manifest.json or GitHub releases.

  • The .csproj file contains default version properties (Version, AssemblyVersion, FileVersion)
  • The CI workflow injects the Git tag version into the assembly at build time
  • manifest.json provides version history for updates and changelog display (but not the displayed version)

If the plugin shows as 1.0.0.0 in Jellyfin:

  1. Check that the assembly was built with the correct -p:Version=X.X.X.0 parameter
  2. Verify the .csproj has explicit version properties as a fallback

🀝 Contributing

Contributions are welcome!

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to your fork
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License. See LICENSE.md for details.


⚠️ Disclaimer

This plugin is not affiliated with, endorsed by, or sponsored by Crunchyroll or Sony.

Crunchyroll is a registered trademark of Sony Group Corporation.

This plugin only uses publicly available metadata and does not provide access to premium or copyrighted content.


πŸ™ Acknowledgements

  • Jellyfin project and plugin developer community
  • Unofficial Crunchyroll API documentation projects

Made with ❀️ for the Jellyfin community

About

A Jellyfin plugin that scraps Crunchyroll for Anime metadata.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C# 100.0%