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

来源:互联网 发布:钻石玩具淘宝网 编辑:程序博客网 时间:2024/04/28 12:23

今天晚上闲着没事(其实事情很多的,只是不太想干,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 jsonimport 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 = Truewindow = 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 这里有源代码

  • 编码问题:推荐阮一峰的一篇博客:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html里面对于ascii utf-8 unicode等格式的编码介绍挺详细的,通俗易懂
  • 关于urllib.request的使用网上有很多很多,大家可以去找找,这里我就不详细介绍了

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

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

0 0