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