微信公衆號-人臉識別(python)

閒話:最近在學python,正好做個微信公衆號練練手(關鍵是新浪sae現在python項目不要錢),有錯誤的地方請大家指正

準備工作:

              1.到微信公衆平臺註冊https://mp.weixin.qq.com/ ,按照提示註冊成功後,選擇開發->基本配置->成爲開發者

                

                  在url裏面填寫你在新浪SAE裏應用名稱地址,Token可以隨便填,只要和後面的代碼對應就好  ,提交之後不要忘記點擊啓用

              2.應用放在SAE上面,到https://www.sinacloud.com/註冊 (如何操作,按步驟提示就OK)

              3.我用的圖像識別api是face++,到http://www.faceplusplus.com.cn 註冊,獲取API Key和API Secret,後面調用api需要的參數

編寫代碼:

    首先編寫config.yaml

name: qunimei
version: 1
 
libraries:
- name: webpy 
  version: "0.36"
 
- name: lxml
  version: "2.3.4"
    編寫index.wsgi

# coding: UTF-8
import os
 
import sae
import web
 
from weixinInterface import WeixinInterface
 
urls = (
'/','WeixinInterface'  #如果'/'改變,微信公衆號中的url也要改變('/weixin',微信公衆號中在url裏面填寫你在新浪SAE裏應用名稱並且加上/weixin)
)
 
app_root = os.path.dirname(__file__)
templates_root = os.path.join(app_root, 'templates')
render = web.template.render(templates_root)
 
app = web.application(urls, globals()).wsgifunc()        
application = sae.create_wsgi_app(app)
    新建一個weixinInterface.py文件,關鍵代碼
# -*- coding: utf-8 -*-
import hashlib
import web
import lxml
import time
import os
import urllib2,json
from lxml import etree
import urllib2,urllib
import json
from urllib2 import Request, urlopen, URLError, HTTPError
 
class WeixinInterface:
 
    def __init__(self):
        self.app_root = os.path.dirname(__file__)
        self.templates_root = os.path.join(self.app_root, 'templates')
        self.render = web.template.render(self.templates_root)

    def GET(self):
        #獲取輸入參數
        data = web.input()
        signature=data.signature
        timestamp=data.timestamp
        nonce=data.nonce
        echostr=data.echostr
        #自己的token
        token="*******" #這裏改寫你在微信公衆平臺裏輸入的token
        #字典序排序
        list=[token,timestamp,nonce]
        list.sort()
        sha1=hashlib.sha1()
        map(sha1.update,list)
        hashcode=sha1.hexdigest()
        #sha1加密算法
        #如果是來自微信的請求,則回覆echostr
        if hashcode == signature:
            return echostr

    def POST(self):        
        str_xml = web.data() #獲得post來的數據
        xml = etree.fromstring(str_xml)#進行XML解析
        #content=xml.find("Content").text#獲得用戶所輸入的內容
        msgType=xml.find("MsgType").text
        fromUser=xml.find("FromUserName").text
        toUser=xml.find("ToUserName").text
        #return self.render.reply_text(fromUser,toUser,int(time.time()),u"我現在還在開發中,還沒有什麼功能,您剛纔說的是:"+content)
        if msgType == "image":
        //下面代碼大家可以根據自需求添加

因爲這裏我們定義了templates_root爲根目錄下的templates,所以還要在根目錄下創建一個目錄templates的目錄,接着我們在templates目錄下創建reply_text.xml模板文件,寫入以下代碼

$def with (toUser,fromUser,createTime,content)
<xml>
<ToUserName><![CDATA[$toUser]]></ToUserName>
<FromUserName><![CDATA[$fromUser]]></FromUserName>
<CreateTime>$createTime</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[$content]]></Content>
<Event><![CDATA[subscribe]]></Event>
</xml>

face++官網有api說明;使用urllib2 http客戶端庫,微信接受和發送信息原理和各種信息(文本、圖片、鏈接、視頻等):http://www.cnblogs.com/yank/p/3507326.html


發佈了26 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章