fix: download status
This commit is contained in:
parent
cf503c8d77
commit
57da1f1272
@ -1,25 +1,5 @@
|
|||||||
{
|
{
|
||||||
"pending": [
|
"pending": [
|
||||||
{
|
|
||||||
"id": "c1e7e4d3-fabd-4436-86de-89a612562ec7",
|
|
||||||
"serie_id": "highschool-dxd",
|
|
||||||
"serie_folder": "Highschool DxD",
|
|
||||||
"serie_name": "Highschool DxD",
|
|
||||||
"episode": {
|
|
||||||
"season": 1,
|
|
||||||
"episode": 1,
|
|
||||||
"title": null
|
|
||||||
},
|
|
||||||
"status": "pending",
|
|
||||||
"priority": "NORMAL",
|
|
||||||
"added_at": "2025-11-20T17:12:34.485109Z",
|
|
||||||
"started_at": null,
|
|
||||||
"completed_at": null,
|
|
||||||
"progress": null,
|
|
||||||
"error": null,
|
|
||||||
"retry_count": 0,
|
|
||||||
"source_url": null
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "1c4ade94-0a9f-4b75-8ed7-ceb8995c6865",
|
"id": "1c4ade94-0a9f-4b75-8ed7-ceb8995c6865",
|
||||||
"serie_id": "highschool-dxd",
|
"serie_id": "highschool-dxd",
|
||||||
@ -983,5 +963,5 @@
|
|||||||
],
|
],
|
||||||
"active": [],
|
"active": [],
|
||||||
"failed": [],
|
"failed": [],
|
||||||
"timestamp": "2025-11-20T17:12:34.486863+00:00"
|
"timestamp": "2025-11-20T17:54:12.722000+00:00"
|
||||||
}
|
}
|
||||||
@ -33,6 +33,7 @@ class DownloadStatusEventArgs:
|
|||||||
error: Optional[Exception] = None,
|
error: Optional[Exception] = None,
|
||||||
eta: Optional[int] = None,
|
eta: Optional[int] = None,
|
||||||
mbper_sec: Optional[float] = None,
|
mbper_sec: Optional[float] = None,
|
||||||
|
item_id: Optional[str] = None,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Initialize download status event arguments.
|
Initialize download status event arguments.
|
||||||
@ -47,6 +48,7 @@ class DownloadStatusEventArgs:
|
|||||||
error: Optional error if status is "failed"
|
error: Optional error if status is "failed"
|
||||||
eta: Estimated time remaining in seconds
|
eta: Estimated time remaining in seconds
|
||||||
mbper_sec: Download speed in MB/s
|
mbper_sec: Download speed in MB/s
|
||||||
|
item_id: Optional download queue item ID for tracking
|
||||||
"""
|
"""
|
||||||
self.serie_folder = serie_folder
|
self.serie_folder = serie_folder
|
||||||
self.season = season
|
self.season = season
|
||||||
@ -57,6 +59,7 @@ class DownloadStatusEventArgs:
|
|||||||
self.error = error
|
self.error = error
|
||||||
self.eta = eta
|
self.eta = eta
|
||||||
self.mbper_sec = mbper_sec
|
self.mbper_sec = mbper_sec
|
||||||
|
self.item_id = item_id
|
||||||
|
|
||||||
class ScanStatusEventArgs:
|
class ScanStatusEventArgs:
|
||||||
"""Event arguments for scan status events."""
|
"""Event arguments for scan status events."""
|
||||||
@ -203,6 +206,7 @@ class SeriesApp:
|
|||||||
episode: int,
|
episode: int,
|
||||||
key: str,
|
key: str,
|
||||||
language: str = "German Dub",
|
language: str = "German Dub",
|
||||||
|
item_id: Optional[str] = None,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""
|
"""
|
||||||
Download an episode (async).
|
Download an episode (async).
|
||||||
@ -213,6 +217,7 @@ class SeriesApp:
|
|||||||
episode: Episode number
|
episode: Episode number
|
||||||
key: Serie key
|
key: Serie key
|
||||||
language: Language preference
|
language: Language preference
|
||||||
|
item_id: Optional download queue item ID for progress tracking
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
True if download succeeded, False otherwise
|
True if download succeeded, False otherwise
|
||||||
@ -227,6 +232,7 @@ class SeriesApp:
|
|||||||
episode=episode,
|
episode=episode,
|
||||||
status="started",
|
status="started",
|
||||||
message="Download started",
|
message="Download started",
|
||||||
|
item_id=item_id,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -282,6 +288,7 @@ class SeriesApp:
|
|||||||
status="completed",
|
status="completed",
|
||||||
progress=1.0,
|
progress=1.0,
|
||||||
message="Download completed successfully",
|
message="Download completed successfully",
|
||||||
|
item_id=item_id,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@ -297,6 +304,7 @@ class SeriesApp:
|
|||||||
episode=episode,
|
episode=episode,
|
||||||
status="failed",
|
status="failed",
|
||||||
message="Download failed",
|
message="Download failed",
|
||||||
|
item_id=item_id,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -321,6 +329,7 @@ class SeriesApp:
|
|||||||
status="failed",
|
status="failed",
|
||||||
error=e,
|
error=e,
|
||||||
message=f"Download error: {str(e)}",
|
message=f"Download error: {str(e)}",
|
||||||
|
item_id=item_id,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -65,36 +65,45 @@ class AnimeService:
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Use item_id if available, otherwise fallback to constructing ID
|
||||||
|
progress_id = (
|
||||||
|
args.item_id
|
||||||
|
if args.item_id
|
||||||
|
else f"download_{args.serie_folder}_{args.season}_{args.episode}"
|
||||||
|
)
|
||||||
|
|
||||||
# Map SeriesApp download events to progress service
|
# Map SeriesApp download events to progress service
|
||||||
if args.status == "started":
|
if args.status == "started":
|
||||||
loop.create_task(
|
loop.create_task(
|
||||||
self._progress_service.start_progress(
|
self._progress_service.start_progress(
|
||||||
progress_id=f"download_{args.serie_folder}_{args.season}_{args.episode}", # noqa: E501
|
progress_id=progress_id,
|
||||||
progress_type=ProgressType.DOWNLOAD,
|
progress_type=ProgressType.DOWNLOAD,
|
||||||
title=f"Downloading {args.serie_folder}",
|
title=f"Downloading {args.serie_folder}",
|
||||||
message=f"S{args.season:02d}E{args.episode:02d}",
|
message=f"S{args.season:02d}E{args.episode:02d}",
|
||||||
|
metadata={"item_id": args.item_id} if args.item_id else None,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif args.status == "progress":
|
elif args.status == "progress":
|
||||||
loop.create_task(
|
loop.create_task(
|
||||||
self._progress_service.update_progress(
|
self._progress_service.update_progress(
|
||||||
progress_id=f"download_{args.serie_folder}_{args.season}_{args.episode}", # noqa: E501
|
progress_id=progress_id,
|
||||||
current=int(args.progress),
|
current=int(args.progress),
|
||||||
total=100,
|
total=100,
|
||||||
message=args.message or "Downloading...",
|
message=args.message or "Downloading...",
|
||||||
|
metadata={"item_id": args.item_id} if args.item_id else None,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif args.status == "completed":
|
elif args.status == "completed":
|
||||||
loop.create_task(
|
loop.create_task(
|
||||||
self._progress_service.complete_progress(
|
self._progress_service.complete_progress(
|
||||||
progress_id=f"download_{args.serie_folder}_{args.season}_{args.episode}", # noqa: E501
|
progress_id=progress_id,
|
||||||
message="Download completed",
|
message="Download completed",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif args.status == "failed":
|
elif args.status == "failed":
|
||||||
loop.create_task(
|
loop.create_task(
|
||||||
self._progress_service.fail_progress(
|
self._progress_service.fail_progress(
|
||||||
progress_id=f"download_{args.serie_folder}_{args.season}_{args.episode}", # noqa: E501
|
progress_id=progress_id,
|
||||||
error_message=args.message or str(args.error),
|
error_message=args.message or str(args.error),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@ -236,12 +236,10 @@ class QueueManager {
|
|||||||
try {
|
try {
|
||||||
const response = await this.makeAuthenticatedRequest('/api/queue/status');
|
const response = await this.makeAuthenticatedRequest('/api/queue/status');
|
||||||
if (!response) {
|
if (!response) {
|
||||||
console.warn('No response from queue status API');
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
console.log('Raw API response:', data);
|
|
||||||
|
|
||||||
// API returns nested structure with 'status' and 'statistics'
|
// API returns nested structure with 'status' and 'statistics'
|
||||||
// Transform it to the expected flat structure
|
// Transform it to the expected flat structure
|
||||||
@ -250,9 +248,6 @@ class QueueManager {
|
|||||||
statistics: data.statistics
|
statistics: data.statistics
|
||||||
};
|
};
|
||||||
|
|
||||||
console.log('Transformed queue data:', queueData);
|
|
||||||
console.log('Pending queue length:', queueData.pending_queue?.length);
|
|
||||||
|
|
||||||
this.updateQueueDisplay(queueData);
|
this.updateQueueDisplay(queueData);
|
||||||
|
|
||||||
// Process any pending progress updates after queue is loaded
|
// Process any pending progress updates after queue is loaded
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user