File size: 1,174 Bytes
b610d23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""Core data models for NASA Solar Image Downloader."""

from dataclasses import dataclass
from datetime import datetime
from pathlib import Path
from typing import Optional, Tuple
from enum import Enum


class TaskStatus(Enum):
    """Status of download tasks."""
    PENDING = "pending"
    DOWNLOADING = "downloading"
    COMPLETED = "completed"
    FAILED = "failed"


@dataclass
class ImageMetadata:
    """Metadata for a NASA solar image."""
    date: datetime
    time_sequence: str  # HHMMSS format
    filename: str
    local_path: Path
    file_size: int
    download_timestamp: datetime
    url: str


@dataclass
class DownloadTask:
    """Represents a download task for an image."""
    url: str
    target_path: Path
    retry_count: int = 0
    status: TaskStatus = TaskStatus.PENDING
    error_message: Optional[str] = None


@dataclass
class PlaybackState:
    """Current state of video playback interface."""
    current_frame: int = 0
    total_frames: int = 0
    is_playing: bool = False
    playback_speed: float = 1.0  # frames per second
    selected_date_range: Optional[Tuple[datetime, datetime]] = None