• 讯飞有一个可以根据描述文本自动生成PPT的AI接口,有趣


    文档:
    https://www.xfyun.cn/doc/spark/PPTGeneration.html

     

    价格方面提供了免费1000点的额度,生成一次是10点,正好100次,如果要购买的话最低要购买1344元的,没有按量付费的模式,个人小开发者可买不起。

     

    让我们跑起来玩玩,官方提供了python的sdk,下载到本地:

     

    不想下载sdk的,我这边直接提供了下载好的源码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    # -*- coding:utf-8 -*-
     
    import hashlib
     
    import hmac
     
    import base64
     
    import json
     
    import time
     
    import requests
     
    class AIPPT():
     
    def __init__(self, APPId, APISecret, Text):
     
      self.APPid = APPId
     
      self.APISecret = APISecret
     
      self.text = Text
     
      self.header = {}
     
      # 获取签名
     
      def get_signature(self, ts):
     
        try:
     
        # 对app_id和时间戳进行MD5加密
     
        auth = self.md5(self.APPid + str(ts))
     
        # 使用HMAC-SHA1算法对加密后的字符串进行加密
     
        return self.hmac_sha1_encrypt(auth, self.APISecret)
     
        except Exception as e:
     
        print(e)
     
        return None
     
      def hmac_sha1_encrypt(self, encrypt_text, encrypt_key):
     
        # 使用HMAC-SHA1算法对文本进行加密,并将结果转换为Base64编码
     
        return base64.b64encode(
     
        hmac.new(encrypt_key.encode('utf-8'), encrypt_text.encode('utf-8'), hashlib.sha1).digest()).decode('utf-8')
     
      def md5(self, text):
     
        # 对文本进行MD5加密,并返回加密后的十六进制字符串
     
        return hashlib.md5(text.encode('utf-8')).hexdigest()
     
      # 创建PPT生成任务
     
      def create_task(self):
     
        url = 'https://zwapi.xfyun.cn/api/aippt/create'
     
        timestamp = int(time.time())
     
        signature = self.get_signature(timestamp)
     
        body = self.getbody(self.text)
     
        headers = {
     
        "appId": self.APPid,
     
        "timestamp": str(timestamp),
     
        "signature": signature,
     
        "Content-Type": "application/json; charset=utf-8"
     
        }
     
        self.header = headers
     
        response = requests.request("POST", url=url, data=json.dumps(body), headers=headers).text
     
        resp = json.loads(response)
     
        if (0 == resp['code']):
     
        return resp['data']['sid']
     
        else:
     
        print('创建PPT任务成功')
     
        return None
     
      # 构建请求body体
     
      def getbody(self, text):
     
        body = {
     
        "query": text
     
        }
     
        return body
     
      # 轮询任务进度,返回完整响应信息
     
      def get_process(self, sid):
     
        print("sid:" + sid)
     
        if (None != sid):
     
        response = requests.request("GET", url=f"https://zwapi.xfyun.cn/api/aippt/progress?sid={sid}",
     
        headers=self.header).text
     
        print(response)
     
        return response
     
        else:
     
        return None
     
      # 获取PPT,以下载连接形式返回
     
      def get_result(self):
     
        # 创建PPT生成任务
     
        task_id = self.create_task()
     
        # PPTurl = ''
     
        # 轮询任务进度
     
        while (True):
     
        response = self.get_process(task_id)
     
        resp = json.loads(response)
     
        process = resp['data']['process']
     
        if (process == 100):
     
        PPTurl = resp['data']['pptUrl']
     
        break
     
        time.sleep(2)
     
        return PPTurl
     
     
    if __name__ == '__main__':
     
      # 控制台获取
     
      APPId = "自己的appid"
     
      APISecret = "自己的secret"
     
      # 生成PPT要求
     
      query = ("介绍一下《一方云知》这个小程序的功能和使用。一方云知是一个可以保存笔记、"
     
      "有ChatGPT、文生图功能、人像动漫化功能的微信小程序。且没有广告、免费使用")
     
      demo = AIPPT(APPId, APISecret, query)
     
      result = demo.get_result()
     
      print("生成的PPT请从此地址获取:\n" + result)

      

    直接超级简单,输入文案直接运行即可:

     

    等待

    进度70%了:

     

    好了:

     

    不知道这个地址有没有时效性,讯飞发挥的生成好的pptx源地址如下:

    https://bjcdn.openstorage.cn/xinghuo-privatedata/%2Ftmp/apiTempFilea018b1acbdc74eeabfe20cee49224a0b1274908177877909050/%E4%B8%80%E6%96%B9%E4%BA%91%E7%9F%A5%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%8A%9F%E8%83%BD%E5%85%A8%E8%A7%A3%E6%9E%90.pptx

    怕它失效,保险点存了一份放网盘了:

    链接:
    https://pan.baidu.com/s/1oFzH6ySQeKAAiFhtq7b9tA?pwd=yfyz 提取码: yfyz 复制这段内容后打开百度网盘手机App,操作更方便哦

    我们打开ppt see see:

     

    颜色挺喜庆,目录:

     

    内容:

     

     

    发现,它生成的ppt格式比较固定,内容还过得去。

    这篇分享文章就到这里啦!如果你对文章内容有疑问或想要深入讨论,欢迎在评论区留言,我会尽力回答。同时,如果你觉得这篇文章对你有帮助,不妨点个赞并分享给其他同学,让更多人受益。

    想要了解更多相关知识,可以查看我以往的文章,其中有许多精彩内容。记得关注我,获取及时更新,我们可以一起学习、讨论技术,共同进步。

    感谢你的阅读与支持,期待在未来的文章中与你再次相遇!

    我的微信公众号:【xdub】,欢迎大家订阅,我会同步文章到公众号上。

  • 相关阅读:
    vue学习笔记,购物车清单制作
    leetcode.494. 目标和
    带滚动字幕的视频批量制作的方法
    linux下shell脚本实现wordpress搭建
    C++中的类详解
    【多线程】线程安全的集合类
    算法题打卡day58-单调栈 | 739. 每日温度、496.下一个更大元素I
    Sql语句大全--更新
    Spring框架系列(4) - 深入浅出Spring核心之面向切面编程(AOP)
    金仓数据库 KingbaseES 插件DBMS_UTILITY
  • 原文地址:https://www.cnblogs.com/shuinanxun/p/18246774