国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Watson使用指南(六)在微信公眾號中實現(xiàn)識圖作詩功能

Pikachu / 1595人閱讀

摘要:詳見注冊微信公眾號這個很簡單,而且網(wǎng)上一搜很多,我在這里就不說了。關(guān)于服務(wù)的創(chuàng)建,具體參見使用指南五通過認(rèn)證公眾微信號在微信公眾號頁面打開開發(fā)者頁面,進(jìn)行服務(wù)器配置。

本文章主要是寫一下這個項目開發(fā)的過程及之間遇到的問題,作為記錄,也希望以此為契機認(rèn)識志同道合的朋友,一起學(xué)習(xí)交流。

目錄:

概述

環(huán)境準(zhǔn)備及相關(guān)賬號申請

部署Python Flask應(yīng)用到Bluemix

通過Bluemix認(rèn)證公眾微信號

識圖作詩相關(guān)功能開發(fā)

總結(jié)

概述

本文將從一個開發(fā)人員角度,介紹如何使用Bluemix平臺開發(fā)和部署Python Flask應(yīng)用,如何通過Bluemix進(jìn)行微信公眾號認(rèn)證,最后結(jié)合相關(guān)Watson服務(wù),實現(xiàn)用戶向公眾號發(fā)送圖片,后臺識別圖片并返回詩文的功能。

Bluemix

BLuemix是IBM公司推出的一個云平臺服務(wù),通過它不僅可以部署本地應(yīng)用到云端,還可以調(diào)用BLuemix本身自帶的強大的一系列服務(wù)來實現(xiàn)很多功能。

Watson

Watson是IBM公司推出的一系列認(rèn)知計算服務(wù),包括自然語言分類,情感分析,圖像識別等等,我在本系列的前幾期已經(jīng)完成了可用Python實現(xiàn)部分的文檔翻譯,詳見

微信公眾平臺

作為一個程序員,使用微信公眾號,關(guān)注點就不僅僅是發(fā)送推文消息了,通過自己開發(fā),來實現(xiàn)一些有趣的功能,做不同于一般的公眾號才是我想要的。

環(huán)境準(zhǔn)備及相關(guān)賬號申請 注冊BLuemix賬號

申請地址:http://www.bluemix.net 在頁面右上角點擊注冊,填寫相關(guān)信息提交申請,Bluemix 會發(fā)一封確認(rèn)郵件到注冊郵箱,需要手工進(jìn)入注冊郵箱點擊確認(rèn),才能成功注冊。第一次登陸 Bluemix 控制臺的時候,會要求創(chuàng)建工作空間,建議創(chuàng)建在悉尼或英國(雖然訪問都很慢)。

安裝CloudFoundry工具

通過該工具,可以在命令行使用CF相關(guān)命令進(jìn)行與BLuemix之間的交互,包括部署,更新,查詢。詳見:http://docs.cloudfoundry.org/...

注冊微信公眾號

這個很簡單,而且網(wǎng)上一搜很多,我在這里就不說了。

部署Python Flask應(yīng)用到Bluemix Python Flask

Python Flask 是基于Python的一種輕量級網(wǎng)絡(luò)框架,便捷易用。這個應(yīng)用中Flask僅僅起到傳遞參數(shù)的作用,對于Flask本身的使用不是很多。這就是說,你同樣可以僅僅使用Python,因為Python本身也可以提供網(wǎng)絡(luò)服務(wù)。

創(chuàng)建應(yīng)用

在Bluemix首頁點擊創(chuàng)建應(yīng)用,新的頁面中會顯示很多可創(chuàng)建的應(yīng)用案例,下拉菜單找到Flask,創(chuàng)建,根據(jù)提示填寫域名等信息。創(chuàng)建后根據(jù)頁面提示下載模板代碼到本地。

要想在bluemix下成功運行應(yīng)用,至少需要有manifest.yml,requirements.txt,runtime.txt和app.py這四個文件。

manifest.yml

這是應(yīng)用程序的基本配置信息,包括域名和主機名。是下載源碼后默認(rèn)的,不需要更改。

requirements.txt

這個文件中包含應(yīng)用所需要的第三方依賴,比如我的應(yīng)用里是這樣的:

Flask
watson_developer_cloud
lxml

flask是Python網(wǎng)絡(luò)框架。watson_developer_cloud用于調(diào)用Watson服務(wù)。lxml包用來爬取網(wǎng)絡(luò)信息。

runtime.txt

該文件用來指定需要的Python版本

app.py

Python應(yīng)用的腳本或源代碼文件,我會在“識圖作詩相關(guān)功能開發(fā)”做詳細(xì)說明

部署應(yīng)用

在本地進(jìn)行應(yīng)用的開發(fā),并且本地調(diào)試和運行成功后就可以部署代碼了。在bluemix上點擊應(yīng)用程序,在應(yīng)用程序菜單選擇“入門”,根據(jù)提示在本地命令行使用cf命令就可以成功push到BLuemix上。如果過程中遇到問題,可以通過

cf logs 應(yīng)用程序名 --recent

來查看錯誤

創(chuàng)建并綁定服務(wù)

在Bluemix應(yīng)用程序界面找到創(chuàng)建新服務(wù),同創(chuàng)建應(yīng)用程序一樣,新界面會有很多服務(wù)可供選擇。這里,我選擇的是Visual Recognition服務(wù)來進(jìn)行圖片識別。創(chuàng)建新服務(wù)后,點擊連接到現(xiàn)有應(yīng)用程序,就OK了。關(guān)于服務(wù)的創(chuàng)建,具體參見Watson使用指南(五)

通過Bluemix認(rèn)證公眾微信號

在微信公眾號頁面打開開發(fā)者頁面,進(jìn)行服務(wù)器配置。需要注意的是令牌自己隨意填寫就好。
新建auth.py,根據(jù)微信官方的文檔,獲取相關(guān)參數(shù):

        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認(rèn)證微信號。

識圖作詩相關(guān)功能開發(fā)

顧名思義,識圖作詩,就包括識圖和作詩兩個部分。用到三個文件,visual.py,translate.py,poem.py

visual.py

調(diào)用Watson服務(wù),返回的是嵌套字典信息,可以轉(zhuǎn)換成JSON格式然后提取信息。這里直接操作字典提取:

def VisualContent(url):
  visualRecognition = VisualRecognitionV3("2016-05-20", api_key="創(chuàng)建服務(wù)后系統(tǒng)返回的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服務(wù)中有翻譯服務(wù),但是不支持英漢互譯。而獲取到的圖片信息都是英文,顯然不能直接去用英文來搜索相關(guān)詩文。于是我寫了這個模塊,直接在有道翻譯的網(wǎng)頁中獲取翻譯。

 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
最后一個部分,就是根據(jù)圖片內(nèi)容獲得詩文信息了,簡單的爬蟲,用xpath直接
獲得網(wǎng)頁內(nèi)容。

def MakePoem(word):
  url_base = "地址"
  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("http://div[@class="sons"][2]/p[@style="margin-bottom:0px;"]")[0]
  item = items.xpath("string(.)")
  
  content = item.replace("
","").replace(" ","")
  length = len(content)
  answer = content[:length-1]

  return answer

其他
值得一提的是,微信公眾號中的消息處理都是以xml格式封裝的,所以在獲取用戶消息中,需要解析格式獲取消息內(nèi)容;同樣,返回消息時,也要對內(nèi)容封裝后再返回用戶。

總結(jié)

通過這幾天微信后臺的反饋來看,服務(wù)器不穩(wěn)定,識別內(nèi)容類別較少,爬取信息不穩(wěn)定這三個因素經(jīng)常導(dǎo)致用戶會收到“暫時停止服務(wù)”的消息。
后期添加異常處理模塊希望能使錯誤信息得到人性化反饋。

這是我的公眾號,歡迎關(guān)注

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38456.html

相關(guān)文章

  • 識圖吟詩

    摘要:架構(gòu)識圖吟詩架構(gòu)由以下層和關(guān)聯(lián)實現(xiàn)視圖一個響應(yīng)相對靈敏但不夠美觀的前端用戶界面,只使用了原生。平臺本版本部署在阿里云上,采用的流行框架。 寫在前面 關(guān)于這個作品的設(shè)計理念和情懷,請看這里 初衷 隨著作品的不斷迭代和改進(jìn),我已經(jīng)漸漸忘記初衷是什么了。是為了討某人歡心做的小demo或是為了熟悉使用watson的練手作品,都已不大記得。然而現(xiàn)在,是想利用零碎的時間,做一個完整的項目。來探究A...

    zhangrxiang 評論0 收藏0
  • 淺析微信支付:微信支付簡單介紹(小程序、公眾、App、H5)

    摘要:本文是淺析微信支付系列文章的第二篇,主要講解一下普通商戶接入的支付方式以及其中的不同之處。淺析微信支付前篇大綱微信支付是集成在微信客戶端的支付功能,用戶可以通過手機完成快速的支付流程。目前微信支付支持手機系統(tǒng)有蘋果安卓和。 本文是【淺析微信支付】系列文章的第二篇,主要講解一下普通商戶接入的支付方式以及其中的不同之處。 上篇文章講了本系列的大綱,沒有看過的朋友們可以看一下。 淺析微信支...

    shadowbook 評論0 收藏0
  • Node.js微信公眾開發(fā)

    摘要:在微信開發(fā)者工具中調(diào)試和一定要正確域名一定是備案的綁定域名需要的放在服務(wù)器上的位置一定要正確參考微信公眾號開發(fā)文檔 node微信公眾號開發(fā) 概覽 key value 項目名稱 node微信公眾號開發(fā) 項目描述 使用node編寫接口,前后端分離獲取簽名數(shù)據(jù) 開發(fā)者 leinov 發(fā)布日期 2018-11-07 倉庫 github地址 安裝&使用 下載 gi...

    OnlyLing 評論0 收藏0
  • beecloud對接——微信支付

    摘要:微信支付方式付款碼支付適用于線下場所支付支付是指商戶通過調(diào)用微信支付提供的接口,在支付場景中調(diào)起微信支付模塊完成收款。主要用于觸屏版的手機瀏覽器請求微信支付的場景。可以方便的從外部瀏覽器喚起微信支付。 微信支付方式(https://pay.weixin.qq.com/sta...): 1、付款碼支付————————適用于線下場所 2、JSAPI支付————————JSAPI支付是指商戶...

    FingerLiu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<