- Python 93.4%
- PowerShell 6.6%
| anilist_provider | ||
| config | ||
| scripts | ||
| tests | ||
| .gitignore | ||
| pytest.ini | ||
| README.md | ||
| requirements.txt | ||
AniList Plex Metadata Provider
A Plex Custom Metadata Provider (PMS 1.43+) that matches anime from folder titles and pulls posters, banners, summaries, genres, cast, and per-season AniList covers.
This is not a legacy .bundle plugin. Plex is removing those in 2026. This process speaks the new HTTP metadata-provider API.
What it does
- Cleans fansub folder names (
[SubsPlease], BD tags, CRC hashes) - Searches AniList by title (optional
Show Name [anilist-12345]) - Groups TV sequels into Plex seasons, each with that season's AniList poster
- Fills episode titles from AniList
streamingEpisodeswhen present - Serves both TV (
/tv) and movies (/movie)
Requirements
- Plex Media Server 1.43 or newer
- Python 3.11+
- This process must keep running while Plex refreshes metadata
AniList public GraphQL does not need an API key. If you have a token from anilist.co/settings/developer, put it in config/local.yaml:
anilist:
access_token: YOUR_TOKEN
Run
.\scripts\start.ps1
The provider listens on http://127.0.0.1:3847.
Optional logon task so it survives reboot:
.\scripts\install_task.ps1
Register the URLs with this Plex server (also creates the AniList TV / AniList Movies agent groups):
.\scripts\register_plex.ps1
Use the Plex web app in a browser (the Windows desktop app often hides Settings → Metadata Agents).
Plex treats a provider (this HTTP service) and an agent (a named group of providers) as two different things. The library Advanced dropdown only lists agents.
Existing libraries that still use a legacy agent (AniList.bundle, AMSA, TheTVDB, …) will not show custom agents as valid. Plex 1.43 keeps those libraries on the old agent list until the scanner is also switched to the modern one:
| Library | Scanner | Agent |
|---|---|---|
| Anime (TV) | Plex TV Series (not “Plex Series Scanner”) | AniList TV |
| Anime Movies | Plex Movie (not “Plex Movie Scanner”) | AniList Movies |
After that, open a show → ⋯ → Refresh Metadata. Existing matches often keep the old agent until you Unmatch then Fix Match. Do not recreate the libraries.
Config
| File | Purpose |
|---|---|
config/default.yaml |
host/port, title language, cache TTL, rate limit |
config/aliases.yaml |
short fansub names → better search (Kokoore, LasTame, …) |
config/local.yaml |
optional overlay (gitignored), including AniList token |
title_language is english, romaji, or native.
Tests
.\.venv\Scripts\python.exe -m pytest