使用 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编程中一些重用与缩减的建议
Apr 14 Python
Python中字符串的格式化方法小结
May 03 Python
详解 Python 读写XML文件的实例
Aug 02 Python
python微信公众号开发简单流程
Mar 23 Python
Python中的pathlib.Path为什么不继承str详解
Jun 23 Python
python BlockingScheduler定时任务及其他方式的实现
Sep 19 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
Python urllib.request对象案例解析
May 11 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
Jul 14 Python
使用Python实现NBA球员数据查询小程序功能
Nov 09 Python
利用Python函数实现一个万历表完整示例
Jan 23 Python
Python实现DBSCAN聚类算法并样例测试
Jun 22 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
法压式咖啡之制作法
2021/03/03 冲泡冲煮
PHP 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
JavaScript事件列表解说
2006/12/22 Javascript
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
病媒生物防治方案
2014/05/13 职场文书
趣味运动会开幕词
2015/01/28 职场文书
内勤岗位职责
2015/02/10 职场文书
自主招生自荐信范文
2015/03/04 职场文书
消防宣传语大全
2015/07/13 职场文书
基层党建工作简报
2015/07/21 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python