• Python_金山词霸每日一句接口调用(可播放音频)


    今天晚上闲着没事(其实事情很多的,只是不太想干,sign~)又开始折腾python了~之前用c#做了一个命令行下的简单的翻译工具,今天翻出来用的时候发现不太好用,于是乎,想再做一个,这次就用python吧~实现起来应该不难(一开始是这么想的~)

    ////// Time : 2015年12月 //////

    1.准备工作

    Windows [Version 10.0.10586] (win10 th2)

    python 3.5.2

    pyglet

    AvBin.dll

    2.代码

    准备完成之后,开始上马!。。。。。。。

    导入以下的库(关于程序的详细说明,我都放在注释里面了,个人偏好,虽然这样会直接导致我的代码很难看很难看!!!)

    import urllib.request
    # 解析接口返回的json数据
    import json
    import sys
    # 播放音频的库
    import pyglet
    # 使用pprint()可以美化输出,方便我们之后查看接口返回的json数据
    from pprint import pprint
    # 如果tts.mp3不存在,就新建一个这个文件
    ttsfile = open("tts.mp3",'w')
    # 接口调用的地址
    url = 'http://open.iciba.com/dsapi'
    req = urllib.request.urlopen(url)
    # 读取数据
    data = req.read()
    # 这是个大坑,关于编码的,我先后尝试了很多方法去解析返回的byte数据中的数据,因为返回的数据是ascii编码格式的,
    # 我试过decode("utf-8") decode().encode()等等等等很多很多,最后无意中看到有人这么写,decode("unicode_escape")试了之后,
    # 发现果然有用
    data = data.decode("unicode_escape")
    
    tts_url = 0;
    
    if type(data) == str:
        # 将str转为dict
        b = json.loads(data)
        print(b['caption'] + " => " + b['dateline'])
        print(b['content'])
        print(b['translation'])
        tts_url = b['tts']
    # 可以通过uri(指定资源符)下载数据,我试过吧接收到数据直接写入空白
    # 的mp3文件中,很明显这样是不行,因为传输的数据中不是只有你需要的MP3
    # byte ==>> 暂时是这么理解的,总之
    # ttsfile.write(data) 这样直接写进去是不行的
    urllib.request.urlretrieve(tts_url,"tts.mp3")
    # 导入一个库
    pyglet.lib.load_library('avbin64')
    pyglet.hava_avbin = True
    
    window = pyglet.window.Window()
    # 加载音频文件,并播放
    source = pyglet.media.load("tts.mp3")
    source.play()
    pyglet.app.run()
    

    以上就是所有的代码了~

    3.来来来,资源啊分析啊什么的,真正有用的都在这呢

    • 金山词霸api:http://open.iciba.com/?c=wiki&t=cc 这里有关于调用接口的介绍,查词接口的调用需要注册然后它会发送一个key到你的注册邮箱中,调用每日一句的接口不需要key直接用就好了,http://open.iciba.com/dsapi 这个是查询当日每日一句的地址,没有添加时间默认是当天的时间.具体参数参考调用手册
    • pyglet 官方网站:http://pyglet.readthedocs.org/en/latest/index.html里面有关于这个库的基本使用教程,音频播放就是借助这个库来实现的,之前看过一下大牛的博客,说是什么都搬已有的库不会又长足的进步,我听认同的,以后可能会写一个decode来解码MP3文件,自己具体实现以下
    • AvBin.dll 下载地址:https://code.google.com/p/avbin/ 其实pyglet是用了avbin的接口来播放音频的~上面的代码中

    pyglet.lib.load_library(‘avbin64’)

    pyglet.hava_avbin = True

    就是使用了这个。如果不引入这个文件是没办法播放mp3文件的。感兴趣的话可以下下来看看,github地址:https://github.com/AVbin/AVbin 这里有源代码

    PS:大家以后搜关于python教程的时候最好带上 版本号 比如 “python 3” 不然搜出来的很多东西大概都不能用,最后写进自己代码的时候各种报错很浪费时间的。。。。

    再PS:如果代码报错,可以邮我啊:1823403153@qq.com

  • 相关阅读:
    java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决
    Unix
    Win7 扩容磁盘分区
    在Java中怎样高效的推断数组中是否包括某个元素
    2.JAVA编程思想——一切都是对象
    Cookie-Parser是怎样解析签名后的cookie的(同一时候对cookie和cookie-signature进行说明)
    hive 索引
    Javascript属性constructor/prototype的底层原理
    HTML5 的四个亮点
    零基础学python-1.5 第一个程序
  • 原文地址:https://www.cnblogs.com/pjCoder/p/5252618.html
Copyright © 2020-2023  润新知