寻龙分金看缠山,一重缠是一重关,算卦,抽签、手相、命理这些古老的技艺在电影中频频出现,述说着东方的神秘色彩。如何应用AI,结合数算,实现科技与占卜的有机融合,本文结合周易、命盘、签运,制作一个AI算运的罗盘。
材料清单
- 行空板 X1
- 灯带 X1
- 蓝牙音箱 X1
- 摄像头 X1
- 按钮 X2
制作步骤:
1.网上找到可以算签的网站,用爬虫爬取签文图片和签诗及签文解析。
2.获取手掌纹路,发送给大模型,返回卦象数字。
3.引用卦象数字,抽取签文。
4.将签文和签图传给大模型,生成释义,并转为语音,解签。
步骤1 爬取签文
代码
import requests
from bs4 import BeautifulSoup
import os
import random
from PIL import Image
from io import BytesIO
def get_qian_content(url):
try:
# 发送HTTP请求
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
response.raise_for_status() # 检查请求是否成功
# 解析HTML内容
soup = BeautifulSoup(response.text, 'html.parser')
# 获取签诗内容
qian_poem = soup.find('div', class_='h2_content').get_text(strip=True) if soup.find('div', class_='h2_content') else "未找到签诗内容"
# 获取解析内容
h2_contents = soup.find_all('div', class_='h2_content')
if len(h2_contents) >= 2:
qian_analysis = h2_contents[1].get_text(strip=True) # 获取第二个的内容
#qian_analysis = soup.find('div', class_='h2_content').get_text(strip=True) if soup.find('div', class_='h2_content') else "未找到解析内容"
# 获取图片地址
img_tag = soup.find('div', class_='fright p10').find('img') if soup.find('div', class_='fright p10') else None
img_url = img_tag['src'] if img_tag else "未找到图片地址"
# return {
# '签诗':qian_poem,
# '解析':qian_analysis,
# '图片地址':img_url.split("//")[1]
# }
return {
'签诗':[qian_poem[i:i+5] for i in range(0, len(qian_poem), 5)],
'解析': qian_analysis,
'图片地址': img_url.split("//")[1],
'签诗2':qian_poem
}
except Exception as e:
return {
'error': str(e),
'message': '获取内容时出错'
}
#使用示例
#url = "https://m.12880.com/lingqian/qiancaosi/" + str(random.randint(1, 100)) + ".html"
#print(url)
#result = get_qian_content(url)
#print("签诗:", result.get('签诗'))
#print("解析:", result.get('解析'))
#print("图片地址:", result.get('图片地址'))
def download_image(image_url, save_path=None,target_size=(240, 320)):
"""
下载图片到本地
:param image_url: 图片的URL地址
:param save_path: 本地保存目录,默认为当前目录下的qiancaosi_images文件夹
:return: 图片保存的完整路径
"""
try:
current_dir = os.path.dirname(os.path.abspath(__file__))
# 如果未指定 save_path,设置为当前目录下的 img 文件夹
if save_path is None:
save_path = os.path.join(current_dir, "")
# 创建文件夹(如果不存在)
os.makedirs(save_path, exist_ok=True)
# 从URL提取文件名
# filename = os.path.basename(image_url)
# file_path = os.path.join(save_path, filename)
#custom_name = "浅草寺签.jpg"
#file_path = os.path.join(save_path, custom_name)
# 下载图片
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(image_url, headers=headers, stream=True)
response.raise_for_status()
#调整尺寸
img = Image.open(BytesIO(response.content))
img_resized = img.resize(target_size, Image.LANCZOS) # 高质量缩放
# 保存调整后的图片
custom_name = "浅草寺签.jpg"
file_path = os.path.join(save_path, custom_name)
img_resized.save(file_path)
# 保存图片到本地
with open(file_path, 'wb') as f:
for chunk in response.iter_content(1024):
f.write(chunk)
print(f"图片已成功下载到:{os.path.abspath(file_path)}")
return file_path
except Exception as e:
print(f"下载图片失败: {str(e)}")
return None
# 使用示例
#image_url = "https://"+result.get('图片地址')
#download_image(image_url)
步骤2 编辑程序运行逻辑
获取签文,将签文发送给大模型进行解析。由百度语言对签文进行讲解。
附件
评论