'commit'
This commit is contained in:
48
DouYin/dy-downloader/core/downloader_factory.py
Normal file
48
DouYin/dy-downloader/core/downloader_factory.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from typing import Dict, Any, Optional
|
||||
from core.downloader_base import BaseDownloader
|
||||
from core.video_downloader import VideoDownloader
|
||||
from core.user_downloader import UserDownloader
|
||||
from config import ConfigLoader
|
||||
from storage import Database, FileManager
|
||||
from auth import CookieManager
|
||||
from control import QueueManager, RateLimiter, RetryHandler
|
||||
from core.api_client import DouyinAPIClient
|
||||
from utils.logger import setup_logger
|
||||
|
||||
logger = setup_logger('DownloaderFactory')
|
||||
|
||||
|
||||
class DownloaderFactory:
|
||||
@staticmethod
|
||||
def create(
|
||||
url_type: str,
|
||||
config: ConfigLoader,
|
||||
api_client: DouyinAPIClient,
|
||||
file_manager: FileManager,
|
||||
cookie_manager: CookieManager,
|
||||
database: Optional[Database] = None,
|
||||
rate_limiter: Optional[RateLimiter] = None,
|
||||
retry_handler: Optional[RetryHandler] = None,
|
||||
queue_manager: Optional[QueueManager] = None,
|
||||
) -> Optional[BaseDownloader]:
|
||||
|
||||
common_args = {
|
||||
'config': config,
|
||||
'api_client': api_client,
|
||||
'file_manager': file_manager,
|
||||
'cookie_manager': cookie_manager,
|
||||
'database': database,
|
||||
'rate_limiter': rate_limiter,
|
||||
'retry_handler': retry_handler,
|
||||
'queue_manager': queue_manager,
|
||||
}
|
||||
|
||||
if url_type == 'video':
|
||||
return VideoDownloader(**common_args)
|
||||
elif url_type == 'user':
|
||||
return UserDownloader(**common_args)
|
||||
elif url_type == 'gallery':
|
||||
return VideoDownloader(**common_args)
|
||||
else:
|
||||
logger.error(f"Unsupported URL type: {url_type}")
|
||||
return None
|
||||
Reference in New Issue
Block a user