python微信公众号翻译功能怎么用_Watson使用指南(七)在微信公众号中实现识图作诗功能...
本文章主要是写一下这个项目开发的过程及之间遇到的问题,作为记录,也希望以此为契机认识志同道合的朋友,一起学习交流。
目录:
概述
环境准备及相关账号申请
部署Python Flask应用到Bluemix
通过Bluemix认证公众微信号
识图作诗相关功能开发
总结
概述
本文将从一个开发人员角度,介绍如何使用Bluemix平台开发和部署Python Flask应用,如何通过Bluemix进行微信公众号认证,最后结合相关Watson服务,实现用户向公众号发送图片,后台识别图片并返回诗文的功能。
Bluemix
BLuemix是IBM公司推出的一个云平台服务,通过它不仅可以部署本地应用到云端,还可以调用BLuemix本身自带的强大的一系列服务来实现很多功能。
Watson
Watson是IBM公司推出的一系列认知计算服务,包括自然语言分类,情感分析,图像识别等等,我在本系列的前几期已经完成了可用Python实现部分的文档翻译,详见
微信公众平台
作为一个程序员,使用微信公众号,关注点就不仅仅是发送推文消息了,通过自己开发,来实现一些有趣的功能,做不同于一般的公众号才是我想要的。
环境准备及相关账号申请
注册BLuemix账号
申请地址: http://www.bluemix.net 在页面右上角点击注册,填写相关信息提交申请,Bluemix 会发一封确认邮件到注册邮箱,需要手工进入注册邮箱点击确认,才能成功注册。第一次登陆 Bluemix 控制台的时候,会要求创建工作空间,建议创建在悉尼或英国(虽然访问都很慢)。
安装CloudFoundry工具
通过该工具,可以在命令行使用CF相关命令进行与BLuemix之间的交互,包括部署,更新,查询。详见: http://docs.cloudfoundry.org/...
注册微信公众号
这个很简单,而且网上一搜很多,我在这里就不说了。
部署Python Flask应用到Bluemix
Python Flask
Python Flask 是基于Python的一种轻量级网络框架,便捷易用。这个应用中Flask仅仅起到传递参数的作用,对于Flask本身的使用不是很多。这就是说,你同样可以仅仅使用Python,因为Python本身也可以提供网络服务。
创建应用
在Bluemix首页点击创建应用,新的页面中会显示很多可创建的应用案例,下拉菜单找到Flask,创建,根据提示填写域名等信息。创建后根据页面提示下载模板代码到本地。
要想在bluemix下成功运行应用,至少需要有manifest.yml,requirements.txt,runtime.txt和app.py这四个文件。
manifest.yml
这是应用程序的基本配置信息,包括域名和主机名。是下载源码后默认的,不需要更改。
requirements.txt
这个文件中包含应用所需要的第三方依赖,比如我的应用里是这样的:
Flask
watson_developer_cloud
lxml
flask是Python网络框架。watson_developer_cloud用于调用Watson服务。lxml包用来爬取网络信息。
runtime.txt
该文件用来指定需要的Python版本
app.py
Python应用的脚本或源代码文件,我会在“ 识图作诗相关功能开发 ”做详细说明
部署应用
在本地进行应用的开发,并且本地调试和运行成功后就可以部署代码了。在bluemix上点击应用程序,在应用程序菜单选择“ 入门 ”,根据提示在本地命令行使用cf命令就可以成功push到BLuemix上。如果过程中遇到问题,可以通过
cf logs 应用程序名 --recent
来查看错误
创建并绑定服务
在Bluemix应用程序界面找到创建新服务,同创建应用程序一样,新界面会有很多服务可供选择。这里,我选择的是Visual Recognition服务来进行图片识别。创建新服务后,点击连接到现有应用程序,就OK了。关于服务的创建,具体参见Watson使用指南(五)
通过Bluemix认证公众微信号
在微信公众号页面打开开发者页面,进行服务器配置。需要注意的是令牌自己随意填写就好。
新建auth.py,根据微信官方的文档,获取相关参数:
token = '微信页面填写的令牌'
signature = request.args.get('signature', '')
echostr = request.args.get('echostr', '')
timestamp = request.args.get('timestamp', '')
nonce = request.args.get('nonce', '')
tmp = [timestamp, nonce, token]
tmp.sort()
tmp = ''.join(tmp)
if ( hashlib.sha1(tmp).hexdigest() == signature ):
return make_response(echostr)
push代码到Bluemix,在微信页面点击提交,显示提交成功,就完了通过Bluemix认证微信号。
识图作诗相关功能开发
顾名思义,识图作诗,就包括识图和作诗两个部分。用到三个文件,visual.py,translate.py,poem.py
visual.py
调用Watson服务,返回的是嵌套字典信息,可以转换成JSON格式然后提取信息。这里直接操作字典提取:
def VisualContent(url):
visualRecognition = VisualRecognitionV3('2016-05-20', api_key='创建服务后系统返回的api_key')
content = visualRecognition.classify(images_url = url)
images = content.get("images")
classifiers = images[0].get("classifiers")
classes = classifiers[0].get("classes")
res = classes[0].get("class")
return res
translate.py
Watson服务中有翻译服务,但是不支持英汉互译。而获取到的图片信息都是英文,显然不能直接去用英文来搜索相关诗文。于是我写了这个模块,直接在有道翻译的网页中获取翻译。
def Translate(word):
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.youdao.com/'
key = word
data = {}
data['type'] = 'AUTO'
data['i'] = key
data['doctype'] = 'json'
data['xmlVersion'] = '1.6'
data['keyfrom'] = 'fanyi.web'
data['ue'] = 'UTF-8'
data['typoResult'] = 'true'
data = urllib.parse.urlencode(data).encode("utf-8")
content = urllib.request.urlopen(url, data).read().decode("utf-8")
json_content = json.loads(content)
res = json_content["translateResult"][0][0]['tgt'][:2]
return res
poem.py
最后一个部分,就是根据图片内容获得诗文信息了,简单的爬虫,用xpath直接
获得网页内容。
def MakePoem(word):
url_base = "http://so.gushiwen.org/search.aspx?value="
key = word
url = url_base+key
res = requests.get(url)
res.encoding = 'utf-8'
#print(res.text)
root = etree.HTML(res.content)
items = root.xpath('//div[@class="sons"][2]/p[@style="margin-bottom:0px;"]')[0]
item = items.xpath('string(.)')
content = item.replace('\n','').replace(' ','')
length = len(content)
answer = content[:length-1]
return answer
其他
值得一提的是,微信公众号中的消息处理都是以xml格式封装的,所以在获取用户消息中,需要解析格式获取消息内容;同样,返回消息时,也要对内容封装后再返回用户。
总结
通过这几天微信后台的反馈来看,服务器不稳定,识别内容类别较少,爬取信息不稳定这三个因素经常导致用户会收到“暂时停止服务”的消息。
后期添加异常处理模块希望能使错误信息得到人性化反馈。
这是我的公众号,欢迎关注
python微信公众号翻译功能怎么用_Watson使用指南(七)在微信公众号中实现识图作诗功能...相关推荐
- python获取藏头诗内容_Watson使用指南(六)在微信公众号中实现识图作诗功能
本文章主要是写一下这个项目开发的过程及之间遇到的问题,作为记录,也希望以此为契机认识志同道合的朋友,一起学习交流. 目录: 概述 环境准备及相关账号申请 部署Python Flask应用到Bluemi ...
- Watson使用指南(六)在微信公众号中实现识图作诗功能
本文章主要是写一下这个项目开发的过程及之间遇到的问题,作为记录,也希望以此为契机认识志同道合的朋友,一起学习交流. 目录: 概述 环境准备及相关账号申请 部署Python Flask应用到Bluemi ...
- wps怎么关闭视图保护_怎么在PPT2013中清除编辑受保护视图功能?
软件大小: 67.82MB 软件版本: 10.1.0.7400 软件类型: 办公工具 查看详情 直接下载 怎么在PPT2013中清除编辑受保护视图功能?下面小编就为大家带来了在PPT2013中清除编辑 ...
- python微信公众号翻译功能怎么用_使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具...
距离上次写使用python一步一步搭建微信公众平台(一)已经有几个月了,当中自已也搭建了一个中英文互译的小应用,可是由于英文翻中文好弄,中文翻译成英文一直有问题,知道是编码的问题,但是一直搞不定,于是 ...
- python微信公众号翻译功能_使用python在SAE上搭建一个微信应用,使用有道翻译的api进行在线翻译...
1. 准备,先在使用python一步一步搭建微信公众平台(一)中基本实现自动回复的功能后,接着在有道词典上申请一个key,http://fanyi.youdao.com/openapi?path=da ...
- python微信公众号翻译功能_10分钟教你用Python实现微信翻译机器人
相信大家在日常学习或者是阅读英文文章的过程中,难免会出现几个不认识的单词,或者想快速翻译某段英文的意思. 今天,利用Python爬虫等知识,教大家打造一个微信下的翻译小助手.好吧,开始干活. 先来看看 ...
- 微信公众平台 微接口 接口100 API100 接口大全(转) 开发微信功能简便了
转自:http://blog.sina.com.cn/s/blog_4945a0290101kqaf.html 实例: 关键字:微信公众平台 微接口 接口100 API100 接口大全 在本文中,我们 ...
- 一个公众号可以绑定几个小程序_如何实现微信小程序和公众号的绑定
再此之前,为什么要有小程序和公众号绑定这一个操作. 第一:小程序绑定公众号之后,公众号可以推文. 如下所示,公众号推文,文章内容由后台发布,因为公众号分为服务号和订阅号,订阅号每天可以发送一次,一次最 ...
- 文件不能断点 webstorm_详解python使用金山词霸的翻译功能(调试工具断点的使用)...
这篇文章主要介绍了详解python使用金山词霸的翻译功能(调试工具断点的使用),本文给大家介绍得非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 今天试着用python获取金山 ...
最新文章
- nginx 将请求全部指向到一个页面
- HBase Filter及对应Shell--转
- JAVA数据结构与算法【队列、数组模拟(环形)队列】
- 洛谷-P1903 数颜色 分块 bitset
- 计算机网络( 二十二)-数据链路层(补充)
- oracle add datafile ora-01900,一卡通2.2维护手册
- Java多线程设计要点
- 常用的java包_java的常用包
- 破解TexturePacker加密资源
- FPGA驱动USB协议芯片的测试
- 客户端安装SP3补丁包失败
- 单目结构光三维扫描仪的标定与三维重建
- studio3下载安装使用
- 联想t450进入bios设置按哪个键_thinkpad笔记本怎么进bios设置|联想thinkpad开机进bios按哪个键-系统城...
- SHINY-SERVER R(sparkR)语言web解决方案 架设shiny服务器
- 苹果蓝牙日志如何获取
- 入门级选手浅写一下关于前端的知识点
- 计算机科学与技术3d仿真设计,三维仿真
- 短信验证码内容组成及设计注意事项
- YTU OJ Problem 2013