home1019
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
import time
|
||||
import json
|
||||
from typing import Dict, List, Any
|
||||
from config import ConfigManager
|
||||
from login_manager import LoginManager
|
||||
@@ -17,7 +16,6 @@ class AutoLoginApp:
|
||||
"""
|
||||
self.config_manager = ConfigManager()
|
||||
self.login_manager = LoginManager()
|
||||
|
||||
|
||||
def run(self):
|
||||
"""
|
||||
@@ -25,83 +23,36 @@ class AutoLoginApp:
|
||||
"""
|
||||
logger.info("===== 自动登录应用启动 =====")
|
||||
|
||||
# 加载配置
|
||||
config = self.config_manager.load_config()
|
||||
sites = config.get('sites', [])
|
||||
# 直接调用LoginManager的run函数处理所有网站
|
||||
self.login_manager.run()
|
||||
|
||||
if not sites:
|
||||
logger.warning("配置中没有设置任何网站,使用默认示例网站")
|
||||
# 添加默认示例网站
|
||||
sites = [
|
||||
{'name': '百度', 'url': 'https://www.baidu.com'},
|
||||
{'name': '新浪', 'url': 'https://www.sina.com.cn'}
|
||||
]
|
||||
# 从配置管理器直接获取duration参数
|
||||
duration = self.login_manager.get_duration()
|
||||
|
||||
# 处理每个网站
|
||||
for site in sites:
|
||||
site_name = site.get('name', '未知网站')
|
||||
site_url = site.get('url', '')
|
||||
|
||||
if not site_url:
|
||||
logger.warning(f"网站 '{site_name}' 的URL为空,跳过")
|
||||
continue
|
||||
|
||||
logger.info(f"处理网站: {site_name} ({site_url})")
|
||||
|
||||
# 获取cookies(从配置中)
|
||||
cookies = []
|
||||
if 'cookies' in site:
|
||||
config_cookies = site['cookies']
|
||||
# 确保cookies是列表格式
|
||||
if isinstance(config_cookies, dict):
|
||||
# 直接将字典转换为列表格式
|
||||
cookies = []
|
||||
for key, value in config_cookies.items():
|
||||
cookies.append({
|
||||
'name': key,
|
||||
'value': value,
|
||||
'domain': '',
|
||||
'path': '/',
|
||||
'expires': 0,
|
||||
'secure': False,
|
||||
'httpOnly': False
|
||||
})
|
||||
else:
|
||||
cookies = config_cookies
|
||||
logger.info(f"使用配置文件中的 {len(cookies)} 条cookies记录")
|
||||
|
||||
# 登录网站
|
||||
login_success = self.login_manager.login(site_url, cookies)
|
||||
|
||||
if login_success:
|
||||
logger.info(f"登录网站 '{site_name}' 成功")
|
||||
|
||||
# 保持登录状态一段时间,从配置中获取duration值,默认30秒
|
||||
duration = site.get('duration', 30)
|
||||
self.login_manager.maintain_login(duration=duration) # 保持{duration}秒
|
||||
|
||||
# 保持登录状态后获取并更新到配置中的cookies
|
||||
new_cookies = self.login_manager.get_cookies()
|
||||
if new_cookies:
|
||||
# 更新当前site对象的cookies
|
||||
site['cookies'] = new_cookies
|
||||
logger.info(f"已更新网站 '{site_name}' 的cookies到配置中,共 {len(new_cookies)} 条记录")
|
||||
|
||||
else:
|
||||
logger.error(f"登录网站 '{site_name}' 失败")
|
||||
|
||||
# 关闭当前浏览器页面,准备下一个网站
|
||||
self.login_manager.close()
|
||||
time.sleep(2) # 间隔2秒再处理下一个网站
|
||||
logger.info(f"延时 {duration} 秒后获取所有页面cookies")
|
||||
time.sleep(duration)
|
||||
|
||||
# 保存更新后的配置到config.json
|
||||
# 调用save_cookies函数获取并保存所有网站的cookies到config.json
|
||||
try:
|
||||
self.config_manager.save_config(config)
|
||||
logger.info("已将更新后的cookies保存到config.json文件中")
|
||||
all_cookies = self.login_manager.save_cookies()
|
||||
logger.info(f"成功获取并保存 {len(all_cookies)} 个网站的cookies到config.json文件")
|
||||
except Exception as e:
|
||||
logger.error(f"保存配置文件时发生错误: {e}")
|
||||
logger.error(f"获取或保存cookies时发生错误: {e}")
|
||||
|
||||
logger.info("===== 所有网站处理完成 =====")
|
||||
|
||||
# 从配置管理器直接获取AutoQuit配置并关闭浏览器
|
||||
auto_quit = self.config_manager.load_config().get('AutoQuit', False)
|
||||
if auto_quit:
|
||||
try:
|
||||
self.login_manager.close(True) # 直接传入True表示关闭浏览器
|
||||
logger.info("已关闭浏览器")
|
||||
except Exception as e:
|
||||
logger.error(f"关闭浏览器时发生错误: {e}")
|
||||
else:
|
||||
logger.info("浏览器保持打开状态")
|
||||
|
||||
# 不再需要返回auto_quit值,因为它已经在方法内部使用
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = AutoLoginApp()
|
||||
@@ -110,7 +61,4 @@ if __name__ == "__main__":
|
||||
except KeyboardInterrupt:
|
||||
logger.info("程序被用户中断")
|
||||
except Exception as e:
|
||||
logger.error(f"程序运行时发生错误: {e}")
|
||||
finally:
|
||||
# 确保关闭浏览器
|
||||
app.login_manager.close()
|
||||
logger.error(f"程序运行时发生错误: {e}")
|
||||
Reference in New Issue
Block a user