Add TsukiHime subtitle provider - #3480
Draft
rokogan wants to merge 1 commit into
Draft
Conversation
Integrate TsukiHime's public anime and torrent APIs for episode and movie searches. Resolve episodes through AniDB identifiers and movies through AniList identifiers, rank matching releases, map subtitle languages and flags, construct native or AnimeTosho-mirrored storage URLs, and validate and decompress XZ subtitle downloads. Register the credential-free provider with Bazarr, enable the AniDB and AniList refiners it needs, expose it in provider settings, and list it in the supported-provider documentation. Add focused offline coverage for both storage paths, candidate filtering and matching, successful decompression, invalid archives, and missing identifiers. Validated with 151 Bazarr backend tests, 5 focused TsukiHime tests, 12 provider-settings frontend tests, TypeScript and ESLint checks, targeted Prettier validation, a production-style frontend build, Python 3.10 import compatibility, and live episode and movie searches and downloads on Windows.
Owner
|
Is this PR ready to get out of draft mode? |
Collaborator
|
@rokogan pinging you back here to know what is missing from this PR |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add TsukiHime as an official Bazarr anime subtitle provider for both series episodes and movies.
The provider uses TsukiHime's public API to resolve anime by AniDB ID for episodes and AniList ID for movies, ranks matching completed releases, discovers supported subtitle attachments, and downloads the original SRT/ASS/SSA/SUB/VTT track from TsukiHime's XZ-compressed storage.
Implementation
tsukihimeprovider and register its empty configuration/attachstorage and AnimeTosho-mirrored/tosho/attachstorageValidation
pytest -q tests/bazarr/: 151 passed on Python 3.12 / Windowspytest -q tests/subliminal_patch/test_tsukihime.py: 5 passednpm run check:ts: passednpm run check: passednpx prettier -c src/pages/Settings/Providers/list.tsx: passednpm test -- --run src/pages/Settings/Providers/index.test.tsx: 12 passednpm run build:ci: passedThe live checks were run on Windows. Local frontend checks used Node 22; upstream CI should provide the pinned Node 24.18 runtime and the full Python 3.10-3.14 matrix.
An adjacent local run of the existing AnimeTosho and AnimeTosho.xyz provider tests produced 9 passes and one existing isolated failure in
test_list_subtitles_with_portuguese_br; this change does not touch that provider or its test.Coordination and AI disclosure
I did not find an existing TsukiHime issue or pull request. This is intentionally a draft: Bazarr's contribution guide asks new features to be greenlit in Discord, and that coordination has not yet been confirmed. The PR should remain draft until that checkpoint is completed.
OpenAI Codex assisted with the implementation, tests, live validation, and pull-request preparation. The behavior was derived from observed TsukiHime API responses and reviewed against Bazarr's existing provider, refiner, configuration, and frontend conventions.