使用 Python 实现微信公众号粉丝迁移流程


Posted in Python onJanuary 03, 2018

近日,因公司业务需要,需将原两个公众号合并为一个,即要将其中一个公众号(主要是粉丝)迁移到另一个公众号。按微信规范,同一用户在不同公众号内的 openid 是不同的,我们的业务系统不例外地记录了用户的 openid,因此,涉及到两个公众号的 openid 的转换。幸好,微信公众号平台在账号迁移描述提供了方法和API供调用,详见:

http://kf.qq.com/faq/170221aUnmmU170221eUZJNf.html

这里使用 Python 写个程序来完成,简单快捷,主要知识点有:

  • MySQL connector 使用,也就是 Python DB API 规范
  • HTTP客户端库 requests 使用
  • 微信公众号平台 API 使用

首先,建立新旧 openid 对照表。

CREATE TABLE change_openidlist(
  id BIGINT NOT NULL AUTO_INCREMENT,
  ori_openid varchar(100) NOT NULL,
  new_openid varchar(100) NOT NULL,
  CONSTRAINT crm_change_openidlist_pk PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci ;

如果没有安装,则需先安装以下类库。

pip install mysql-connector-python
pip install requests

接着,运行下面 python 程序,即可将新旧 openid 对照数据写到 change_openidlist,然后就可以根据这个表的数据去更新其它数据表了。

其它可见注释,不详述,当然不要忘了将 appid 和 secret 替换为自己公众号。

# -*- coding: utf-8 -*-
import requests
import mysql.connector
def handle_data():
  try:
    token = get_access_token()
    #自动提交方式 autocommit=True
    conn = mysql.connector.connect(host='127.0.0.1', port='3306', user='user', password='password', database='wx', use_unicode=True,autocommit=True);
    qcursor = conn.cursor(buffered=True)
    wcursor = conn.cursor()
    #旧公众号 openid
    qcursor.execute('select openid from wxmembers')
    size = 100
    while True:
      list = qcursor.fetchmany(size)
      if not list:
        break
      changeopenid_list = get_changeopenid_list(list,token)
      wcursor.executemany('insert into change_openidlist (ori_openid,new_openid) values (%s, %s)',changeopenid_list)
  except mysql.connector.Error as e:
    print ('Error : {}'.format(e))
  finally:
    qcursor.close
    wcursor.close()
    conn.close
    print 'openid handle finished!'
def get_access_token():
  new_appid = '00000'
  new_secret = '11111'
  url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential' # grant_type为固定值
  payload = {'appid': new_appid, 'secret': new_secret}
  r = requests.get(url,params = payload)
  response = r.json()
  return response['access_token']
def get_changeopenid_list(ori_openid_list,token):
  new_access_token = token
  ori_appid = '33333'
  url = 'http://api.weixin.qq.com/cgi-bin/changeopenid?access_token='+ new_access_token
  payload = {'to_appid': ori_appid, 'openid_list': ori_openid_list}
  r = requests.post(url,json = payload)
  response = r.json()
  result_list = response['result_list']
  openid_list = [[result['ori_openid'],result['new_openid']] for result in result_list if result['err_msg'] == 'ok']
  return openid_list
if __name__ == '__main__':
  handle_data()

总结

以上所述是小编给大家介绍的使用 Python 实现微信公众号粉丝迁移流程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
python类继承与子类实例初始化用法分析
Apr 17 Python
python连接mysql实例分享
Oct 09 Python
python获取指定时间差的时间实例详解
Apr 11 Python
python实现百万答题自动百度搜索答案
Jan 16 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
tensorflow实现从.ckpt文件中读取任意变量
May 26 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
Jun 30 Python
Django展示可视化图表的多种方式
Apr 08 Python
基于Python和openCV实现图像的全景拼接详细步骤
Oct 05 Python
EM算法的python实现的方法步骤
Jan 02 #Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 #Python
matplotlib绘制动画代码示例
Jan 02 #Python
Python+matplotlib+numpy实现在不同平面的二维条形图
Jan 02 #Python
Python 实现淘宝秒杀的示例代码
Jan 02 #Python
python基于twisted框架编写简单聊天室
Jan 02 #Python
python http接口自动化脚本详解
Jan 02 #Python
You might like
松下Panasonic RF-B65电路分析
2021/03/02 无线电
德生PL550的电路分析
2021/03/02 无线电
风格模板初级不完全修改教程
2006/10/09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
学习ExtJS Panel常用方法
2009/10/07 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
easyui validatebox验证
2016/04/29 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
angular2中使用第三方js库的实例
2018/02/26 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
Python基于select实现的socket服务器
2016/04/13 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
python的继承知识点总结
2018/12/10 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
利用python绘制正态分布曲线
2021/01/04 Python
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
优秀护士获奖感言
2014/02/20 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书