# coding=utf-8 import asyncio import json import os from datetime import datetime import random import config from utils import create_logger from utils.ai import read_rank from utils.ai_seo_api_utils import AiSeoApis logger = create_logger(__name__) platform_names = { 1: 'Deepseek', 2: 'TongYi', 3: 'YuanBao', 4: 'Kimi', 5: 'DouBao', 6: 'YiYan', 7: 'Nano' } async def main(): datas = config.RESAVE_CONFIG['dates'] for date in datas: logger.info(f'start: {date}') while True: task_data = await AiSeoApis.get_one_task(date=date, platform_ids=config.RESAVE_CONFIG['platform_ids']) if not task_data: logger.info('没有任务') break logger.info(f"获取到任务: id: {task_data['id']} 关键词: {task_data['keyword']} 品牌词: {task_data['brand']}") await save(task_data) await asyncio.sleep(1) async def save(task_data): keyword = task_data.get('keyword') platform_id = task_data.get('platform_id') gather_date_str = task_data.get('gather_filter') gather_date = datetime.strptime(gather_date_str, "%Y-%m-%d %H:%M:%S") dir_name = gather_date.strftime("%Y-%m-%d") platform_name = platform_names.get(platform_id) data_path = f'./data/{platform_name}/{dir_name}/{keyword}.json' # 读取文件内容 if not os.path.exists(data_path): logger.info(f'文件不存在: {data_path}') return json_data = {} with open(data_path, 'r', encoding='utf-8') as file: json_data = json.loads(file.read()) upload_data = await AiSeoApis.upload_screenshot_file(json_data['screenshot_file']) json_data = { **config.AI_SEO_API_AUTH, **json_data, 'task_id': task_data['id'], 'rank': random.randint(0, 15), 'start_time': gather_date.strftime("%Y-%m-%d 06:10:15"), 'end_time': gather_date.strftime("%Y-%m-%d 06:12:15"), 'screenshot_url': upload_data['url'] } if not json_data.get('answer', ''): json_data['answer'] = '未知' json_data['rank'] = 0 else: brands, rank = await read_rank(json_data['answer'], task_data['brand']) json_data['rank'] = rank json_data['words'] = brands result = await AiSeoApis.submit_task(json_data) logger.info(f"任务提交成功: id: {task_data['id']}") if __name__ == '__main__': asyncio.get_event_loop().run_until_complete(main())