使用 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 相关文章推荐
10款最好的Web开发的 Python 框架
Mar 18 Python
Python获取央视节目单的实现代码
Jul 25 Python
Python的requests网络编程包使用教程
Jul 11 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
Python学习入门之区块链详解
Jul 25 Python
用Python读取几十万行文本数据
Dec 24 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
django中嵌套的try-except实例
May 21 Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 Python
Python request post上传文件常见要点
Nov 20 Python
浅析Django接口版本控制
Jun 26 Python
Python实现对齐打印 format函数的用法
Apr 28 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处理json时中文问题的解决方法
2011/04/12 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
php实现图片缩放功能类
2013/12/18 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
python中range()与xrange()用法分析
2016/09/21 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
Python中的整除和取模实例
2020/06/03 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
单位刻章介绍信范文
2014/01/11 职场文书
简历的自我评价范文
2014/02/04 职场文书
房地产营销策划方案
2014/02/08 职场文书
梅花魂教学反思
2014/04/25 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
回复函范文
2015/07/14 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
一级电子管军用接收机测评
2022/04/05 无线电