这个题其实没什么好说的,给你们脚本,直接当工具用就好
import requests
import execjs
from font import extract_text_from_font
def get_num(obj, data):
sum = 0
for item in data:
mmm = 0
for i in range(0, len(item), 7):
s = item[i : i + 7]
for j in obj:
if s == j:
if obj[j] == 'o': obj[j] = '0'
mmm = mmm * 10 + int(obj[j])
sum += mmm
print(sum)
return sum
def get_pho(woff):
f = open("07.js", "r", encoding="utf-8")
js_code = f.read()
f.close()
js = execjs.compile(js_code)
js.call("de", woff)
def get_base():
sum = 0
for i in range(1, 6):
url = "https://match.yuanrenxue.cn/api/question/7"
headers = {
"accept": "application/json, text/javascript, */*; q=0.01",
"accept-encoding": "gzip, deflate, br, zstd",
"accept-language": "zh-CN,zh;q=0.9",
"cache-control": "no-cache",
"cookie": "Hm_lvt_434c501fe98c1a8ec74b813751d4e3e3=1779001012; Hm_lvt_f80b2b389f44bbfb3bfe1704817d44e0=1780731259,1783231638; sessionid=2op20261dehuwjd7asnghz331b4nwexr",
"pragma": "no-cache",
"priority": "u=1, i",
"referer": "https://match.yuanrenxue.cn/match/7",
"sec-ch-ua": "Not/A)Brand;v=99, Chromium;v=148",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "Windows",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36",
"x-requested-with": "XMLHttpRequest"
}
if i == 5:
headers["user-agent"] = 'yuanrenxue'
params = {
"page": i,
"pageSize": "10",
"kw": ""
}
res = requests.get(url, headers=headers, params=params)
woff = res.json().get("woff")
data = res.json().get("data")
get_pho(woff)
obj = extract_text_from_font("font.woff")
sum += get_num(obj, data)
print(sum)
if __name__ == '__main__':
get_base()
const fs = require('fs');
de = function (base){
const buffer = Buffer.from(base, 'base64');
fs.writeFileSync('font.woff', buffer);
}
// base = "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"
// de(base)
import ddddocr
from fontTools.ttLib import TTFont
from io import BytesIO
from PIL import Image, ImageDraw, ImageFont
import os
"""
将字体字符转换为图像
:param cmap_code: 字体字符对应的 cmap code
:param font_path: 字体文件路径
:return: PIL 图像对象
"""
def convert_cmap_to_image(cmap_code, font_path):
img_size = 1024
img = Image.new("1", (img_size, img_size), 255) # 创建一个黑白图像对象
draw = ImageDraw.Draw(img) # 创建绘图对象
font = ImageFont.truetype(font_path, int(img_size * 0.7)) # 加载字体文件
character = chr(cmap_code) # 将 cmap code 转换为字符
bbox = draw.textbbox((0, 0), character, font=font) # 获取文本在图像中的边界框
width= bbox[2] - bbox[0] #文本的宽度
height = bbox[3] - bbox[1] # 文本的高度
draw.text(((img_size - width) // 2, (img_size - height) // 7), character, font=font, fill=0) # 绘制文本,并居中显示
return img
def extract_text_from_font(font_path):
font = TTFont(font_path) # 加载字体文件
# font.saveXML("xxx.xml")
ocr = ddddocr.DdddOcr(beta=True, show_ad=False) # 实例化 ddddocr 对象
font_map = {}
for cmap_code, glyph_name in font.getBestCmap().items():
bytes_io = BytesIO()
image = convert_cmap_to_image(cmap_code, font_path) # 将字体字符转换为图像
image. save(bytes_io, "PNG")
text = ocr.classification(bytes_io.getvalue()) # 图像识别
# image.save(f"./tu/{text}.png", "PNG") # 保存图像
# print(f"Unicode码点: {cmap_code} - Unicode字符:{glyph_name},识别结果:{text}")
font_map[hex(cmap_code).replace("0x", "&#x")] = text
os.remove(font_path)
return font_map
if __name__ == '__main__':
font_file_path = "font.woff"
# print(extract_text_from_font(font_file_path))
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2501_93802159/article/details/165733316




