Python3基于微信订阅号的人脸识别

Python3基于微信订阅号的人脸识别

目录

Python3基于微信订阅号的人脸识别

本节课需要准备

开始搭建操作

步骤一:

注册个人版微信公众号(订阅号)需要一个未注册过公众号的任意邮箱

步骤二:

做一个本地端口映射80或443的内网穿透 访问https://natapp.cn/

注册一个账号,然后申请免费隧道

起个名字,选择web,本地端口自己定义一个即可

配置好后下载客户端

接下来就是natapp配置文件 config.ini

步骤三:

公众号设置

步骤四:

Docker环境部署环境请移步百度云下载相关资料

flaskapp.conf代码

请老铁关注我的公众号

本节课需要准备

  • 入门级:
  • 微信公众号
  • Natapp内网穿透
  • Face++账号
  • Python3
  • Pycharm编辑器
  • 进阶版:
  • 微信公众号
  • Natapp内网穿透
  • Face++账号
  • Python3
  • Pycharm编辑器
  • 云服务器一台
  • 已备案二级域名一个
  • Docker技术

开始搭建操作

步骤一:

注册个人版微信公众号(订阅号)需要一个未注册过公众号的任意邮箱

步骤二:


做一个本地端口映射80或443的内网穿透 访问https://natapp.cn/

注册一个账号,然后申请免费隧道

起个名字,选择web,本地端口自己定义一个即可

这是我为本次微信订阅号测试准备的

配置好后下载客户端

https://natapp.cn/#download

我选择的是windows64位

接下来就是natapp配置文件 config.ini

[default]

authtoken=48acb7b6b80b49ed   #对应一条隧道的authtoken

clienttoken=                    #对应客户端的clienttoken,将会忽略authtoken,若无请留空,

log=none                        #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none

loglevel=ERROR                  #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG

http_proxy=                     #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空

安装python依赖包

pip install

使用pycharm编写python3代码 weixinDream.py 测试代码

import hashlib
from flask import Flask, request, make_response


app = Flask(__name__)

@app.route('/',methods=['GET','POST'])
def wechat_auth():
    if request.method == 'GET':
        print('coming Get')
        data = request.args
        token = 'weixin'  # 不要忘记输入 token
        signature = data.get('signature','')
        timestamp = data.get('timestamp','')
        nonce = data.get('nonce','')
        echostr = data.get('echostr','')
        s = [timestamp,nonce,token]
        s.sort()
        s = ''.join(s)
        if (hashlib.sha1(s.encode('utf8')).hexdigest() == signature):
            return make_response(echostr)

if __name__ == "__main__":
    app.run(port=8088,debug=True)

使用python3 weixinDream.py

 

完整调用face++识别源码

import hashlib
from flask import Flask, request, make_response
import xml.etree.ElementTree as ET
import requests
app = Flask(__name__)

@app.route('/',methods=['GET','POST'])
def wechat_auth():
    if request.method == 'GET':
        print('coming Get')
        data = request.args
        token = 'weixin'  # 不要忘记输入 token
        signature = data.get('signature','')
        timestamp = data.get('timestamp','')
        nonce = data.get('nonce','')
        echostr = data.get('echostr','')
        s = [timestamp,nonce,token]
        s.sort()
        s = ''.join(s)
        if (hashlib.sha1(s.encode('utf8')).hexdigest() == signature):
            return make_response(echostr)
    if request.method == 'POST':
        xml_str = request.stream.read()
        # print(xml_str)
        xml = ET.fromstring(xml_str)
        toUserName=xml.find('ToUserName').text
        fromUserName = xml.find('FromUserName').text
        createTime = xml.find('CreateTime').text
        msgType = xml.find('MsgType').text
        PicUrl = xml.find('PicUrl').text
        print(PicUrl)
        data={
           'api_key':'你的key',
           'api_secret':'你的secret',
            'image_url':str(PicUrl),
            'return_landmark':0,
            'return_attributes':'gender,age,beauty',
        }
        result = requests.post(url="https://api-cn.faceplusplus.com/facepp/v3/detect",data=data).json()
        gender = result['faces'][0]['attributes']['gender']['value']
        age = result['faces'][0]['attributes']['age']['value']
        if gender=="Male":
            beauty = result['faces'][0]['attributes']['beauty']['male_score']
        else:
            beauty = result['faces'][0]['attributes']['beauty']['female_score']
        if gender=="Male":
            gender2="男性"
        else:
            gender2="女性"
        resultStr="性别为:%s,年龄大约为:%s岁,颜值:%s" % (gender2,age,beauty)
        if msgType == 'image':
            reply = '''
            <xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[%s]]></MsgType>
            <Content><![CDATA[%s]]></Content>
            </xml>
            ''' % (
                fromUserName,
                toUserName,
                createTime,
                'text',
                resultStr,
                )
            return reply
if __name__ == "__main__":
    app.run(port=8088,debug=True)

步骤三:

公众号设置

 

服务器地址(URL地址改成这个 token和代码中的一致

最终运行即可 python3 weixinDream.py

 

步骤四:

Docker环境部署环境请移步百度云下载相关资料

Docker一键安装脚本与运行包

链接:https://pan.baidu.com/s/1uijg3d3WF7ATxJ4rpLr3Qw

提取码:amd5

有个坑点就是云服务器nginx一定要反代我的容器映射的nginx 8092端口

反代代码放在/etc/nginx/conf.d/flaskapp.conf

给flaskapp.conf  chmod 777 flaskapp.conf 权限

flaskapp.conf代码

server {

listen 80;

server_name 你的二级域名;

location / {

    proxy_set_header X-Forwarded-Host $host;

    proxy_set_header X-Forwarded-Server $host;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_pass http://localhost:8092/;

}

}

至此所有配置完毕,可以关注公众号查看演示效果

请老铁关注我的公众号

欢迎关注我的公众号,测试你的颜值和年龄

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值