更新今日的数据刷新
This commit is contained in:
5840
2025年12月1日184033.txt
Normal file
5840
2025年12月1日184033.txt
Normal file
File diff suppressed because it is too large
Load Diff
BIN
debug_maker_link_failure.png
Normal file
BIN
debug_maker_link_failure.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 403 KiB |
File diff suppressed because it is too large
Load Diff
BIN
modal_window_debug.png
Normal file
BIN
modal_window_debug.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 76 KiB |
@@ -101,19 +101,18 @@ class IntegratedProductSystem:
|
||||
)
|
||||
''')
|
||||
|
||||
# 创建分析结果表(来自product_ai_analysis.py)
|
||||
# 移除了product_intro字段,避免与ai_response内容重复
|
||||
# 创建分析结果表
|
||||
# 根据最新数据库结构更新
|
||||
cursor.execute('''
|
||||
CREATE TABLE IF NOT EXISTS product_analysis (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
original_id INTEGER,
|
||||
original_name TEXT,
|
||||
product_name TEXT,
|
||||
product_intro TEXT,
|
||||
development_difficulty TEXT,
|
||||
difficulty_score INTEGER,
|
||||
ai_response TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (original_id) REFERENCES products (id)
|
||||
difficulty_score INTEGER,
|
||||
product_link TEXT
|
||||
)
|
||||
''')
|
||||
|
||||
@@ -328,17 +327,16 @@ class IntegratedProductSystem:
|
||||
# 使用/分割响应内容
|
||||
parts = response.split('/')
|
||||
|
||||
product_name = ""
|
||||
product_intro = ""
|
||||
difficulty = ""
|
||||
difficulty_score = None
|
||||
|
||||
if len(parts) >= 3:
|
||||
product_name = parts[0].strip()
|
||||
# 不再使用product_name,直接从原始名称中获取
|
||||
product_intro = parts[1].strip()
|
||||
difficulty = parts[2].strip()
|
||||
|
||||
logger.info(f"解析结果: 名称='{product_name}', 简介='{product_intro[:30]}...', 难度='{difficulty}'")
|
||||
logger.info(f"解析结果: 简介='{product_intro[:30]}...', 难度='{difficulty}'")
|
||||
|
||||
# 从难度描述中提取分数
|
||||
import re
|
||||
@@ -370,11 +368,11 @@ class IntegratedProductSystem:
|
||||
difficulty = response
|
||||
difficulty_score = 50 # 默认中等难度
|
||||
|
||||
return product_name, product_intro, difficulty, difficulty_score
|
||||
return product_intro, difficulty, difficulty_score
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"解析AI响应失败: {e}")
|
||||
return "", response, "", 50
|
||||
return "", response, 50
|
||||
|
||||
def check_product_exists_in_analysis(self, conn: sqlite3.Connection, original_name: str) -> bool:
|
||||
"""检查产品是否已存在于分析结果表中"""
|
||||
@@ -398,9 +396,10 @@ class IntegratedProductSystem:
|
||||
return False
|
||||
|
||||
def save_analysis_result(self, conn: sqlite3.Connection,
|
||||
original_id: int, original_name: str,
|
||||
product_name: str, difficulty: str, ai_response: str, difficulty_score: int = None):
|
||||
"""保存分析结果到数据库,包括难度分数"""
|
||||
original_name: str, difficulty: str,
|
||||
ai_response: str, difficulty_score: int = None,
|
||||
product_link: str = None):
|
||||
"""保存分析结果到数据库,包括难度分数和产品链接"""
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
|
||||
@@ -410,12 +409,12 @@ class IntegratedProductSystem:
|
||||
|
||||
cursor.execute("""
|
||||
INSERT INTO product_analysis
|
||||
(original_id, original_name, product_name, development_difficulty, difficulty_score, ai_response)
|
||||
VALUES (?, ?, ?, ?, ?, ?)
|
||||
""", (original_id, original_name, product_name, difficulty, difficulty_score, ai_response))
|
||||
(original_name, development_difficulty, difficulty_score, ai_response, product_link)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
""", (original_name, difficulty, difficulty_score, ai_response, product_link))
|
||||
|
||||
conn.commit()
|
||||
logger.success(f"保存分析结果成功: {product_name}, 难度分数: {difficulty_score}")
|
||||
logger.success(f"保存分析结果成功: {original_name}, 难度分数: {difficulty_score}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"保存分析结果失败: {e}")
|
||||
@@ -471,11 +470,10 @@ class IntegratedProductSystem:
|
||||
logger.info(f"API调用成功,正在处理数据...")
|
||||
|
||||
# 解析响应
|
||||
product_name, product_intro, difficulty, difficulty_score = self.parse_ai_response(ai_response)
|
||||
product_intro, difficulty, difficulty_score = self.parse_ai_response(ai_response)
|
||||
|
||||
# 保存结果(不再保存product_intro,避免与ai_response重复)
|
||||
self.save_analysis_result(conn, original_id, name,
|
||||
product_name, difficulty, ai_response, difficulty_score)
|
||||
self.save_analysis_result(conn, name, difficulty, ai_response, difficulty_score)
|
||||
success_count += 1
|
||||
|
||||
# 显示完成状态
|
||||
@@ -597,9 +595,8 @@ class IntegratedProductSystem:
|
||||
|
||||
# 查询缺失难度分数的产品
|
||||
cursor.execute("""
|
||||
SELECT pa.id, p.name, p.introduction, pa.ai_response
|
||||
SELECT pa.id, pa.original_name, pa.product_intro, pa.ai_response
|
||||
FROM product_analysis pa
|
||||
JOIN products p ON pa.original_id = p.id
|
||||
WHERE pa.difficulty_score IS NULL OR pa.difficulty_score = ''
|
||||
""")
|
||||
|
||||
|
||||
Binary file not shown.
@@ -257,9 +257,8 @@ def analyze_missing_scores():
|
||||
|
||||
# 查询缺失分数的产品
|
||||
cursor.execute("""
|
||||
SELECT pa.id, p.name, p.description
|
||||
SELECT pa.id, pa.original_name, pa.product_intro
|
||||
FROM product_analysis pa
|
||||
JOIN products p ON pa.product_id = p.id
|
||||
WHERE pa.difficulty_score IS NULL OR pa.difficulty_score = ''
|
||||
""")
|
||||
missing_scores = cursor.fetchall()
|
||||
|
||||
BIN
product_screenshot.png
Normal file
BIN
product_screenshot.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 719 KiB |
11
temp_product_info.txt
Normal file
11
temp_product_info.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
=== Product Hunt 产品信息 ===
|
||||
|
||||
产品名称: TinyCommand
|
||||
|
||||
产品简介: TinyCommand brings your forms, workflows, data, emails, and AI agents together, so everything connects and runs on its own. Build smarter, automate faster, and manage it all in one no-code platform.
|
||||
|
||||
制作人发言:
|
||||
|
||||
用户数: 540 followers
|
||||
|
||||
提取时间: 2025-12-01 19:16:04
|
||||
File diff suppressed because it is too large
Load Diff
BIN
tophub_data.db
BIN
tophub_data.db
Binary file not shown.
1099
tophub_scraper.log
1099
tophub_scraper.log
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user