Release v0.1.0: GDM Refactor, Rate Limit, Metallic UI
This commit is contained in:
77
downloader/base.py
Normal file
77
downloader/base.py
Normal file
@@ -0,0 +1,77 @@
|
||||
"""
|
||||
다운로더 베이스 클래스
|
||||
"""
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Dict, Any, Optional, Callable
|
||||
|
||||
|
||||
class BaseDownloader(ABC):
|
||||
"""모든 다운로더의 추상 베이스 클래스"""
|
||||
|
||||
def __init__(self):
|
||||
self._cancelled = False
|
||||
self._paused = False
|
||||
|
||||
@abstractmethod
|
||||
def download(
|
||||
self,
|
||||
url: str,
|
||||
save_path: str,
|
||||
filename: Optional[str] = None,
|
||||
progress_callback: Optional[Callable] = None,
|
||||
**options
|
||||
) -> Dict[str, Any]:
|
||||
"""
|
||||
다운로드 실행
|
||||
|
||||
Args:
|
||||
url: 다운로드 URL
|
||||
save_path: 저장 경로
|
||||
filename: 파일명 (None이면 자동 감지)
|
||||
progress_callback: 진행률 콜백 (progress, speed, eta)
|
||||
**options: 추가 옵션
|
||||
|
||||
Returns:
|
||||
{
|
||||
'success': bool,
|
||||
'filepath': str, # 완료된 파일 경로
|
||||
'error': str, # 에러 메시지 (실패 시)
|
||||
}
|
||||
"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_info(self, url: str) -> Dict[str, Any]:
|
||||
"""
|
||||
URL 정보 추출 (메타데이터)
|
||||
|
||||
Returns:
|
||||
{
|
||||
'title': str,
|
||||
'thumbnail': str,
|
||||
'duration': int,
|
||||
'formats': list,
|
||||
...
|
||||
}
|
||||
"""
|
||||
pass
|
||||
|
||||
def cancel(self):
|
||||
"""다운로드 취소"""
|
||||
self._cancelled = True
|
||||
|
||||
def pause(self):
|
||||
"""다운로드 일시정지"""
|
||||
self._paused = True
|
||||
|
||||
def resume(self):
|
||||
"""다운로드 재개"""
|
||||
self._paused = False
|
||||
|
||||
@property
|
||||
def is_cancelled(self) -> bool:
|
||||
return self._cancelled
|
||||
|
||||
@property
|
||||
def is_paused(self) -> bool:
|
||||
return self._paused
|
||||
Reference in New Issue
Block a user