使用 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 相关文章推荐
python基础教程之序列详解
Aug 29 Python
python实现基本进制转换的方法
Jul 11 Python
python字典快速保存于读取的方法
Mar 23 Python
Python实现的质因式分解算法示例
May 03 Python
python画一个玫瑰和一个爱心
Aug 18 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
从0开始的Python学习016异常
Apr 08 Python
python日期相关操作实例小结
Jun 24 Python
python的移位操作实现详解
Aug 21 Python
python银行系统实现源码
Oct 25 Python
将python安装信息加入注册表的示例
Nov 20 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 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
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
让元素在网页中可拖动示例代码
2013/08/13 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
node.js入门实例helloworld详解
2015/12/23 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
python使用建议技巧分享(三)
2020/08/18 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
会计专业自我鉴定范文
2013/10/06 职场文书
高校自主招生自荐信
2013/12/09 职场文书
培训讲师岗位职责
2014/04/13 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
2015年检察院个人工作总结
2015/05/20 职场文书
警示教育片观后感
2015/06/17 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis