fix: download status
This commit is contained in:
@@ -33,6 +33,7 @@ class DownloadStatusEventArgs:
|
||||
error: Optional[Exception] = None,
|
||||
eta: Optional[int] = None,
|
||||
mbper_sec: Optional[float] = None,
|
||||
item_id: Optional[str] = None,
|
||||
):
|
||||
"""
|
||||
Initialize download status event arguments.
|
||||
@@ -47,6 +48,7 @@ class DownloadStatusEventArgs:
|
||||
error: Optional error if status is "failed"
|
||||
eta: Estimated time remaining in seconds
|
||||
mbper_sec: Download speed in MB/s
|
||||
item_id: Optional download queue item ID for tracking
|
||||
"""
|
||||
self.serie_folder = serie_folder
|
||||
self.season = season
|
||||
@@ -57,6 +59,7 @@ class DownloadStatusEventArgs:
|
||||
self.error = error
|
||||
self.eta = eta
|
||||
self.mbper_sec = mbper_sec
|
||||
self.item_id = item_id
|
||||
|
||||
class ScanStatusEventArgs:
|
||||
"""Event arguments for scan status events."""
|
||||
@@ -203,6 +206,7 @@ class SeriesApp:
|
||||
episode: int,
|
||||
key: str,
|
||||
language: str = "German Dub",
|
||||
item_id: Optional[str] = None,
|
||||
) -> bool:
|
||||
"""
|
||||
Download an episode (async).
|
||||
@@ -213,6 +217,7 @@ class SeriesApp:
|
||||
episode: Episode number
|
||||
key: Serie key
|
||||
language: Language preference
|
||||
item_id: Optional download queue item ID for progress tracking
|
||||
|
||||
Returns:
|
||||
True if download succeeded, False otherwise
|
||||
@@ -227,6 +232,7 @@ class SeriesApp:
|
||||
episode=episode,
|
||||
status="started",
|
||||
message="Download started",
|
||||
item_id=item_id,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -282,6 +288,7 @@ class SeriesApp:
|
||||
status="completed",
|
||||
progress=1.0,
|
||||
message="Download completed successfully",
|
||||
item_id=item_id,
|
||||
)
|
||||
)
|
||||
else:
|
||||
@@ -297,6 +304,7 @@ class SeriesApp:
|
||||
episode=episode,
|
||||
status="failed",
|
||||
message="Download failed",
|
||||
item_id=item_id,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -321,6 +329,7 @@ class SeriesApp:
|
||||
status="failed",
|
||||
error=e,
|
||||
message=f"Download error: {str(e)}",
|
||||
item_id=item_id,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -65,36 +65,45 @@ class AnimeService:
|
||||
)
|
||||
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
|
||||
if args.status == "started":
|
||||
loop.create_task(
|
||||
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,
|
||||
title=f"Downloading {args.serie_folder}",
|
||||
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":
|
||||
loop.create_task(
|
||||
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),
|
||||
total=100,
|
||||
message=args.message or "Downloading...",
|
||||
metadata={"item_id": args.item_id} if args.item_id else None,
|
||||
)
|
||||
)
|
||||
elif args.status == "completed":
|
||||
loop.create_task(
|
||||
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",
|
||||
)
|
||||
)
|
||||
elif args.status == "failed":
|
||||
loop.create_task(
|
||||
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),
|
||||
)
|
||||
)
|
||||
|
||||
@@ -236,12 +236,10 @@ class QueueManager {
|
||||
try {
|
||||
const response = await this.makeAuthenticatedRequest('/api/queue/status');
|
||||
if (!response) {
|
||||
console.warn('No response from queue status API');
|
||||
return;
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
console.log('Raw API response:', data);
|
||||
|
||||
// API returns nested structure with 'status' and 'statistics'
|
||||
// Transform it to the expected flat structure
|
||||
@@ -250,9 +248,6 @@ class QueueManager {
|
||||
statistics: data.statistics
|
||||
};
|
||||
|
||||
console.log('Transformed queue data:', queueData);
|
||||
console.log('Pending queue length:', queueData.pending_queue?.length);
|
||||
|
||||
this.updateQueueDisplay(queueData);
|
||||
|
||||
// Process any pending progress updates after queue is loaded
|
||||
|
||||
Reference in New Issue
Block a user