Subtitle providers for Bazarr+, focused on sources the mainstream providers cover poorly.
Note
These are Provider Hub plugins and require Bazarr+. Upstream Bazarr has no plugin system, so it is not supported here.
| Provider | Language | Source | Notes |
|---|---|---|---|
| SubKade | Persian (fas) | subkade.ir | Per-season archives, matched by IMDB id |
More may follow โ the layout and tooling are built for several.
Bazarr+ runs providers as sandboxed plugins: each in its own virtualenv, out-of-process, hash-verified against its manifest, and unaffected by Bazarr updates. Three ways in, easiest first.
Install and update from the Marketplace like any other provider โ no files to download, and updates appear automatically.
Subtitle Hub โ Marketplace โ Manage sources, then:
GitHub catalog URL
https://github.com/mamal72/bazarr-providers/blob/main/catalog.json
Name
mamal72/bazarr-providers
Add source, then install SubKade from the Marketplace list.
Note
Community sources show as untrusted โ that badge only means the source is not on Bazarr+'s own trusted list. It says nothing about the plugin. Review the manifest before installing, as you should with any third-party catalog.
Grab subkade-hub.zip from the
latest release,
then Subtitle Hub โ Marketplace โ Install local package.
Nothing to install โ the builder is stdlib Python:
git clone https://github.com/mamal72/bazarr-providers.git
cd bazarr-providers
python3 scripts/build_zip.py subkade # -> subkade-hub.zipBuilds are deterministic: the same source always produces a byte-identical archive. Then install it as in โก.
Installing does not enable. In Subtitle Hub โ My Providers, click + Add search provider, choose the provider, and save settings.
SubKade publishes one archive per season rather than per-episode files, so the provider:
- Resolves the series by its IMDB id (
https://subkade.ir/?s=tt1234567), which returns exactly one page โ no fuzzy title matching, so no wrong-show results. - Reads the per-season archive links from that page.
- Downloads the season archive once, caches it for the life of the worker, and lists entries matching the requested episode.
- Serves the chosen entry on download.
Fetching several episodes of one season therefore costs a single download.
No configuration. Archives use the same episode numbers Bazarr does โ a
two-part episode is filed under its first number (S04E01E02 lives in the
E01 folder and answers for both halves), so nothing needs translating.
Entries naming their release are offered ahead of bare filenames, since Bazarr
can score those against the video.
subkade.iris reachable directly from Iran and does not need proxying. If Bazarr routes through a VPN, addsubkade.iranddl1.subkade.irto the proxy exclusions โ some hosts return 403 to datacenter IPs.- Archives are
.zip. SubKade occasionally publishes.rar, which the standard library cannot read; those entries are skipped. - Subtitles are served as-is. Persian files sometimes need a leading RLM (U+200F) for dialogue dashes to render correctly in some players โ a property of the source files, not this provider.
providers/<id>/provider.py Hub plugin โ stdlib only, no Bazarr imports
providers/<id>/provider.json manifest (hashes must match the source)
tests/ unit tests + fixtures captured from the live site
catalog.json generated; what Bazarr+ fetches as a catalog
python3 -m unittest discover -s tests # tests
python3 scripts/check_hashes.py # manifest hashes match the source
python3 scripts/build_catalog.py # regenerate catalog.json
python3 scripts/build_zip.py --all # build every packageproviders/<id>/ must contain only *.py and provider.json โ the Hub's
verifier rejects anything else, and the manifest's file map is built by globbing
*.py recursively. Anything else belongs outside providers/.
Regenerate provider.json hashes with the upstream
catalog SDK
(python3 -m sdk hash providers/<id>); scripts/check_hashes.py reproduces its
digest and fails CI when a manifest is stale.
- Bazarr+ โ these are Provider Hub plugins; upstream Bazarr cannot load them
No provider here needs an account, API key, or configuration.
MIT