/Shokofin

Repository for Shokofin, a plugin that brings Shoko to Jellyfin.

Primary LanguageC#MIT LicenseMIT

Shokofin

A Jellyfin plugin to integrate Jellyfin with Shoko Server.

Read this before installing

This plugin requires that you have already set up and are using Shoko Server, and that the files you intend to include in Jellyfin are indexed (and optionally managed) by Shoko Server. Otherwise, the plugin won't be able to provide metadata for your files, since there is no metadata to find for them.

What Is Shoko?

Shoko is an anime cataloging program designed to automate the cataloging of your collection regardless of the size and amount of files you have. Unlike other anime cataloging programs which make you manually add your series or link the files to them, Shoko removes the tedious, time-consuming and boring task of having to manually add every file and manually input the file information. You have better things to do with your time like actually watching the series in your collection so let Shoko handle all the heavy lifting.

Learn more about Shoko at https://shokoanime.com/.

Install

There are many ways to install the plugin, but the recommended way is to use the official Jellyfin repository. Alternatively, it can be installed from this GitHub repository, or you can build it from source.

Below is a version compatibility matrix for which version of Shokofin is compatible with what.

Shokofin Jellyfin Shoko Server
0.x.x 10.7 4.0.04.1.2
1.x.x 10.7 4.1.04.1.2
2.x.x 10.8 4.1.2
3.x.x 10.8 4.2.0
4.0.04.1.1 10.9 4.2.2
4.2.04.2.2 10.9 4.2.25.0.0
5.x.x 10.10 5.0.0
dev 10.10 dev

Official Repository

  1. Access Plugin Repositories:

    • Go to Dashboard -> Plugins -> Catalog -> ⚙ Gear icon.
  2. Add New Repository:

    • Add a new repository with the following details:
      • Repository Name: Shokofin Stable
      • Repository URL: https://raw.githubusercontent.com/ShokoAnime/Shokofin/metadata/stable/manifest.json
  3. Install Shokofin:

    • Go to the catalog in the plugins section of the dashboard.
    • Find and install Shoko from the Metadata section.
  4. Restart Jellyfin:

    • Restart your server to apply the changes.

Github Releases

  1. Download the Plugin:

    • Go to the latest release on GitHub here.
    • Download the shoko_*.zip file.
  2. Extract and Place Files:

    • Extract all .dll files and meta.json from the zip file.
    • Put them in a folder named Shoko.
    • Copy this Shoko folder to the plugins folder in your Jellyfin program data directory or inside the Jellyfin install directory. For help finding your Jellyfin install location, check the "Data Directory" section on this page.
  3. Restart Jellyfin:

    • Start or restart your Jellyfin server to apply the changes.

Build Process

  1. Clone or Download the Repository:

    • Clone or download the repository from GitHub.
  2. Set Up .NET Core SDK:

    • Make sure you have the .NET Core SDK installed on your computer.
  3. Build the Plugin:

    • Open a terminal and navigate to the repository directory.

    • Run the following commands to restore and publish the project:

      $ dotnet restore Shokofin/Shokofin.csproj
      $ dotnet publish -c Release Shokofin/Shokofin.csproj
  4. Copy Built Files:

    • After building, go to the bin/Release/net8.0/ directory.
    • Copy all .dll files to a folder named Shoko.
    • Place this Shoko folder in the plugins directory of your Jellyfin program data directory or inside the portable install directory. For help finding your Jellyfin install location, check the "Data Directory" section on this page.

Feature Overview

  • Metadata integration

    • Basic metadata, e.g. titles, description, dates, etc.

      • Customizable main title for items

      • Optional customizable alternate/original title for items

      • Customizable description source for items

        Choose between AniDB, TvDB, TMDB, or a mix of the three.

      • Support optionally adding titles and descriptions for all episodes for multi-entry files.

    • Genres

      With settings to choose which tags to add as genres.

    • Tags

      With settings to choose which tags to add as tags.

    • Official Ratings

      Currently only assumed ratings using AniDB tags or manual overrides using custom user tags are available. Also with settings to choose which providers to use.

    • Production Locations

      With settings to chose which provider to use.

    • Staff

      • Displayed on the Show/Season/Movie items

      • Images

      • Metadata Provider

        Needs to add endpoints to the Shoko Server side first.

    • Studios

      • Displayed on the Show/Season/Movie items

      • Images

        Needs to add support and endpoints to the Shoko Server side or fake it client-side first.

      • Metadata Provider

        Needs to add support and endpoints to the Shoko Server side or fake it client-side first.

  • Library integration

    • Support for different library types

      • Show library

      • Movie library

      • Mixed show/movie library.

        As long as the VFS is in use for the media library. Also keep in mind that this library type is poorly supported in Jellyfin Core, and we can't work around the poor internal support, so you'll have to take what you get or leave it as is.

    • Supports adding local trailers

      • on Show items

      • on Season items

      • on Movie items

    • Specials and extra features.

      • Customize how Specials are placed in your library. I.e. if they are mapped to the normal seasons, or if they are strictly kept in season zero.

      • Extra features. The plugin will map specials stored in Shoko such as interviews, etc. as extra features, and all other specials as episodes in season zero.

    • Map OPs/EDs to Theme Videos, so they can be displayed as background video while you browse your library.

    • Support merging multi-version episodes/movies into a single entry.

      Tidying up the UI if you have multiple versions of the same episode or movie.

      • Auto merge after library scan (if enabled).

      • Manual merge/split tasks

    • Support optionally setting other provider IDs Shoko knows about on some item types when an ID is available for the items in Shoko.

      Only AniDB and TMDB IDs are available for now.

    • Multiple ways to organize your library.

      • Choose between two ways to group your Shows/Seasons; using AniDB Anime structure (the default mode), or using Shoko Groups.

        For the best compatibility if you're not using the VFS it is strongly advised not to use "season" folders with anime as it limits which grouping you can use, you can still create "seasons" in the UI using Shoko's groups.

      • Optionally create Collections for…

        • Movies using the Shoko series.

        • Movies and Shows using the Shoko groups.

      • Supports separating your on-disc library into a two Show and Movie libraries.

        Provided you apply the workaround to support it.

    • Automatically populates all missing episodes not in your collection, so you can see at a glance what you are missing out on.

    • Optionally react to events sent from Shoko.

  • User data

    • Able to sync the watch data to/from Shoko on a per-user basis in multiple ways. And Shoko can further sync the to/from other linked services.

      • During import.

      • Player events (play/pause/resume/stop events)

      • After playback (stop event)

      • Live scrobbling (every 1 minute during playback after the last play/resume event or when jumping)

    • Import and export user data tasks

  • Virtual File System (VFS)

    Allows us to disregard the underlying disk file structure while automagically meeting Jellyfin's requirements for file organization.