使用 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操作ie登陆土豆网的方法
May 09 Python
深入浅析python中的多进程、多线程、协程
Jun 22 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
Python高级用法总结
May 26 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
Python实现FM算法解析
Jun 18 Python
Python定时任务随机时间执行的实现方法
Aug 14 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
pyspark 随机森林的实现
Apr 24 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 Python
python中remove函数的踩坑记录
Jan 04 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
如何使用PHP中的字符串函数
2006/10/09 PHP
php基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
PHP 文件系统详解
2012/09/13 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
2020/12/03 Vue.js
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
python实现哈希表
2014/02/07 Python
python实现简单的计时器功能函数
2015/03/14 Python
Python Property属性的2种用法
2015/06/21 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
Python查看微信撤回消息代码
2018/06/07 Python
Python引用计数操作示例
2018/08/23 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
python七夕浪漫表白源码
2019/04/05 Python
Python语法分析之字符串格式化
2019/06/13 Python
Django模板Templates使用方法详解
2019/07/19 Python
Python面向对象之Web静态服务器
2019/09/03 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
实习老师个人总结的自我评价
2013/09/28 职场文书
房地产项目建议书
2014/03/12 职场文书
国旗下的演讲稿
2014/05/08 职场文书
小学班主任个人总结
2015/03/03 职场文书
个人原因辞职信模板
2015/05/13 职场文书
js之ajax文件上传
2021/05/13 Javascript
golang使用map实现去除重复数组
2022/04/14 Golang