| name | api-use-external |
| description | Any time an external api needs to be understood or queried |
External API use
Includes how to query and process the current existing external APIs:
- IMDb Primary API.
- IMDb Fallback API - To be used when IMDb primary API times out or is otherwise unreachable.
Index
- API configuration:
- API provider framework:
- Docs and examples: documenation, endpoints, and request/response examples for both IMDb Primary API and IMDb Fallback API.
API configuration
- All API settings such as keys, base URLs, and timeouts come from
config.py.
- API credentials and other secrets come from
.env.
API provider framework
API integration
- IMDb integration must remain active and fully operational.
- Core implementation is in
utils/imdb_core.py using RapidAPI-based providers.
- Core function families include
imdb_details_fetch_core, imdb_search_core, imdb_rating_core, imdb_import_core, imdb_api_search_title, and imdb_api_get_details.
- Provider configuration switches are defined in
config.py:
MEDIA_ENABLE_IMDB = True must remain enabled.
Base API provider
utils/api_provider_core.py defines BaseApiProvider for all external HTTP APIs.
- Handles HTTP requests, authentication, token management, error handling, and response normalization.
- Stateless by design with no Flask context; safe to use in core modules.
- Includes retry strategy and standardized response format.
- Use this class instead of creating custom HTTP client code per API.
Provider descriptors
utils/api_provider_descriptors.py defines configuration descriptors for each external API.
- New providers should be added by defining a descriptor in this module, not by creating new ad-hoc client modules.
- Descriptors capture base URL, authentication strategy, header builders, and normalization callbacks.
- Supports bearer tokens, API keys, and static tokens.
- Includes
TokenCache for automatic token refresh and caching where needed.
Core vs presentation for APIs
- Core API logic belongs in
utils/*_core.py modules that use BaseApiProvider and descriptors.
- Flask-aware presentation logic belongs in
routes/utils_*.py modules that call core functions.
- Keep API core code free of Flask imports and request context.
Docs and examples
- IMDb primary API:
utils/imdb-01-docs.md (IMDb236 API)
- IMDb fallback API:
utils/imdb-02-docs.md (IMDb8 API)
Legacy unused but saved
Do not use or enable but do save:
- TVDB and TMDB are not currently enabled in the application.
- Supporting code and tests exist but must remain disabled unless explicitly authorized.
- Residual assets include templates under
templates/admin, JavaScript under static/js, and utilities under utils/api_tvdb and utils/api_tmdb.
- Runtime disabling is enforced in routes and config.
- Presence does not imply enablement; do not enable or delete them without approval.
- Provider configuration switches are defined in
config.py:
MEDIA_ENABLE_TVDB = False must stay disabled for now.
MEDIA_ENABLE_TMDB = False must stay disabled for now.