利用Python解析json生成PPT、xmind思维导图教程

news2024/9/25 15:26:52

文章目录

  • 背景
  • 部分json样例
  • PPT生成
  • 思维导图生成

背景

通过调用阿里通义听悟接口,对视频进行了语音转写、智能总结等,现在需要解析返回的PPT和思维导图json文件,以可视化的形式进行呈现。关键点在于:

  • PPT生成时,注意用requests请求存放在云上的关键帧图片
  • 思维导图生成时,注意使用递归构造思维导图多叉树

部分json样例

  • 部分ppt-json样例:
{
    "PptExtraction": {
      "AvailableForSummary": true,
      "KeyFrameList": [
        {
          "FileUrl": "https://prod-tingwu-paas-common-beijing.oss-cn-beijing.aliyuncs.com/tingwu/output/1897044919663278/d7da6c8d19a44e2d94c0480dd5ab2665/ppt_20240902140302/d7da6c8d19a44e2d94c0480dd5ab2665_001.png?Expires=1727849098&OSSAccessKeyId=LTAI5tMzZ1D4o1drkJN1TfCr&Signature=KWe3h6krodKWrKeLF7HA3EOJnHg%3D",
          "Start": 190,
          "Summary": "1. 今天开始学习2024年上半年信息信用项目管理课程。\n2. 立项管理是课程的第七章,重要程度高。\n3. 商务选择题通常占该章节考试总分的两分。\n4. 案例分析和论文写作之前也有考过。\n5. 论文写作的考核概率较低,不是每次考试必有。",
          "End": 33678,
          "Id": 1
        },
        {
          "FileUrl": "https://prod-tingwu-paas-common-beijing.oss-cn-beijing.aliyuncs.com/tingwu/output/1897044919663278/d7da6c8d19a44e2d94c0480dd5ab2665/ppt_20240902140302/d7da6c8d19a44e2d94c0480dd5ab2665_002.png?Expires=1727849098&OSSAccessKeyId=LTAI5tMzZ1D4o1drkJN1TfCr&Signature=a4Vtv65JzD7FAv5DwbqFTivoAPQ%3D",
          "Start": 35030,
          "Summary": "1. 立项管理是科研工作的一部分,包括项目建议、立项申请、初步研究和详细研究等阶段。\n2. 论文撰写时,可以围绕立项管理的各个阶段来组织结构,例如:项目建议与立项申请 -> 项目可研究 -> 项目评估与决策。\n3. 在立项管理过程中,需考虑项目的可行性、必要性和效益性,这是通过初研和详研来完成的。\n4. 考试可能会涉及立项管理的具体知识点,如项目建议书的作用、可研的内容和技术经济分析等。\n5. 项目评估是立项管理的重要环节,包括对项目的财务、技术和社会效益进行综合评价。",
          "End": 281654,
          "Id": 2
        },
        ...
       ]
     }
  }
  • 部分思维导图-json样例:
"MindMapSummary": [
        {
          "Title": "2024年上半年信息信用项目管理课程学习摘要",
          "Topic": [
            {
              "Title": "立项管理",
              "Topic": [
                {
                  "Title": "课程内容概览",
                  "Topic": [
                    {
                      "Title": "考题类型",
                      "Topic": [
                        {
                          "Title": "商务选择题:考两分",
                          "Topic": [
                            
                          ]
                        },
                        {
                          "Title": "案例分析:历史考题",
                          "Topic": [
                            
                          ]
                        },
                        {
                          "Title": "论文写作:历史考题",
                          "Topic": [
                            
                          ]
                        }
                      ]
                    },
                    ....

PPT生成

用到的库:pptx, requests

  • 注意事项:由于通义听悟接口返回的关键帧图片列表是存放在通义公有云上的URL链接,因此需要先利用requests将关键帧图片从云上下载下来
from pptx import Presentation
import json
from pptx.util import Inches
import requests

prs = Presentation()

# 需要写代码:先从json中把图片列表提取出来
# 第一步:加载json
with open('ppt.json', 'r') as f:
    data = json.load(f)
    # print(data)
# 第二步:解析json,从中提取关键帧图片
L = data['PptExtraction']['KeyFrameList']
print(len(L))

for i in range(len(L)):
    img = L[i]['FileUrl']
    # print(img)

    # 将关键帧图片嵌入到PPT中
    # 获取幻灯片页
    slide = prs.slides.add_slide(prs.slide_layouts[0])
    prs.slide_height = Inches(9)  # 设置页面高度
    prs.slide_width = Inches(16)  # 设置页面宽度

    response = requests.get(img)
    with open("key_frame/" + str(i) + ".jpg", "wb") as file:
        file.write(response.content)

    # 图片文件路径
    image_path = "key_frame/" +  str(i)  + ".jpg"

    left = Inches(0.0) 
    top = Inches(0.0)
    # width = Inches(10.0)
    # height = Inches(6.0)
    width = Inches(16.0)
    height = Inches(9.0)
    slide.shapes.add_picture(image_path, left, top, width, height)

# 保存PPT
prs.save('your_presentation.pptx')
  • 效果如下:
    在这里插入图片描述
    在这里插入图片描述

思维导图生成

用到的库:xmind

  • 思路:思维导图本质是一颗多叉树,里面用到了递归—>在每一层递归层中同时包含了title和topic,先将title赋给当前节点,再对topic进行递归,扩充子主题
import xmind
import json

# 递归
def add_topic(xw, data):
    title = data["Title"]
    topics = data["Topic"]

    # 创建主题
    topic = xw.addSubTopic()
    topic.setTitle(title)

    # 如果存在子主题,递归增加
    if topics:
        for t in topics:
            add_topic(topic, t)

if __name__ == "__main__":
     # 第一步:加载json
    with open('play_mindmap.json', 'r') as f:
        data = json.load(f)

    workbook = xmind.load('play.xmind')
    sheet = workbook.getPrimarySheet()
    sheet.setTitle("思维导图示例")
    # root node
    root = sheet.getRootTopic()
    root.setTitle("思维导图示例")

    for topic in data['Summarization']['MindMapSummary']:
        add_topic(root, topic)

    # add_topic(root, data['Summarization']['MindMapSummary'][0])
    xmind.save(workbook)

  • 效果如下:

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【电池专题】软包电池封装工序

铝塑膜成型工序冲坑 铝塑膜成型工序,软包电芯可以根据客户的需求设计成不同的尺寸,当外形尺寸设计好后,就需要开具相应的模具,使铝塑膜成型。 成型工序也叫作冲坑,顾名思义,就是用成型模具在加热的情况下,在铝塑膜上冲出一个能够装卷芯的坑,具体的见下图。 …

推荐4个一键生成 PPT的AI工具,让你畅享智能办公!

对于职场人士来说,ai PPT 工具已经成为了高效办公的一大得力助手 。它可以让你从繁琐的 PPT 制作中解脱出来,把更多的时间放在其他的工作准备上面。并且它们有极大的设计能力,会让我们的PPT变的设计感十足,如果大家正在为PPT制作烦…

【Linux】进程周边:进程概念

🌷相关专栏:《c学习》《Linux进阶之路》🌷 全片内容总览: 目录 1.进程基本概念 2.进程的本质?为什么要有进程控制块PCB? 1)为什么要有进程控制块PCB? 2)进程的本质 …

sqli-labs靶场通关攻略(41-60)

第四十一关 联合查询爆出数据库 但这关考察的时堆叠注入 ,我们给他注入一条数据 输入id50即可查到我们注入的数据 第四十二关 看页面似曾相识,上次我们是用注册新用户然后对其他账户进行登录从而造成注入,但这次不能注册新用户了 存在堆叠注…

leetcode 1645 Hopper公司查询2(postgresql)

需求 表: Drivers -------------------- | Column Name | Type | -------------------- | driver_id | int | | join_date | date | -------------------- driver_id是该表的主键。 该表的每一行均包含驾驶员的ID以及他们加入Hopper公司的日期。 表: Rides ---------------…

【JAVA入门】Day27 - 单列集合体系结构综述

【JAVA入门】Day27 - 单列集合体系结构 文章目录 【JAVA入门】Day27 - 单列集合体系结构1.1 Collection 集合的基本方法1.2 Collection 集合的遍历方式1.2.1 迭代器遍历1.2.2 增强 for 遍历1.2.3 利用 Lambda 表达式进行遍历 1.3 List 集合的基本方法1.4 List 集合的遍历方式 J…

云手机怎样简化海外社媒平台运营

随着越来越多的卖家希望拓展海外市场,运营TikTok、Facebook等社交媒体平台已经成为吸引流量和促进销售的重要手段。然而,在管理海外社媒账号的过程中,许多人会面临网络连接的问题。这时,使用一款高效便捷的云手机工具就显得尤为便…

企业财税自动化解决方案案例分享与经验总结

数字经济时代,企业在财税管理方面面临着越来越多的挑战,作为企业运营的核心部分,其效率和准确性直接关系到企业的财务健康和决策效率。为全面提升财务管理工作的效率和质量,推动业财融合,许多企业开始探索,…

ML17_变分推断01:KL散度、ELBO

1. KL散度 KL散度(Kullback-Leibler divergence),也称为相对熵(relative entropy),是由Solomon Kullback和Richard Leibler在1951年引入的一种衡量两个概率分布之间差异的方法。KL散度不是一种距离度量&am…

Flutter的升级和降级步骤

升级 1.版本升级 // 升级到指定版本 flutter upgrade 版本号 // 升级到最新版本 flutter upgrade 2. 更新开发配置 启动 Android Studio。 打开 Settings 对话框,查看 SDK Manager。 如果你已经打开了一个项目,请打开 Tools > SDK Manager。 如果…

设置Virtualbox虚拟机共享文件夹

由于工作环境的原因,选择Virtualbox的方式安装虚拟操作系统,常用的操作系统为ubuntu,不知道道友是否也曾遇到这样的问题,就是虚拟机和主机进行文件拖拽的时候,会因为手抖造成拖拽失败,虚拟机界面显示大个的…

CCSI: 用于无数据类别增量学习的持续类别特定印象|文献速递--基于深度学习的医学影像病灶分割

Title 题目 CCSI: Continual Class-Specific Impression for data-free class incremental learning CCSI: 用于无数据类别增量学习的持续类别特定印象 01 文献速递介绍 当前用于医学图像分类任务的深度学习模型表现出了令人鼓舞的性能。然而,这些模型大多要求…

python 怎样计算字符串的长度

python 计算字符串长度,一个中文算两个字符,先转换成utf8,然后通过计算utf8的长度和len函数取得的长度,进行对比即可知道字符串内中文字符的数量,自然就可以计算出字符串的长度了。 valueu脚本12 length len(value) u…

电车买不了保险?就该车企负责

文 | AUTO芯球 作者 | 雷慢 买电车的真是太糟心了, 来看这个车主,去年保费4200,今年保险公司拒保了, 车主说要投诉,保险公司就扔过来一张1万5的报价单。 你不是要保险吗,买吧! 我告诉你们&…

安装破解激活pycharm

装pycharm之前先装python 激活方式版本不能过新,要22年1月及其之前的版本,下拉找到对应版本的专业版 Other Versions - PyCharmGet past releases and previous versions of PyCharm.https://www.jetbrains.com/pycharm/download/other.html 2.下载电脑…

【支付】PayPal支付通道 Java对接 (下单 付款 确认 退款 查询 回调)

使用Java 对接 PayPal 接口,从下单,支付,确认订单、查询、退款、退款查询、回调处理等全流程代码示例,以及图文说明。 PayPal接口调用时序图 #mermaid-svg-WARCfGOa6JcsCAch {font-family:"trebuchet ms",verdana,aria…

深度学习的发展历程

深度学习的起源 在机器学习中,我们经常使用两种方式来表示特征:局部表示(Local Representation)和分布式表示(Distributed Representation)。以颜色表示为例,见下图: 要学习到一种好…

探索NVIDIA RTX 4060 8G与RTX 3060 12G:性能与适用场景的深度解析

在考虑NVIDIA RTX 4060 8G和RTX 3060 12G两种配置时,我们需要根据具体的应用场景来做出选择。RTX 4060 8G显卡以其较快的处理速度而著称,适合需要快速响应的任务,如实时渲染、视频编辑和部分机器学习任务。而RTX 3060 12G显卡则因其较大的显存…

依托自研力量,给共享集群存储服务一个优选

YashanDB共享集群有三大关键组件,崖山集群服务(YCS)、崖山集群文件系统(YFS)、DB组件。上一篇共享集群系列文章《为何共享集群的高可用能力被频频称赞,它的机制有何不同?》深入解析了关键组件的…

第九届“创客中国”生成式人工智能中小企业创新创业大赛复赛圆满落幕

9月3日,第九届“创客中国”生成式人工智能(AIGC)中小企业创新创业大赛复赛在南昌高新区艾溪湖畔圆满落幕,共有11组企业项目和10组创客项目凭借其卓越的项目展示、深刻的市场洞察以及前瞻的技术应用,脱颖而出,成功晋级至激动人心的决赛阶段。 本次大赛由工业和信息化信息中心主办…