12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # download_service.py
- import os
- import time
- from services.download_manager import DownloadManager
- class DownloadService:
- def __init__(self, api_manager, parent_dir: str):
- self.parent_dir = parent_dir
- self.api_manager = api_manager
- self.download_manager = DownloadManager()
- def fetch_directory_contents(self):
- remote_json_path = self.api_manager.alist_api.save_directory_contents(
- self.api_manager.config.get_value('REMOTE_ALIST', 'DOWNLOAD_PATH'),
- self.api_manager.config.get_value('HOME_ALIST', 'DOWNLOAD_PATH'),
- self.api_manager.config.get_value('HOME_ALIST', 'SCY_COPY_PATH'),
- self.api_manager.config.get_value('HOME_ALIST', 'DES_COPY_PATH'),
- self.parent_dir)
- # 检查每个文件是否已下载,并添加下载状态信息
- for item in remote_json_path:
- item['is_downloaded'] = self.download_manager.is_downloaded(item['name'])
- return remote_json_path
- def fetch_and_download(self):
- remote_json_path = self.api_manager.alist_api.save_directory_contents(
- self.api_manager.config.get_value('REMOTE_ALIST', 'DOWNLOAD_PATH'),
- self.api_manager.config.get_value('HOME_ALIST', 'DOWNLOAD_PATH'),
- self.api_manager.config.get_value('HOME_ALIST', 'SCY_COPY_PATH'),
- self.api_manager.config.get_value('HOME_ALIST', 'DES_COPY_PATH'),
- self.parent_dir
- )
- download_url = []
- for home_item in remote_json_path:
- if not home_item['is_dir']:
- if not self.download_manager.is_downloaded(home_item['name']):
- name = home_item['name']
- parent_folder_name = home_item['parent_folder_name']
- download_path = self.api_manager.config.get_value('ARIA2',
- 'DOCKER_DOWNLOAD_PATH') + "/" + parent_folder_name
- cent_data = self.api_manager.alist_api.get_file_or_directory_info(home_item['path'])
- if cent_data['code'] != 200:
- break
- dow_time = {
- 'raw_url': cent_data['data']['raw_url'],
- 'download_path': download_path,
- 'name': name,
- }
- download_url.append(dow_time)
- self.download_manager.record_download(name)
- return download_url
|