猿人学第七题-动态字体-随风漂移

前言:该题主要是考对fontTools.ttLib.TTFont的操作,另外就是对字典互相映射的操作

一、woff文件存储

from fontTools.ttLib import TTFont #pip install fontTools
def save_woff(response):
    woff = response['woff']
    woff_file = base64.b64decode(woff.encode())
    with open('aim.woff', 'wb') as f:
        f.write(woff_file)

二、可视化woff文件

1.首先要把woff文件存成xml格式

from fontTools.ttLib import TTFont

# 加载字体文件:

font = TTFont('ami.woff')

# 保存为xml文件:

font.saveXML('local_fonts.xml')

2.利用网站查看

Iconfont Previewiconfont preview for web, Momo's Blog, LuckyMomoicon-default.png?t=N7T8https://blog.luckly-mjw.cn/tool-show/iconfont-preview/index.html

        通过这两步可以建立初始化的name与num列表

三、抓取一页建立woff中flag与数字之间的关系

1.利用可视化网站手动输出woff中name与数字的关系

r_map = {'unic543': 0, 'unib928': 1, 'unic193': 2, 'unib958': 3, 'unia257': 4, 'unic829': 5, 'unib716': 6, 'unic182': 7,
         'unic387': 8, 'unib718': 9}  # 数字映射字典

2.输出name与flag的关系

def base_font_map(woff):
    """构造基本on数组映射模板"""
    ttobj = TTFont(woff)
    tt_names = ttobj.getGlyphNames()[1:]  # 获取所有name值
    cmap = {}
    for i in tt_names:
        cmap[tuple(ttobj['glyf'][i].flags)] =  i # 构造基本映射on数组模板
    return cmap
print(base_font_map('aim.woff'))

3.建立flag(on)与数字的关系

def on_num(on_name,name_num):
    onnum={}
    for key,value in on_name.items():
        onnum[key]=name_num[value]
    return onnum

四、处理一页response.data数据

def page_data(data,page_name_num): #data=每一页解析的data数据,page_name_num=每一页解析出的name与num的对应关系
    nums=[]
    for d_v in data:
        name_list=d_v['value'].replace('&#x','uni').split(' ')
        if name_list[-1]=='':
            name_list.pop()
        point=''
        for name in name_list:
            point+=str(page_name_num[name])
            
        nums.append(point)
    return nums

五、处理一页woff值中name与num的对应关系

def name_num(onnum,nameon):
    namenum={}
    for key,value in nameon.items():
        namenum[key]=onnum[value]
    return namenum
        

六、返回一页的point点

def page_point(page):
    url = f"https://match.yuanrenxue.cn/api/match/7?page={page}"
    response = requests.get(url, headers=headers, cookies=cookies).json()
    data = response['data']
    woff = response['woff']
    save_woff(woff, page)
    nameon = base_font_map(f'{page}.woff')
    namenum = name_num(onnum, nameon)
    page_point_list = page_data(data, namenum)
    return page_point_list
    

七、获取全部数据

def main(name_list):
    point_list = []
    for page in range(1, 6):
        point_list.extend(page_point(page))
    print(point_list)   
    print(max(point_list))
    print(name_list[point_list.index(max(point_list)) + 1])

最后有一点网页里名字的索引是从1开始的,所以point的最大值索引要+1才是名字的索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/592398.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8S 哲学 - 服务发现 services

apiVersion: v1 kind: Service metadata:name: deploy-servicelabels:app: deploy-service spec: ports: - port: 80targetPort: 80name: deploy-service-podselector: app: deploy-podtype: NodePort 主机端口分配方式 两个 name port 和 targetPort type 类型

【实验】使用docker-compose编排lnmp(dockerfile) 完成Wordpress 部署

环境准备 docker:192.168.67.30 虚拟机:4核4G 关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 安装docker 直接点击【复制】粘贴到xshell中即可, 执行过程中若出现睡眠(sleep)通过 kill -9 pid号 &#x…

QT中的容器

Qt中的容器 关于Qt中的容器类,下面我们来进行一个总结: Qt的容器类比标准模板库(STL)中的容器类更轻巧、安全和易于使用。这些容器类是隐式共享和可重入的,而且他们进行了速度和存储的优化,因此可以减少可…

翔云优配恒生指数涨1.85%、恒生科技指数涨3.74% 小鹏汽车涨超8%

5月3日港股开盘,恒生指数涨1.85%,报18543.3点,恒生科技指数涨3.74%,报4009.96点,国企指数涨2.23%,报6580.81点, 翔云优配是一家领先的在线投资平台,提供全球范围内的股票、期货、基金等交易服务…

分布式websocket IM即时通讯聊天开源项目如何启动

前言 自己之前分享了分布式websocket的视频有同学去fork项目了,自己启动一下更方便理解项目嘛。然后把项目启动需要的东西全部梳理出来。支持群聊单聊,表情包以及发送图片。 支持消息可靠,消息防重,消息有序。同时基础架构有分布式权限&…

【Gateway远程开发】0.5GB of free space is necessary to run the IDE.

【Gateway远程开发】0.5GB of free space is necessary to run the IDE. 报错 0.5GB of free space is necessary to run the IDE. Make sure that there’s enough space in following paths: /root/.cache/JetBrains /root/.config/JetBrains 原因 下面两个路径的空间不…

《Fundamentals of Power Electronics》——基础交流建模方法

PWM整流器小信号交流模型建模的主要步骤为: (a)利用小纹波近似的动态版本,建立与电感和电容波形的低频平均值有关的方程; (b)平均方程的扰动和线性化; (c)交流等效电路模型的建立。 以下图buck-boost电路为例进行分析。 首先测…

深入学习和理解Django视图层:处理请求与响应

title: 深入学习和理解Django视图层:处理请求与响应 date: 2024/5/4 17:47:55 updated: 2024/5/4 17:47:55 categories: 后端开发 tags: Django请求处理响应生成模板渲染表单处理中间件异常处理 第一章:Django框架概述 1.1 什么是Django?…

【算法与数据结构】哈希表

文章目录 引入哈希函数介绍便利店的例子Python3 中的哈希表C 中的哈希表 应用将散列表用于查找防止重复将散列表用作缓存 哈希冲突与解决链地址法开放寻址 总结参考资料写在最后 引入 假设你在一家便利店上班,你不熟悉每种商品的价格,在顾客需要买单是时…

hadoop学习---基于Hive的教育平台数据仓库分析案例(一)

案例背景: 大数据技术的应用可以从海量的用户行为数据中进行挖掘分析,根据分析结果优化平台的服务质量,最终满足用户的需求。教育大数据分析平台项目就是将大数据技术应用于教育培训领域,为企业经营提供数据支撑。 案例数据产生流…

Ubuntu20安装torch1.13和pytorch_geometric2.3.0(对应cuda11.6)

在torch下载页面搜索1.13https://pytorch.org/get-started/previous-versions/,wheel安装方式(激活conda虚拟环境) pip install torch1.13.0cu116 torchvision0.14.0cu116 torchaudio0.13.0 --extra-index-url https://download.pytorch.org…

快速构建vscode pytest 开发测试环境

如果不想用 heavy 的pycharm vscode 也是1个很好的选择 安装python SDK pacman -S python [gatemanmanjaro-x13 tmp]$ pacman -Q python python 3.11.8-1安装Vscode 很多中方法 yay -S visual-studio-code-bin [gatemanmanjaro-x13 tmp]$ pacman -Q | grep -i visual visua…

关于怎么计算重复路段的算法问题

这是代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #define MAX_TEST 100 #include<stdio.h> int main() {int l, m;int u0, v0,j0;int arr[MAX_TEST][10] {0};int count0;scanf("%d", &l);scanf("%d", &m);if (l < 500 &…

性能优化(一):ArrayList还是LinkedList?

引言 集合作为一种存储数据的容器&#xff0c;是我们日常开发中使用最频繁的对象类型之一。JDK为开发者提供了一系列的集合类型&#xff0c;这些集合类型使用不同的数据结构来实现。因此&#xff0c;不同的集合类型&#xff0c;使用场景也不同。 很多同学在面试的时候&#x…

短视频矩阵系统ai剪辑 矩阵 文案 无人直播四合一功能核心独家源头saas开发

抖去推矩阵AI小程序是一款针对短视频平台的智能创作和运营工具&#xff0c;它具有以下功能特点&#xff1a; 1.批量视频生成&#xff1a;抖去推可以在短时间内生成大量视频&#xff0c;帮助商家快速制作出适合在短视频平台上推广的内容 2.全行业覆盖&#xff1a;适用于多个行业…

环形链表面试题详解

A. 环形链表1 给你一个链表的头节点 head &#xff0c;判断链表中是否有环. 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置…

每日OJ题_贪心算法二⑦_力扣942. 增减字符串匹配

目录 力扣942. 增减字符串匹配 解析代码 力扣942. 增减字符串匹配 942. 增减字符串匹配 难度 简单 由范围 [0,n] 内所有整数组成的 n 1 个整数的排列序列可以表示为长度为 n 的字符串 s &#xff0c;其中: 如果 perm[i] < perm[i 1] &#xff0c;那么 s[i] I 如果 …

奈氏准则和香农定理

一、奈奎斯特和香农 哈里奈奎斯特&#xff08;Harry Nyquist&#xff09;(左) 克劳德艾尔伍德香农&#xff08;Claude Elwood Shannon&#xff09;(右) 我们应该在心里记住他们&#xff0c;记住所有为人类伟大事业做出贡献的人&#xff0c;因为他们我们的生活变得越来越精彩&…

计算机毕业设计Python+Spark考研预测系统 考研推荐系统 考研数据分析 考研大数据 大数据毕业设计 大数据毕设

安顺学院本科毕业论文(设计)题目申请表 院别&#xff1a;数学与计算机科学 专业&#xff1a;数据科学与大数据 时间&#xff1a;2022年 5月26日 题 目 情 况 题目名称 基于hive数据仓库的考研信息离线分析系统的设计与实现 学生姓名 杨娣荧 学号 201903144042 …

【Hadoop】--基于hadoop和hive实现聊天数据统计分析,构建聊天数据分析报表[17]

目录 一、需求分析 1、背景介绍 2、目标 3、需求 4、数据内容 5、建库建表 二、ETL数据清洗 1、数据问题 2、需求 3、实现 4、扩展概念&#xff1a;ETL 三、指标计算 1、指标1&#xff1a;统计今日消息总量 2、指标2&#xff1a;统计每小时消息量、发送量和接收用…