You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.4 KiB

# 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())