| 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.pyusing RapidAPI-based providers. - Core function families include
imdb_details_fetch_core,imdb_search_core,imdb_rating_core,imdb_import_core,imdb_api_search_title, andimdb_api_get_details.
- Core implementation is in
- Provider configuration switches are defined in
config.py:MEDIA_ENABLE_IMDB = Truemust remain enabled.
Base API provider
utils/api_provider_core.pydefinesBaseApiProviderfor 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.pydefines 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
TokenCachefor automatic token refresh and caching where needed.
Core vs presentation for APIs
- Core API logic belongs in
utils/*_core.pymodules that use BaseApiProvider and descriptors. - Flask-aware presentation logic belongs in
routes/utils_*.pymodules 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 understatic/js, and utilities underutils/api_tvdbandutils/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 = Falsemust stay disabled for now.MEDIA_ENABLE_TMDB = Falsemust stay disabled for now.