版本:未加入题库版本最后一版

This commit is contained in:
liuwei
2025-02-24 10:44:17 +08:00
parent 79fe3eb9d5
commit 427f9672f2
3 changed files with 80 additions and 9 deletions

View File

@@ -52,13 +52,22 @@ def message_task_json(prompt, content):
def game_question_json(question):
prompt = """请根据以下要求,随机生成一个问题,确保每次提问都涉及不同的领域,并且每个问题都互不相关:
本次的问题请充满乐趣,请确保问题足够简洁且容易理解,适合百科类知识问答。
每个问题都应当独立,问题之间不应具有连贯性或延续性
避免重复提问或相似问题,确保每个问题都是全新的
问题需要有一定的难度回答完毕之后用户能有所收获并且对问题进行打分同时根据问题难度告知答对之后给多少分1-10请只返回JSON格式的内容
格式要求如下(请不要加上markdown 的符号){\"question\": \"哪个国家最早将玫瑰与爱情联系起来?\", \"score\":\"1\", \"answer\": \"波斯\",\"description\":\"描述问题答案的原因\"}
"""
prompt = """
请根据以下要求,随机生成一个问题,确保每次提问涉及不同领域,且不重复:
1. 每个问题应该覆盖以下任意领域:近现代史、战争与政治、文化遗产与考古学、进化论、动植物学、基因与遗传学、生态学、有机化学、无机化学、生物化学、环境化学、人文地理、自然地理、地质学、气候变化、古典文学、现代文学、小说与戏剧、诗歌与散文、美术、音乐、戏剧与舞蹈、电影与媒体、西方哲学、东方哲学、道德与伦理学、逻辑与认识论、人类学、心理学、政治学、经济学、编程语言、人工智能、数据科学、网络与安全、机械工程、电气工程、化学工程、土木工程、解剖学、生理学、临床医学、药学与护理、球类运动、奥林匹克运动、运动心理学、健身与营养、世界宗教、神话与民间故事、宗教哲学、语法与词汇、语言习得、方言与语言变异、宏观经济学、微观经济学、国际贸易、金融与投资、民法与刑法、国际法、知识产权法、环境法
2. 问题应简洁,具有一定难度,易于理解且充满乐趣,适合百科类知识问答
3. 每个问题应独立,且问题之间无连贯性或延续性。
4. 避免重复提问或产生相似的问题,确保问题新颖。
5. 对于每个问题提供难度评分1-10分。在问题答对后用户可以根据难度给出相应的分数。
输出格式要求如下仅返回JSON格式确保不添加多余的符号
{
"question": "哪个国家最早将玫瑰与爱情联系起来?",
"score": "1",
"answer": "波斯",
"description": "波斯文化中,玫瑰被广泛认为是象征爱情的花卉,其象征意义逐渐传入西方。"
}
"""
return message_task_json(prompt, question)
@@ -69,5 +78,5 @@ def game_answer_json(answer):
if __name__ == '__main__':
print(game_question_json('从不同的学科领域(历史学:古代历史、近现代史、战争与政治、文化遗产与考古学;生物学:进化论、动植物学、基因与遗传学、生态学;化学:有机化学、无机化学、生物化学、环境化学;地理学:人文地理、自然地理、地质学、气候变化;文学:古典文学、现代文学、小说与戏剧、诗歌与散文;艺术:美术、音乐、戏剧与舞蹈、电影与媒体;哲学:西方哲学、东方哲学、道德与伦理学、逻辑与认识论;社会学:人类学、心理学、政治学、经济学;计算机科学:编程语言、人工智能、数据科学、网络与安全;工程学:机械工程、电气工程、化学工程、土木工程;医学:解剖学、生理学、临床医学、药学与护理;体育:球类运动、奥林匹克运动、运动心理学、健身与营养;宗教与神话:世界宗教、神话与民间故事、宗教哲学;语言学:语法与词汇、语言习得、方言与语言变异;经济学:宏观经济学、微观经济学、国际贸易、金融与投资;法律:民法与刑法、国际法、知识产权法、环境法)生成一个全新问题。'))
print(game_question_json('出题!'))
# print(game_answer_json('question:哪个国家的节日与裸体狂欢有关?,answer:古罗马,top_score:3'))

View File

@@ -14,10 +14,12 @@ db_config = {
'cursorclass': pymysql.cursors.DictCursor
}
# 连接数据库
def get_db_connection():
return pymysql.connect(**db_config)
# 添加群聊
def add_group(group_id, player_id):
conn = get_db_connection()
@@ -35,6 +37,7 @@ def add_group(group_id, player_id):
cursor.close()
conn.close()
# 获取所有群聊ID
def get_group_ids():
conn = get_db_connection()
@@ -46,6 +49,7 @@ def get_group_ids():
cursor.close()
conn.close()
# 确保游戏启动(自动初始化群聊和玩家)
def ensure_game_started(group_id, player_id, player_name="未知玩家"):
conn = get_db_connection()
@@ -79,6 +83,7 @@ def ensure_game_started(group_id, player_id, player_name="未知玩家"):
cursor.close()
conn.close()
# 随机分配任务
def assign_random_task(group_id, player_id=None):
conn = get_db_connection()
@@ -147,6 +152,7 @@ def assign_random_task(group_id, player_id=None):
cursor.close()
conn.close()
# 提交答案并计分
def submit_answer(group_id, player_id, task_id, answer):
conn = get_db_connection()
@@ -277,6 +283,7 @@ def submit_answer(group_id, player_id, task_id, answer):
cursor.close()
conn.close()
# 显示排行榜
def show_rank(group_id, player_id):
conn = get_db_connection()
@@ -301,6 +308,7 @@ def show_rank(group_id, player_id):
cursor.close()
conn.close()
# 显示当前活跃任务
def show_active_tasks(group_id, player_id):
conn = get_db_connection()
@@ -331,6 +339,7 @@ def show_active_tasks(group_id, player_id):
cursor.close()
conn.close()
# 列举所有未完成任务
def list_uncompleted_tasks(group_id, player_id):
conn = get_db_connection()
@@ -361,6 +370,7 @@ def list_uncompleted_tasks(group_id, player_id):
cursor.close()
conn.close()
# 定时任务整点触发排除23:00-08:00
def run_random_task_assignment(group_id):
current_hour = datetime.now().hour
@@ -370,6 +380,7 @@ def run_random_task_assignment(group_id):
result = assign_random_task(group_id)
print(f"{datetime.now()} {result}")
# 处理群聊消息
def game_process_message(group_id, player_id, message, player_name="未知玩家"):
# 自动初始化群聊和玩家
@@ -436,15 +447,17 @@ def game_process_message(group_id, player_id, message, player_name="未知玩家
f"🎀 /r - 查看排行榜"
)
# 设置定时任务
def setup_schedule():
group_ids = get_group_ids()
for gid in group_ids:
run_random_task_assignment(group_id=gid)
# 主程序
if __name__ == "__main__":
# 测试用例
print(game_process_message("45317011307@chatroom", "Jyunere", "/t")) # 新用户获取任务
print(game_process_message("45317011307@chatroom", "Jyunere", "/a 18 罗马斗兽场")) # 提交答案
print(game_process_message("45317011307@chatroom", "Jyunere", "/r")) # 查看排行榜
print(game_process_message("45317011307@chatroom", "Jyunere", "/r")) # 查看排行榜

49
xiuren/xiuren_dl.py Normal file
View File

@@ -0,0 +1,49 @@
import requests
from lxml import etree
import os
# 设置目标URL和请求头
url = "https://www.xiurenwang.cc/bang?f=7"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Referer": "https://www.xiurenwang.cc/"
}
# 发送请求获取网页内容
response = requests.get(url, headers=headers)
response.encoding = "utf-8" # 确保正确解码
# 解析HTML
html = etree.HTML(response.text)
# 提取图片链接和标题(假设最新图片在列表页面中)
image_items = html.xpath('//div[@class="list"]/li/a[@class="img"]/@href')
titles = html.xpath('//div[@class="tit"]/a/text()')
# 创建保存图片的文件夹
save_dir = "./xiuren_images"
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# 只获取最新的一个条目(假设第一个是最新的)
if image_items:
latest_url = "https://www.xiurenwang.cc" + image_items[0] # 拼接详情页URL
latest_title = titles[0] if titles else "latest_image"
# 访问详情页获取图片
detail_response = requests.get(latest_url, headers=headers)
detail_html = etree.HTML(detail_response.text)
image_urls = detail_html.xpath('//div[@id="image"]/a/@href')
# 下载图片
for idx, img_url in enumerate(image_urls):
img_response = requests.get(img_url, headers=headers)
img_name = f"{latest_title}_{idx + 1}.jpg"
img_path = os.path.join(save_dir, img_name.replace('/', '_')) # 避免文件名中的斜杠
with open(img_path, "wb") as f:
f.write(img_response.content)
print(f"已下载: {img_path}")
else:
print("未找到图片链接可能需要调整XPath或检查网站结构。")
print("最新图片下载完成!")