Updated `api_password` to be optional in configurations and logic, allowing API access to function without it if not set. Adjusted related checks and encryption handling to accommodate this change while maintaining security features when a password is provided. Updated README to reflect the change.
Added LiveTVExtractor for extracting M3U8 and MPD streams. Enhanced error handling by introducing ExtractorError and updated existing extractors to use this new error class. Removed support for unused request headers and integrated caching for extractor results.
Changed the proxy configuration system to a more flexible transport configuration using HTTPX routing. Introduced new settings for global proxy enablement and robust pattern-based proxy and SSL configurations. Updated README.md with new examples and detailed explanations of the new configurations.
Replaced TTLCache with an optimized hybrid cache combining memory and file storage for better performance and scalability. Removed cachetools dependency and updated pyproject.toml to include aiofiles. Adjusted speed test service to use the new caching mechanism.
Reorganized extractor routes into dedicated modules for better maintainability. Introduced a base class for extractors, enabling consistent request handling across different services. Additionally, updated configurations and error handling in extractors, enhancing code readability and robustness.
The endpoint '/mpd/segment' has been renamed to '/mpd/segment.mp4' for clarity in the route. Additionally, logging for internal server errors now uses 'logger.exception' to provide more detailed error information.
Integrate streaming progress tracking using tqdm_asyncio in the `stream_content` method, controlled by the new `enable_streaming_progress` setting. Update configuration to include this new setting and ensure the progress bar closes properly after streaming.
This commit refactors the query parameter handling in the proxy routes by consolidating parameters into specific Pydantic models using the `Annotated` type for better clarity and maintainability. Additionally, extracted common setup and error-handling logic into reusable functions within `handlers.py`.