12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- # app.py
- import logging
- import os
- from flask import Flask, render_template, request, redirect, url_for
- from config.config_manager import ConfigManager
- from api.api_clients import APIManager
- from services.download_manager import DownloadManager
- from services.download_service import DownloadService
- from services.nas_sync_service import NasSyncService
- app = Flask(__name__)
- # 获取当前脚本的绝对路径
- current_directory = os.path.dirname(os.path.abspath(__file__))
- # 构建 config.ini 文件的路径
- config_path = os.path.join(current_directory, 'config', 'config.ini')
- config = ConfigManager(config_path)
- api_manager = APIManager(config)
- download_manager = DownloadManager(config.get_value('ARIA2', 'DOCKER_DOWNLOAD_PATH'))
- download_service = DownloadService(api_manager, download_manager)
- nas_sync_service = NasSyncService(api_manager.nas_tools_api)
- @app.before_request
- def ensure_api_login():
- api_manager.login_apis()
- @app.route('/files')
- def files():
- file_list = download_service.fetch_directory_contents()
- return render_template('files.html', file_list=file_list)
- @app.route('/download/<path:filepath>')
- def download(filepath):
- # 这里添加触发下载的逻辑
- return redirect(url_for('files'))
- @app.route('/', methods=['GET', 'POST'])
- def index():
- message = ""
- if request.method == 'POST':
- if request.form.get('action') == 'sync':
- nas_sync_service.sync_directories()
- message = "Directories are being synchronized."
- elif request.form.get('action') == 'download':
- download_urls = download_service.fetch_and_download()
- message = f"Downloading: {len(download_urls)} files."
- return render_template('index.html', message=message)
- return render_template('index.html')
- if __name__ == '__main__':
- logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
- app.run(debug=True, port=5000)
|