from decorator.singleton import singleton from utils.date_utils import DateUtils # 引入数据库操作相关 from db.repository.config_rep import ConfigRepository @singleton class Config(object): """项目配置管理类""" def __init__(self) -> None: self.c_rep = ConfigRepository() # 数据爬取任务相关配置参数 self.request_config = None self.login_info = None def check_request_config(self) -> bool: """检查当前数据库中的请求配置是否更新""" new_request_config = self.c_rep.read_request_config() if (self.request_config == None) or (new_request_config.version > self.request_config.version): self.request_config = new_request_config return True else: return False def get_login_info(self): """获取登录参数""" request_cookie_valid_duration = 6 if self.request_config: request_cookie_valid_duration = self.request_config.request_cookie_valid_duration if self.login_info == None: self.login_info = self.c_rep.get_login_info() cookie = self.login_info.cookie timestamp = self.login_info.cookie_timestamp account = self.login_info.user_name password = self.login_info.password diff_hours = DateUtils.time_distance(timestamp, type="hour") if diff_hours > request_cookie_valid_duration: cookie = None return account, password, cookie def update_cookie(self, cookies: str): """更新登录cookie""" self.login_info.cookie = cookies self.login_info.cookie_timestamp = DateUtils.now() self.c_rep.update_login_info(self.login_info)