# -*- coding: utf-8 -*- import config from .monitor_result_db import MonitorResult import utils.date_format as date_format from .monitor_task_db import MonitorTask def gen_result(task: MonitorTask, title, url, publish_time): """ 构建任务结果对象 :param task: 任务对象 :param title: 标题 :param url: 地址 :param publish_time: 发布时间 :return: """ if isinstance(publish_time, str): timestamp = date_format.timestamp() publish_time = int(date_format.parse(publish_time).timestamp()) module = MonitorResult(title=title, url=url, publish_time=publish_time, is_del=1, keyword=task.keyword, platform=task.platform, gather_time=F"{task.gather_date} {task.setting_time}") return module async def save(results): if config.RESULT_UNIQUE: await save_unique(results) else: model = MonitorResult() await model.bulk_create(results) async def save_unique(results): # 过滤列表中重复的结果 unique_results = {} for result in results: key = (result.platform, result.keyword, result.title) if key not in unique_results: unique_results[key] = result unique_results = list(unique_results.values()) # 过滤数据库中重复的结果 save_results = [] model = MonitorResult() for result in unique_results: exist = await model.filter(platform=result.platform, keyword=result.keyword, title=result.title).exists() if not exist: save_results.append(result) await model.bulk_create(save_results)