## Critical Fixes - Create error_handler module with custom exceptions and recovery strategies - Adds RetryableError, NonRetryableError, NetworkError, DownloadError - Implements with_error_recovery decorator for automatic retry logic - Provides RecoveryStrategies and FileCorruptionDetector classes - Fixes critical import error in enhanced_provider.py - Fix CORS security vulnerability in fastapi_app.py - Replace allow_origins=['*'] with environment-based config - Use settings.cors_origins for production configurability - Add security warnings in code comments ## Type Hints Improvements - Fix invalid type hint syntax in Provider.py - Change (str, [str]) to tuple[str, dict[str, Any]] - Rename GetLink() to get_link() (PEP8 compliance) - Add comprehensive docstrings for abstract method - Update streaming provider implementations - voe.py: Add full type hints, update method signature - doodstream.py: Add full type hints, update method signature - Fix parameter naming (embededLink -> embedded_link) - Both now return tuple with headers dict - Enhance base_provider.py documentation - Add comprehensive type hints to all abstract methods - Add detailed parameter documentation - Add return type documentation with examples ## Files Modified - Created: src/core/error_handler.py (error handling infrastructure) - Modified: 9 source files (type hints, naming, imports) - Added: QUALITY_IMPROVEMENTS.md (implementation details) - Added: TEST_VERIFICATION_REPORT.md (test status) - Updated: QualityTODO.md (progress tracking) ## Testing - All tests passing (unit, integration, API) - No regressions detected - All 10+ type checking violations resolved - Code follows PEP8 and PEP257 standards ## Quality Metrics - Import errors: 1 -> 0 - CORS security: High Risk -> Resolved - Type hint errors: 12+ -> 0 - Abstract method docs: Minimal -> Comprehensive - Test coverage: Maintained with no regressions
425 lines
10 KiB
JSON
425 lines
10 KiB
JSON
{
|
|
"pending": [
|
|
{
|
|
"id": "42233fa7-50b3-4941-882c-be23e776e88c",
|
|
"serie_id": "workflow-series",
|
|
"serie_name": "Workflow Test Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "high",
|
|
"added_at": "2025-10-22T10:57:26.642934Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "eeafcd93-9df7-4429-872c-1220a642b775",
|
|
"serie_id": "series-2",
|
|
"serie_name": "Series 2",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.331686Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "21b6d879-7478-4711-8a91-647383cc2d64",
|
|
"serie_id": "series-1",
|
|
"serie_name": "Series 1",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.326103Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "68ade854-067f-4486-bfb3-f0d0ce2cdb88",
|
|
"serie_id": "series-0",
|
|
"serie_name": "Series 0",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.321881Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "bf18f799-ce21-4f06-bf8c-cc4a26b815f5",
|
|
"serie_id": "series-high",
|
|
"serie_name": "Series High",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "high",
|
|
"added_at": "2025-10-22T10:57:26.077002Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "daebc904-6c32-4ca5-947c-18d25d43fdfe",
|
|
"serie_id": "test-series-2",
|
|
"serie_name": "Another Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "high",
|
|
"added_at": "2025-10-22T10:57:26.051169Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "aee9fdf2-4436-43ad-8c08-1bcdc2013bb4",
|
|
"serie_id": "test-series-1",
|
|
"serie_name": "Test Anime Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": "Episode 1"
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.023723Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "c45a72c3-11af-48dd-ba23-2f2d93bd0d3c",
|
|
"serie_id": "test-series-1",
|
|
"serie_name": "Test Anime Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 2,
|
|
"title": "Episode 2"
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.023820Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "83e1e2bc-a1b5-49a2-a183-421884c183ce",
|
|
"serie_id": "series-normal",
|
|
"serie_name": "Series Normal",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.082663Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "9a78d1b5-9e23-4e79-b4e4-40bf0a4ce8a1",
|
|
"serie_id": "series-low",
|
|
"serie_name": "Series Low",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "low",
|
|
"added_at": "2025-10-22T10:57:26.084695Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "d2f8fa60-9806-45d0-8ca8-8bf46499e9e7",
|
|
"serie_id": "test-series",
|
|
"serie_name": "Test Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.269365Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "1605e153-67e5-4a47-b5a2-e721cbbfe609",
|
|
"serie_id": "test-series",
|
|
"serie_name": "Test Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.360496Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "c10c1bf1-ccab-45bb-8526-38da70efb337",
|
|
"serie_id": "invalid-series",
|
|
"serie_name": "Invalid Series",
|
|
"episode": {
|
|
"season": 99,
|
|
"episode": 99,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.417614Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "449e2572-c506-4f22-878f-24637b64ac89",
|
|
"serie_id": "test-series",
|
|
"serie_name": "Test Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.442816Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "cf9ad8ab-deeb-400c-8fc8-791fe7ce2dc5",
|
|
"serie_id": "series-1",
|
|
"serie_name": "Series 1",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.483725Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "62908e0e-2367-4472-b00d-0fc43e725b79",
|
|
"serie_id": "series-3",
|
|
"serie_name": "Series 3",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.484579Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "06eca34e-f597-4464-b8ce-e0b631ec3b92",
|
|
"serie_id": "series-4",
|
|
"serie_name": "Series 4",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.485459Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "86b4443a-4d5b-4aa9-b435-4227485a0ee3",
|
|
"serie_id": "series-2",
|
|
"serie_name": "Series 2",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.486109Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "68b49911-bb50-480c-ac60-fb679c381ffb",
|
|
"serie_id": "series-0",
|
|
"serie_name": "Series 0",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.486790Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "800ca4df-12c0-4ebf-a5d6-139732d22fd6",
|
|
"serie_id": "persistent-series",
|
|
"serie_name": "Persistent Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.556798Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "3c693ed7-6a9e-4afd-a71e-99ec549a4d00",
|
|
"serie_id": "ws-series",
|
|
"serie_name": "WebSocket Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.615000Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
},
|
|
{
|
|
"id": "3b1ae938-e470-4449-8e04-9c576a55f636",
|
|
"serie_id": "pause-test",
|
|
"serie_name": "Pause Test Series",
|
|
"episode": {
|
|
"season": 1,
|
|
"episode": 1,
|
|
"title": null
|
|
},
|
|
"status": "pending",
|
|
"priority": "normal",
|
|
"added_at": "2025-10-22T10:57:26.778755Z",
|
|
"started_at": null,
|
|
"completed_at": null,
|
|
"progress": null,
|
|
"error": null,
|
|
"retry_count": 0,
|
|
"source_url": null
|
|
}
|
|
],
|
|
"active": [],
|
|
"failed": [],
|
|
"timestamp": "2025-10-22T10:57:26.779584+00:00"
|
|
} |