import asyncio from loguru import logger from core.config import Config from core.database import DatabaseManager from core.logger import setup_logger from upload_accounts import AccountUploader class ReuploadAll: def __init__(self): self.config = Config.from_yaml() self.logger = setup_logger(self.config) self.db_manager = DatabaseManager(self.config) self.uploader = AccountUploader() async def initialize(self): """初始化数据库和上传器""" await self.db_manager.initialize() await self.uploader.initialize() async def cleanup(self): """清理资源""" await self.db_manager.cleanup() await self.uploader.cleanup() async def reset_all_extracted(self): """重置所有账号的提取状态""" try: async with self.db_manager.get_connection() as conn: await conn.execute( """ UPDATE email_accounts SET extracted = 0, updated_at = CURRENT_TIMESTAMP WHERE status = 'success' AND sold = 1 """ ) await conn.commit() self.logger.success("已重置所有账号的提取状态") except Exception as e: self.logger.error(f"重置提取状态时出错: {e}") async def process(self): """处理重新上传所有账号""" try: # 重置所有账号的提取状态 await self.reset_all_extracted() # 使用上传器处理所有账号 processed = await self.uploader.process_accounts() self.logger.success(f"重新上传完成,共处理 {processed} 个账号") except Exception as e: self.logger.error(f"重新上传过程中出错: {e}") finally: await self.cleanup() async def main(): reuploader = ReuploadAll() await reuploader.initialize() await reuploader.process() if __name__ == "__main__": asyncio.run(main())