本文章主要是写一下这个项目开发的过程及之间遇到的问题,作为记录,也希望以此为契机认识志同道合的朋友,一起学习交流。

目录:

概述

环境准备及相关账号申请

部署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使用指南(七)在微信公众号中实现识图作诗功能...相关推荐

  1. python获取藏头诗内容_Watson使用指南(六)在微信公众号中实现识图作诗功能

    本文章主要是写一下这个项目开发的过程及之间遇到的问题,作为记录,也希望以此为契机认识志同道合的朋友,一起学习交流. 目录: 概述 环境准备及相关账号申请 部署Python Flask应用到Bluemi ...

  2. Watson使用指南(六)在微信公众号中实现识图作诗功能

    本文章主要是写一下这个项目开发的过程及之间遇到的问题,作为记录,也希望以此为契机认识志同道合的朋友,一起学习交流. 目录: 概述 环境准备及相关账号申请 部署Python Flask应用到Bluemi ...

  3. wps怎么关闭视图保护_怎么在PPT2013中清除编辑受保护视图功能?

    软件大小: 67.82MB 软件版本: 10.1.0.7400 软件类型: 办公工具 查看详情 直接下载 怎么在PPT2013中清除编辑受保护视图功能?下面小编就为大家带来了在PPT2013中清除编辑 ...

  4. python微信公众号翻译功能怎么用_使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具...

    距离上次写使用python一步一步搭建微信公众平台(一)已经有几个月了,当中自已也搭建了一个中英文互译的小应用,可是由于英文翻中文好弄,中文翻译成英文一直有问题,知道是编码的问题,但是一直搞不定,于是 ...

  5. python微信公众号翻译功能_使用python在SAE上搭建一个微信应用,使用有道翻译的api进行在线翻译...

    1. 准备,先在使用python一步一步搭建微信公众平台(一)中基本实现自动回复的功能后,接着在有道词典上申请一个key,http://fanyi.youdao.com/openapi?path=da ...

  6. python微信公众号翻译功能_10分钟教你用Python实现微信翻译机器人

    相信大家在日常学习或者是阅读英文文章的过程中,难免会出现几个不认识的单词,或者想快速翻译某段英文的意思. 今天,利用Python爬虫等知识,教大家打造一个微信下的翻译小助手.好吧,开始干活. 先来看看 ...

  7. 微信公众平台 微接口 接口100 API100 接口大全(转) 开发微信功能简便了

    转自:http://blog.sina.com.cn/s/blog_4945a0290101kqaf.html 实例: 关键字:微信公众平台 微接口 接口100 API100 接口大全 在本文中,我们 ...

  8. 一个公众号可以绑定几个小程序_如何实现微信小程序和公众号的绑定

    再此之前,为什么要有小程序和公众号绑定这一个操作. 第一:小程序绑定公众号之后,公众号可以推文. 如下所示,公众号推文,文章内容由后台发布,因为公众号分为服务号和订阅号,订阅号每天可以发送一次,一次最 ...

  9. 文件不能断点 webstorm_详解python使用金山词霸的翻译功能(调试工具断点的使用)...

    这篇文章主要介绍了详解python使用金山词霸的翻译功能(调试工具断点的使用),本文给大家介绍得非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 今天试着用python获取金山 ...

最新文章

  1. nginx 将请求全部指向到一个页面
  2. HBase Filter及对应Shell--转
  3. JAVA数据结构与算法【队列、数组模拟(环形)队列】
  4. 洛谷-P1903 数颜色 分块 bitset
  5. 计算机网络( 二十二)-数据链路层(补充)
  6. oracle add datafile ora-01900,一卡通2.2维护手册
  7. Java多线程设计要点
  8. 常用的java包_java的常用包
  9. 破解TexturePacker加密资源
  10. FPGA驱动USB协议芯片的测试
  11. 客户端安装SP3补丁包失败
  12. 单目结构光三维扫描仪的标定与三维重建
  13. studio3下载安装使用
  14. 联想t450进入bios设置按哪个键_thinkpad笔记本怎么进bios设置|联想thinkpad开机进bios按哪个键-系统城...
  15. SHINY-SERVER R(sparkR)语言web解决方案 架设shiny服务器
  16. 苹果蓝牙日志如何获取
  17. 入门级选手浅写一下关于前端的知识点
  18. 计算机科学与技术3d仿真设计,三维仿真
  19. 短信验证码内容组成及设计注意事项
  20. YTU OJ Problem 2013

热门文章

  1. 微信公众号扫码授权登录思路
  2. 清华大学交叉信息研究院弋力老师课题组招收科研实习生
  3. 文件夹都具有只读属性
  4. 10 个可以副业赚钱的网站,总有一个适合你
  5. eclipse与DW联合开发java web项目
  6. 东华大学计算机专业全国排名多少,2017东华大学专业排名情况
  7. 大众点评美食商家电话爬虫
  8. 软件技术人员成长路线的设计
  9. Linux CentOS 7修改分辨率
  10. 用友财务软件函数说明