[Python] 纯文本查看 复制代码
import base64
import os
import requests
import re
import random
def listdir(path, path_name): # 定义传入存储文件的list函数
for file in os.listdir(path): #依次获得返回指定的文件夹包含的文件或文件夹的名字的列表
file_path = os.path.join(path, file) #将多个路径组合后返回
if os.path.isdir(file_path): #返回一个列表,其中包含有指定路径下的目录和文件的名称
listdir(file_path, path_name)
else:
path_name.append(file_path) #加入到路径列表中
def assess(img):
import base64
img = open(path, 'rb') # 打开图片
pic = base64.b64encode(img.read()) # 转换为base64值
img.close() # 关闭图片
base64 = str(pic, 'utf-8') # 将base64转换为字符串
print(base64) # 打印
"""访问人脸检测api"""
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect" # 百度人脸检测api
params = {"image": base64, "image_type": "BASE64",
"face_field": "faceshape,facetype,beauty,"} # 将base64的值传递到字典params中
header = {'Content-Type': 'application/json'} # 请求头
request_url = request_url + "?access_token=" + access_token # 请求网址 + access_token值
response = requests.post(url=request_url, data=params, headers=header) # 用requests库中的post函数访问获得信息
img_json = response.json() # 将获得的信息转换为json
print(img_json) # 打印
"""获得人脸评分"""
score = img_json["result"]["face_list"][0]['beauty'] #获得评分
print(score)
return score
"""获得明星图片"""
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'} #设置请求头
star = input("请输入明星名字后按回车键!") #明星的名字
star_url = "https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1606734082047_R&pv=&ic=0&nc=1&z=&hd=&latest=©right=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&sid=&word=" + star #拼接网址
try: #尝试
response = requests.get(star_url,headers=headers) #获取到搜索的返回数据
#print(response.text) #打印
pic_url_list = re.findall('"thumbURL":"(.*?)"',response.text,re.S) # 用正则表达式从返回数据中获取到图片的地址
except Exception as e: #如果失败就报错
print("获取图片地址失败:%s"%e)
if len(pic_url_list) ==0: #如果responselist中的数量为0
print('获取图片失败') #打印 获取图片失败
else:
print(pic_url_list) #打印网址
for pic_url,i in zip(pic_url_list,range(len(pic_url_list) + 1)): #依次循环遍历图片网址和生成数字
response = requests.get(pic_url, headers=headers) #访问图片网址
dir_name = star #文件夹名字为明星名字
if not os.path.exists(dir_name): # 判断文件夹是否存在,如果不存在:
os.mkdir(dir_name) # 创建一个文件夹
with open(dir_name + '/' +star + str(i) + ".jpg","wb") as f: #打开文件
f.write(response.content) #将二进制信息写入到文件
path_name = []
path = star # 文件夹路径
all_path = []
listdir(path,path_name)
for path in path_name: #依次遍历
print(path) #文件路径
all_path.append(path) #添加到列表
print(all_path)
"""获得access_token值"""
AK = '百度的AK值' #百度AI中自己创建的应用的
SK = '百度的SK值' #百度AI中自己创建的应用的
host_url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + AK + '&client_secret=' + SK #访问百度给出的网址来获得自己的access_token值
response = requests.get(host_url) #用requests中的get函数访问
if response: #如果响应
print(response.json()) #打印内容,内容为json
print(type(response.json())) #查看数据类型
access_token = response.json()['access_token'] #获得‘access_token’的值
print(access_token) #打印
"""明星颜值平均评分"""
all_score = 0 #总分为0
count = 0 #计数为0
for path in all_path: #依次遍历明星的所有照片
try:
score = assess(path) #评分
all_score += score #将本次评分加入到总分中
count += 1 #次数+1
except Exception as e:
print(e)
average = all_score/count #平均分=总分÷次数
# print(star + "的平均颜值评分为") #打印评分为
# print (average,'分/100分') #评分
"""女朋友颜值评分"""
my_love = "全世界最最最可爱的人.jpg" #女朋友的照片
my_love_score = assess(my_love) #女朋友的颜值评分
add = random.[font=Menlo, Monaco, Consolas, Andale Mono, lucida console, Courier New, monospace][color=#000000][size=12px]uniform(([/size][/color][/font]80-average[font=Menlo, Monaco, Consolas, Andale Mono, lucida console, Courier New, monospace][color=#000000][size=12px]),([/size][/color][/font]100-average[font=Menlo, Monaco, Consolas, Andale Mono, lucida console, Courier New, monospace][color=#000000][size=12px]))[/size][/color][/font] #设置一个随机数
if my_love_score < average: #如果女朋友颜值分数小于明星颜值分数
print(star + "的平均颜值评分为") # 打印评分为
print(average, '分/100分') # 评分
print("你的颜值评分为") # 打印
print(average + add, '分/100分')
elif my_love_score > average: #如果女朋友颜值分数大于明星颜值平均分
print(star + "没有你漂亮!") #明星没你漂亮
print(star + "的平均颜值评分为") # 打印评分为
print(average, '分/100分') # 评分
print("你的颜值评分为") # 打印
print(my_love_score, '分/100分')
else: #否则
print(star + "的平均颜值评分为") # 打印评分为
print(average, '分/100分') # 评分
print("你的颜值评分为") # 打印
print(my_love_score, '分/100分')
print("你们一样漂亮!") #一样漂亮
"""作死请使用以下代码"""
"""
if my_love_score < average: #如果女朋友颜值分数小于明星颜值分数
print(star + "比你漂亮!") #明星漂亮
elif my_love_score > average: #如果女朋友颜值分数大于明星颜值平均分
print(star + "没有你漂亮!") #明星没你漂亮
else: #否则
print("你们一样漂亮!") #一样漂亮
"""