From 57c30a015656db913466e8059d17276dc51c375d Mon Sep 17 00:00:00 2001 From: Lukas Date: Sat, 1 Nov 2025 19:03:30 +0100 Subject: [PATCH] call back logs --- .vscode/launch.json | 7 - data/download_queue.json | 932 +++++++++++++++++++++++- src/core/SeriesApp.py | 9 +- src/server/services/download_service.py | 8 + 4 files changed, 942 insertions(+), 14 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index b82a0db..6989bff 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,7 +8,6 @@ "program": "${workspaceFolder}/src/server/fastapi_app.py", "console": "integratedTerminal", "justMyCode": true, - "python": "C:\\Users\\lukas\\anaconda3\\envs\\AniWorld\\python.exe", "env": { "PYTHONPATH": "${workspaceFolder}/src:${workspaceFolder}", "JWT_SECRET_KEY": "your-secret-key-here-debug", @@ -30,7 +29,6 @@ "type": "debugpy", "request": "launch", "module": "uvicorn", - "python": "C:\\Users\\lukas\\anaconda3\\envs\\AniWorld\\python.exe", "args": [ "src.server.fastapi_app:app", "--host", @@ -61,7 +59,6 @@ "program": "${workspaceFolder}/src/cli/Main.py", "console": "integratedTerminal", "justMyCode": true, - "python": "C:\\Users\\lukas\\anaconda3\\envs\\AniWorld\\python.exe", "env": { "PYTHONPATH": "${workspaceFolder}/src:${workspaceFolder}", "LOG_LEVEL": "DEBUG", @@ -79,7 +76,6 @@ "type": "debugpy", "request": "launch", "module": "pytest", - "python": "C:\\Users\\lukas\\anaconda3\\envs\\AniWorld\\python.exe", "args": [ "${workspaceFolder}/tests", "-v", @@ -105,7 +101,6 @@ "type": "debugpy", "request": "launch", "module": "pytest", - "python": "C:\\Users\\lukas\\anaconda3\\envs\\AniWorld\\python.exe", "args": [ "${workspaceFolder}/tests/unit", "-v", @@ -126,7 +121,6 @@ "type": "debugpy", "request": "launch", "module": "pytest", - "python": "C:\\Users\\lukas\\anaconda3\\envs\\AniWorld\\python.exe", "args": [ "${workspaceFolder}/tests/integration", "-v", @@ -150,7 +144,6 @@ "type": "debugpy", "request": "launch", "module": "uvicorn", - "python": "C:\\Users\\lukas\\anaconda3\\envs\\AniWorld\\python.exe", "args": [ "src.server.fastapi_app:app", "--host", diff --git a/data/download_queue.json b/data/download_queue.json index c9d97cc..e75f079 100644 --- a/data/download_queue.json +++ b/data/download_queue.json @@ -1,10 +1,30 @@ { "pending": [ { - "id": "67d98e0a-ce51-4768-854d-33c565d9bf17", - "serie_id": "beheneko-the-elf-girls-cat-is-secretly-an-s-ranked-monster", - "serie_folder": "beheneko the elf girls cat is secretly an s ranked monster (2025) (2025)", - "serie_name": "beheneko the elf girls cat is secretly an s ranked monster (2025) (2025)", + "id": "5b0561c2-7a15-4ca8-8e7e-6216ece88ed9", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 3, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472293Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "d1df1aae-5c42-4fdd-89eb-ebf0f3616834", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", "episode": { "season": 1, "episode": 4, @@ -12,7 +32,907 @@ }, "status": "pending", "priority": "NORMAL", - "added_at": "2025-11-01T17:20:49.339662Z", + "added_at": "2025-11-01T17:50:20.472324Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "9c3cee02-ce8d-4d6e-9f55-72f171b7c062", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 5, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472353Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "118189fe-f600-45de-a51a-5a4b96b07f49", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 6, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472386Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "1ee2224c-24bf-46ea-b577-30d04ce8ecb8", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 7, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472425Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "40f88e7f-912d-431f-b840-e960851e9fdf", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 8, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472460Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "3e9a2239-5a5f-4c3a-9d8f-b4d3172e17aa", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 9, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472495Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "6a7f16e1-8621-402f-8c32-bed2db9e9749", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 10, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472529Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "c91d509d-66ed-4846-a61a-0d0e38034213", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 11, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472562Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "eaf73ac6-d8fd-4714-bb4b-e6c7875a5bee", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 1, + "episode": 12, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472595Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "7b57ccf5-4d07-48ea-9306-41335a79eb8e", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 1, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472629Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "67322d2f-b376-4111-9e44-4a5367f1e5c6", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 2, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472662Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "827e02b4-6599-4fa2-8260-8493d098858f", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 3, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472695Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "bf7a53ac-c45a-4d05-aa13-9da48f83093d", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 4, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472727Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "956fd623-91c5-408f-9173-73af645dfac9", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 5, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472759Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "0cf66d7f-0158-43f6-af13-a06d1302569b", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 6, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472793Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "9f36b72c-d169-44ff-9c76-b9c326486546", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 7, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472825Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "f84e96e2-c41c-49f6-937a-dc6ef543b194", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 8, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472874Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "b5718a39-a4a8-4ae5-b033-f7ac21444519", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 9, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472909Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "2c9a0f29-f46a-4a50-9c60-38f98d5042d0", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 10, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472942Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "bb566a05-4308-4dd2-a4a8-a330facc7861", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 11, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.472975Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "e00f909b-2614-4552-8774-984b230c962b", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 2, + "episode": 12, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473014Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "ad91d8eb-c655-463c-88ef-5f0cc501b937", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 1, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473050Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "af7429fa-2bd5-43b5-9ff1-a98ee6a80b0b", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 2, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473084Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "2082cb55-85f4-4fb9-8a22-398c566df455", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 3, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473117Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "d7110004-a6a9-4f00-be8c-96b7771a585f", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 4, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473150Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "21499a37-0ac0-497a-aebb-f61cb7b873eb", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 5, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473184Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "1b523ae3-14e2-4147-ac9c-0fddebb35827", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 6, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473217Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "b8bf978b-7f8d-4aeb-930b-fb55fd052632", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 7, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473250Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "3541e47d-4cc8-4f81-ad72-3022a978b308", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 8, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473284Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "2ee4a535-31d2-4318-be84-2cdb0b853384", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 9, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473317Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "15db1133-a9c6-4869-9618-915bbf09c40c", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 10, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473350Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "d0acdf2f-9563-4c09-8995-6da7ba76eeb5", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 11, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473384Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "9a4da2ad-46e8-4df2-aa5d-7cdea6a173fa", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 3, + "episode": 12, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473416Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "8b5b8a10-4fa0-4a0b-8edc-cc9be0a742d0", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 1, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473451Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "25e29c4b-f407-4d8b-b2ac-e4f39533e183", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 2, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473483Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "a65e100c-1060-48e2-b065-979a9f0ae647", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 3, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473517Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "a731f0f0-9ac0-4ec5-ac51-bad3f285592d", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 4, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473553Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "db7c028c-a105-4592-aa2b-df76c11075b7", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 5, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473587Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "e49a8143-c0af-480b-915c-1bd77e99572c", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 6, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473621Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "c68b02a7-1bca-4403-8ee4-81fd935c7d74", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 7, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473655Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "dfaef101-ab10-46cc-b4cf-d1cde0b1382a", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 8, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473690Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "e6ffbe50-00e6-4710-8fc3-41858baab084", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 9, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473725Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "6dd00e02-269d-41a4-8318-037c451d1282", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 10, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473766Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "a72414f0-a1db-46fb-9292-f776cd732c3f", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 11, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473802Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "1a3541b5-63db-417b-9683-24ed2ee9325f", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 12, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473837Z", + "started_at": null, + "completed_at": null, + "progress": null, + "error": null, + "retry_count": 0, + "source_url": null + }, + { + "id": "7a697f8b-f48a-4f8e-8c1d-457b1a802db5", + "serie_id": "highschool-dxd", + "serie_folder": "Highschool DxD", + "serie_name": "Highschool DxD", + "episode": { + "season": 4, + "episode": 13, + "title": null + }, + "status": "pending", + "priority": "NORMAL", + "added_at": "2025-11-01T17:50:20.473878Z", "started_at": null, "completed_at": null, "progress": null, @@ -23,5 +943,5 @@ ], "active": [], "failed": [], - "timestamp": "2025-11-01T17:42:05.983160+00:00" + "timestamp": "2025-11-01T17:55:22.905727+00:00" } \ No newline at end of file diff --git a/src/core/SeriesApp.py b/src/core/SeriesApp.py index 52ff38e..037d5eb 100644 --- a/src/core/SeriesApp.py +++ b/src/core/SeriesApp.py @@ -326,7 +326,14 @@ class SeriesApp: # (dict with detailed progress info) if callback: logger.debug(f"Calling progress callback: {web_progress_dict}") - callback(web_progress_dict) + try: + callback(web_progress_dict) + logger.debug("Progress callback executed successfully") + except Exception as e: + logger.error( + f"Error in progress callback: {e}", + exc_info=True + ) # Propagate progress into the legacy callback chain so # existing UI surfaces continue to receive updates without diff --git a/src/server/services/download_service.py b/src/server/services/download_service.py index ee716d3..61aef92 100644 --- a/src/server/services/download_service.py +++ b/src/server/services/download_service.py @@ -698,6 +698,10 @@ class DownloadService: Returns: Callback function for progress updates """ + logger.info( + f"Creating progress callback for item {item.id}" + ) + def progress_callback(progress_data: dict) -> None: """Update progress and broadcast to clients.""" try: @@ -824,6 +828,10 @@ class DownloadService: # Create progress callback progress_callback = self._create_progress_callback(item) + logger.info( + f"Passing callback {progress_callback} to anime_service for " + f"item {item.id}" + ) # Execute download via anime service # Use serie_folder if available, otherwise fall back to serie_id