diff --git a/data/analytics.json b/data/analytics.json deleted file mode 100644 index 75ea3d5..0000000 --- a/data/analytics.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "created_at": "2025-10-30T19:51:12.073703", - "last_updated": "2025-10-30T19:51:12.073709", - "download_stats": { - "total_downloads": 0, - "successful_downloads": 0, - "failed_downloads": 0, - "total_bytes_downloaded": 0, - "average_speed_mbps": 0.0, - "success_rate": 0.0, - "average_duration_seconds": 0.0 - }, - "series_popularity": [], - "storage_history": [], - "performance_samples": [] -} \ No newline at end of file diff --git a/data/config.json b/data/config.json index bbd3054..1d7f52b 100644 --- a/data/config.json +++ b/data/config.json @@ -17,7 +17,7 @@ "keep_days": 30 }, "other": { - "master_password_hash": "$pbkdf2-sha256$29000$gDAmhLCWsrY25vz/f28NIQ$Oi7qK6MnW/N67bDCiut6wiU/5KVFkdnxkg34XjQEDmQ", + "master_password_hash": "$pbkdf2-sha256$29000$DwGg9P5fS4mxNiZEyBnjvA$prwrz.LHaPTVVqtZMVAXPkw3GclQrCiIfa35SvcV2RA", "anime_directory": "/home/lukas/Volume/serien/" }, "version": "1.0.0" diff --git a/data/config_backups/config_backup_20251030_200338.json b/data/config_backups/config_backup_20251030_200338.json deleted file mode 100644 index 5977dca..0000000 --- a/data/config_backups/config_backup_20251030_200338.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "Aniworld", - "data_dir": "data", - "scheduler": { - "enabled": true, - "interval_minutes": 60 - }, - "logging": { - "level": "INFO", - "file": null, - "max_bytes": null, - "backup_count": 3 - }, - "backup": { - "enabled": false, - "path": "data/backups", - "keep_days": 30 - }, - "other": { - "master_password_hash": "$pbkdf2-sha256$29000$8D5nbO3d23sPASAE4FzLWQ$CqXdc8Zryr9Jgyb4AEC/9GrMBnKrmFYt/rEBuYyHFqo", - "anime_directory": "/home/lukas/Volume/serien/" - }, - "version": "1.0.0" -} \ No newline at end of file diff --git a/data/config_backups/config_backup_20251030_200521.json b/data/config_backups/config_backup_20251030_200521.json deleted file mode 100644 index 85dd79f..0000000 --- a/data/config_backups/config_backup_20251030_200521.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "Aniworld", - "data_dir": "data", - "scheduler": { - "enabled": true, - "interval_minutes": 60 - }, - "logging": { - "level": "INFO", - "file": null, - "max_bytes": null, - "backup_count": 3 - }, - "backup": { - "enabled": false, - "path": "data/backups", - "keep_days": 30 - }, - "other": { - "master_password_hash": "$pbkdf2-sha256$29000$qLVW6j3nPIeQUioFwLjX.g$w.mBJsPDLs5wO9E2NL1wcHrBgVOFaDwSh684x8f1FDg", - "anime_directory": "/home/lukas/Volume/serien/" - }, - "version": "1.0.0" -} \ No newline at end of file diff --git a/data/config_backups/config_backup_20251030_200955.json b/data/config_backups/config_backup_20251030_200955.json deleted file mode 100644 index 2c53f95..0000000 --- a/data/config_backups/config_backup_20251030_200955.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "Aniworld", - "data_dir": "data", - "scheduler": { - "enabled": true, - "interval_minutes": 60 - }, - "logging": { - "level": "INFO", - "file": null, - "max_bytes": null, - "backup_count": 3 - }, - "backup": { - "enabled": false, - "path": "data/backups", - "keep_days": 30 - }, - "other": { - "master_password_hash": "$pbkdf2-sha256$29000$.r9Xag1BSKl17j3H.P./tw$XLhO13awaCA0TUXFdd6pMlefl41zxL1rLWON/wy.FSU", - "anime_directory": "/home/lukas/Volume/serien/" - }, - "version": "1.0.0" -} \ No newline at end of file diff --git a/data/config_backups/config_backup_20251030_201344.json b/data/config_backups/config_backup_20251030_201344.json deleted file mode 100644 index 77ea1ac..0000000 --- a/data/config_backups/config_backup_20251030_201344.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "Aniworld", - "data_dir": "data", - "scheduler": { - "enabled": true, - "interval_minutes": 60 - }, - "logging": { - "level": "INFO", - "file": null, - "max_bytes": null, - "backup_count": 3 - }, - "backup": { - "enabled": false, - "path": "data/backups", - "keep_days": 30 - }, - "other": { - "master_password_hash": "$pbkdf2-sha256$29000$ivEe41yLkZIyBqA0Rmht7Q$71tDA8ymSS.OrdyZ0KYGQ5GFxqCaAR4UxbNVMH8nJNs", - "anime_directory": "/home/lukas/Volume/serien/" - }, - "version": "1.0.0" -} \ No newline at end of file diff --git a/data/config_backups/config_backup_20251030_201713.json b/data/config_backups/config_backup_20251030_201713.json deleted file mode 100644 index de64345..0000000 --- a/data/config_backups/config_backup_20251030_201713.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "Aniworld", - "data_dir": "data", - "scheduler": { - "enabled": true, - "interval_minutes": 60 - }, - "logging": { - "level": "INFO", - "file": null, - "max_bytes": null, - "backup_count": 3 - }, - "backup": { - "enabled": false, - "path": "data/backups", - "keep_days": 30 - }, - "other": { - "master_password_hash": "$pbkdf2-sha256$29000$3zuHECKEcK4VwjjnHMN4rw$IQMdj42ajSj4Gp16BPTKt.Hl6byaTQOZSnSfPaej6xY", - "anime_directory": "/home/lukas/Volume/serien/" - }, - "version": "1.0.0" -} \ No newline at end of file diff --git a/data/download_queue.json b/data/download_queue.json index d96327d..67a44f2 100644 --- a/data/download_queue.json +++ b/data/download_queue.json @@ -1,28 +1,9 @@ { "pending": [ { - "id": "5e5dc91b-310a-46c5-8b50-3c08bc637356", - "serie_id": "workflow-series", - "serie_name": "Workflow Test Series", - "episode": { - "season": 1, - "episode": 1, - "title": null - }, - "status": "pending", - "priority": "high", - "added_at": "2025-10-30T19:17:17.067624Z", - "started_at": null, - "completed_at": null, - "progress": null, - "error": null, - "retry_count": 0, - "source_url": null - }, - { - "id": "b7827d50-c935-47d7-bec3-0348200c4816", - "serie_id": "series-2", - "serie_name": "Series 2", + "id": "9fb9775e-b32a-4135-a6ed-1d1036346f18", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { "season": 1, "episode": 1, @@ -30,7 +11,7 @@ }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.647481Z", + "added_at": "2025-10-30T19:42:01.943728Z", "started_at": null, "completed_at": null, "progress": null, @@ -39,112 +20,17 @@ "source_url": null }, { - "id": "600fb372-2043-4570-aa6b-d5c01f8767a2", - "serie_id": "series-1", - "serie_name": "Series 1", - "episode": { - "season": 1, - "episode": 1, - "title": null - }, - "status": "pending", - "priority": "normal", - "added_at": "2025-10-30T19:17:16.644472Z", - "started_at": null, - "completed_at": null, - "progress": null, - "error": null, - "retry_count": 0, - "source_url": null - }, - { - "id": "103b493a-417a-4f49-80d5-32b9dd37bcfc", - "serie_id": "series-0", - "serie_name": "Series 0", - "episode": { - "season": 1, - "episode": 1, - "title": null - }, - "status": "pending", - "priority": "normal", - "added_at": "2025-10-30T19:17:16.639634Z", - "started_at": null, - "completed_at": null, - "progress": null, - "error": null, - "retry_count": 0, - "source_url": null - }, - { - "id": "9b83f463-bfdf-4aa1-8f39-a35a84bceeb8", - "serie_id": "series-high", - "serie_name": "Series High", - "episode": { - "season": 1, - "episode": 1, - "title": null - }, - "status": "pending", - "priority": "high", - "added_at": "2025-10-30T19:17:16.317304Z", - "started_at": null, - "completed_at": null, - "progress": null, - "error": null, - "retry_count": 0, - "source_url": null - }, - { - "id": "662747e0-861c-4ac3-b866-9a770c3f1539", - "serie_id": "test-series-2", - "serie_name": "Another Series", - "episode": { - "season": 1, - "episode": 1, - "title": null - }, - "status": "pending", - "priority": "high", - "added_at": "2025-10-30T19:17:16.281208Z", - "started_at": null, - "completed_at": null, - "progress": null, - "error": null, - "retry_count": 0, - "source_url": null - }, - { - "id": "0c08edf9-2ea9-4bc9-b24d-94a05523020d", - "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-30T19:17:16.246180Z", - "started_at": null, - "completed_at": null, - "progress": null, - "error": null, - "retry_count": 0, - "source_url": null - }, - { - "id": "dae85200-e270-44ae-baf9-51ab20b463a5", - "serie_id": "test-series-1", - "serie_name": "Test Anime Series", + "id": "8aa3bf69-c03d-4989-a55d-02f866d58cd8", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { "season": 1, "episode": 2, - "title": "Episode 2" + "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.246296Z", + "added_at": "2025-10-30T19:42:01.943812Z", "started_at": null, "completed_at": null, "progress": null, @@ -153,17 +39,207 @@ "source_url": null }, { - "id": "ee132f7f-9eda-4e0c-b822-400a7901f4ee", - "serie_id": "series-normal", - "serie_name": "Series Normal", + "id": "898eb7fb-db00-4145-b238-367f1618201e", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { "season": 1, + "episode": 3, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.943853Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "6df03270-6ae3-4840-a7ff-68b5f93d3506", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 4, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.943886Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "b3e75c0a-ab96-49a8-9535-f6a14495068f", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 5, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.943917Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "e52a8e4e-6312-4963-9d71-0170240f809b", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 6, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.943947Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "9c09d211-8b9f-406f-9791-4c117c4f3f79", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 7, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.943977Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "915fe96b-0b7c-499b-892b-4f0329582da3", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 8, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944005Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "733a10da-6dad-42cf-b704-d9600289717a", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 9, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944033Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "189406ee-0c60-44c9-9171-ed1c97a9a891", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 10, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944077Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "8ee756c0-3bb9-4f53-a146-680f53e38fec", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 11, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944106Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "15ca7253-ae2e-4d9c-bcf0-8139af247b06", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 12, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944133Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "72f5f99e-a7f0-4314-ba29-3e97a1c9010e", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, "episode": 1, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.319396Z", + "added_at": "2025-10-30T19:42:01.944161Z", "started_at": null, "completed_at": null, "progress": null, @@ -172,17 +248,17 @@ "source_url": null }, { - "id": "b0b8f295-dbf1-4180-82c4-f11261b7246b", - "serie_id": "series-low", - "serie_name": "Series Low", + "id": "1b2ee092-eeed-4ec2-bbdb-521193025be6", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, - "episode": 1, + "season": 2, + "episode": 2, "title": null }, "status": "pending", - "priority": "low", - "added_at": "2025-10-30T19:17:16.321350Z", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944189Z", "started_at": null, "completed_at": null, "progress": null, @@ -191,17 +267,207 @@ "source_url": null }, { - "id": "19c0f081-7b82-42bd-8b49-e09f99b3df43", - "serie_id": "test-series", - "serie_name": "Test Series", + "id": "4f7efd63-d484-491e-a774-c2895a4cd643", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, + "season": 2, + "episode": 3, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944215Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "032b88f3-c213-4148-8f6f-8600eb7099d8", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 4, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944246Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "50df5a01-a27d-4f5b-9916-57224a53ec99", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 5, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944283Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "649e57ab-b03a-449c-aba7-3aeea4cba8da", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 6, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944311Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "78bfa2a4-3791-4676-939e-749c787498e9", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 7, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944339Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "9ee61590-c2b1-43bb-bb13-79615082946c", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 8, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944367Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "58e96572-1114-471d-a00f-0c626c73f4b2", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 9, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944394Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "e3b17f57-dd32-479a-8aab-12b1513073dd", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 10, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944422Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "2fc7ae5a-8d22-4150-9b83-dd35bef7ba4c", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 11, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944450Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "58eb4fae-b54a-4e45-a6ce-279e9840b984", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 12, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944477Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "013d610b-10ad-410d-be0e-27ef8be0c5e0", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, "episode": 1, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.572221Z", + "added_at": "2025-10-30T19:42:01.944505Z", "started_at": null, "completed_at": null, "progress": null, @@ -210,17 +476,226 @@ "source_url": null }, { - "id": "be242bf2-de52-46f1-b406-898a5bc55af9", - "serie_id": "test-series", - "serie_name": "Test Series", + "id": "15fa6d6e-60eb-460f-92d3-7fc9e36e5b8c", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, + "season": 3, + "episode": 2, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944533Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "1df97d61-3d97-40d3-9c23-0d2b0de0329b", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 3, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944559Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "bff1235d-812d-46ac-9608-f464277e224f", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 4, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944590Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "f606397b-ef34-4e60-8580-0491faf33d48", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 5, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944618Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "8b2b5bec-df11-4472-b92f-683c6895f231", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 6, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944644Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "5adb2c51-4a9d-41c7-b449-dbd75dea3c7d", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 7, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944672Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "bd9e959d-07bb-4001-991b-37c33cf9ff0a", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 8, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944699Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "420bb3a9-3ea2-4ab3-9342-fd39f1be21ca", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 9, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944726Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "47730909-e8e6-45f1-b5b8-834905a40f25", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 10, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944753Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "5253e107-1bdf-45ad-bc46-215af06f8ae5", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 11, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944779Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "2aba5952-96ea-481b-b53f-911c147e0c2d", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 12, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.944806Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "4ab012b9-b33b-4b6d-8edd-b5bfbc7845fb", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, "episode": 1, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.682838Z", + "added_at": "2025-10-30T19:42:01.944833Z", "started_at": null, "completed_at": null, "progress": null, @@ -229,17 +704,17 @@ "source_url": null }, { - "id": "d6f4038d-0962-4ecf-999a-2db499e7cc2e", - "serie_id": "invalid-series", - "serie_name": "Invalid Series", + "id": "f3bac2f8-01af-4b91-96c8-858788a28e50", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 99, - "episode": 99, + "season": 4, + "episode": 2, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.748563Z", + "added_at": "2025-10-30T19:42:01.944860Z", "started_at": null, "completed_at": null, "progress": null, @@ -248,17 +723,17 @@ "source_url": null }, { - "id": "5d65f9c8-a530-446e-babd-d689a26d21af", - "serie_id": "test-series", - "serie_name": "Test Series", + "id": "2642f866-0f48-486b-a6e1-9c3b60dfa454", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, - "episode": 1, + "season": 4, + "episode": 3, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.780706Z", + "added_at": "2025-10-30T19:42:01.944887Z", "started_at": null, "completed_at": null, "progress": null, @@ -267,17 +742,17 @@ "source_url": null }, { - "id": "2271d5a2-f9fd-410c-acbd-2c0b03208397", - "serie_id": "series-3", - "serie_name": "Series 3", + "id": "6c457ef9-a9de-4f34-9dd4-d58d61a9c05a", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, - "episode": 1, + "season": 4, + "episode": 4, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.866313Z", + "added_at": "2025-10-30T19:42:01.944914Z", "started_at": null, "completed_at": null, "progress": null, @@ -286,17 +761,17 @@ "source_url": null }, { - "id": "ddd4f9af-1741-46d7-89b9-db3f3533fdc0", - "serie_id": "series-0", - "serie_name": "Series 0", + "id": "5eb8c695-ef64-44ef-9508-b9acd3d7308b", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, - "episode": 1, + "season": 4, + "episode": 5, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.867199Z", + "added_at": "2025-10-30T19:42:01.944941Z", "started_at": null, "completed_at": null, "progress": null, @@ -305,17 +780,17 @@ "source_url": null }, { - "id": "9b800fb7-2cc3-4662-88e5-917da8aa164e", - "serie_id": "series-2", - "serie_name": "Series 2", + "id": "7937162b-813b-4d18-a8df-f90118fcdad9", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, - "episode": 1, + "season": 4, + "episode": 6, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.868013Z", + "added_at": "2025-10-30T19:42:01.944968Z", "started_at": null, "completed_at": null, "progress": null, @@ -324,17 +799,17 @@ "source_url": null }, { - "id": "8defdb03-66d8-44df-8d5d-4e29e9ff5975", - "serie_id": "series-1", - "serie_name": "Series 1", + "id": "36091ee6-763a-4a7b-af3d-faae03cf8aa3", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, - "episode": 1, + "season": 4, + "episode": 7, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.868670Z", + "added_at": "2025-10-30T19:42:01.944994Z", "started_at": null, "completed_at": null, "progress": null, @@ -343,17 +818,17 @@ "source_url": null }, { - "id": "1bbec06b-e99f-4ab8-9836-e061cd46149b", - "serie_id": "series-4", - "serie_name": "Series 4", + "id": "2c74156f-7a8b-4d86-a018-ea70ff0f8920", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, - "episode": 1, + "season": 4, + "episode": 8, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.869328Z", + "added_at": "2025-10-30T19:42:01.945021Z", "started_at": null, "completed_at": null, "progress": null, @@ -362,17 +837,17 @@ "source_url": null }, { - "id": "872bd8c8-b3fd-4432-9a6b-a2612d8961c9", - "serie_id": "persistent-series", - "serie_name": "Persistent Series", + "id": "2ed313c6-13ff-4118-8a3c-0a88f5834430", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, - "episode": 1, + "season": 4, + "episode": 9, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:16.955411Z", + "added_at": "2025-10-30T19:42:01.945053Z", "started_at": null, "completed_at": null, "progress": null, @@ -381,17 +856,17 @@ "source_url": null }, { - "id": "ceee105d-c1e6-4336-be13-886849d642f7", - "serie_id": "ws-series", - "serie_name": "WebSocket Series", + "id": "80ff29a6-129a-4d94-9d44-2fab1993aeb6", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, - "episode": 1, + "season": 4, + "episode": 10, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:17.032768Z", + "added_at": "2025-10-30T19:42:01.945081Z", "started_at": null, "completed_at": null, "progress": null, @@ -400,17 +875,55 @@ "source_url": null }, { - "id": "722f65b0-a323-488f-9345-60ea27b8d5ae", - "serie_id": "pause-test", - "serie_name": "Pause Test Series", + "id": "11e0d511-fc6b-4fe3-8100-d36237dd8108", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", "episode": { - "season": 1, - "episode": 1, + "season": 4, + "episode": 11, "title": null }, "status": "pending", "priority": "normal", - "added_at": "2025-10-30T19:17:17.213711Z", + "added_at": "2025-10-30T19:42:01.945108Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "dc115071-bde0-4b95-999e-26b20fd0edce", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 12, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.945134Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "bfaf6a34-bb10-4607-a189-0d6bda974770", + "serie_id": "highschool-dxd", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 13, + "title": null + }, + "status": "pending", + "priority": "normal", + "added_at": "2025-10-30T19:42:01.945161Z", "started_at": null, "completed_at": null, "progress": null, @@ -421,5 +934,5 @@ ], "active": [], "failed": [], - "timestamp": "2025-10-30T19:17:17.213969+00:00" + "timestamp": "2025-10-30T19:42:01.945400+00:00" } \ No newline at end of file diff --git a/instructions.md b/instructions.md index b0f8b37..58062b2 100644 --- a/instructions.md +++ b/instructions.md @@ -106,8 +106,3 @@ For each task completed: --- # Tasks - -## Setup - -- [x] Redirect to setup if no config is present. -- [x] After setup confirmed redirect to login diff --git a/src/server/api/anime.py b/src/server/api/anime.py index e8da1a7..7a784c2 100644 --- a/src/server/api/anime.py +++ b/src/server/api/anime.py @@ -692,4 +692,3 @@ async def create_anime_test(request: AnimeCreateRequest): ), }, } - diff --git a/src/server/models/download.py b/src/server/models/download.py index b7f1470..8e8ee2d 100644 --- a/src/server/models/download.py +++ b/src/server/models/download.py @@ -10,7 +10,7 @@ from datetime import datetime, timezone from enum import Enum from typing import List, Optional -from pydantic import BaseModel, Field, HttpUrl +from pydantic import BaseModel, Field, HttpUrl, field_validator class DownloadStatus(str, Enum): @@ -167,6 +167,14 @@ class DownloadRequest(BaseModel): priority: DownloadPriority = Field( DownloadPriority.NORMAL, description="Priority level for queue items" ) + + @field_validator('priority', mode='before') + @classmethod + def normalize_priority(cls, v): + """Normalize priority to lowercase for case-insensitive matching.""" + if isinstance(v, str): + return v.lower() + return v class DownloadResponse(BaseModel):