使用 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中实现两个字典(dict)合并的方法
Sep 23 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
python定向爬虫校园论坛帖子信息
Jul 23 Python
celery4+django2定时任务的实现代码
Dec 23 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
python3实现弹弹球小游戏
Nov 25 Python
Python面向对象编程基础实例分析
Jan 17 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
详细介绍python类及类的用法
May 31 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代码
2007/03/03 PHP
php创建多级目录代码
2008/06/05 PHP
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
PHP缓存技术的使用说明
2011/08/06 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
PHP中soap的用法实例
2014/10/24 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
python opencv肤色检测的实现示例
2020/12/21 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
电子商务专业学生的自我鉴定
2013/11/28 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
小区文明倡议书
2014/05/16 职场文书
副处级干部考察材料
2014/05/17 职场文书
手机被没收的检讨书
2014/10/04 职场文书
公司承诺书格式范文
2015/04/28 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript