使用 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 相关文章推荐
haskell实现多线程服务器实例代码
Nov 26 Python
Python实现单词拼写检查
Apr 25 Python
python实现批量解析邮件并下载附件
Jun 19 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
详解Python装饰器
Mar 25 Python
详解python持久化文件读写
Apr 06 Python
python实现爬取百度图片的方法示例
Jul 06 Python
用django设置session过期时间的方法解析
Aug 05 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
php绘制一个矩形的方法
2015/01/24 PHP
万能的php分页类
2017/07/06 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
学习ExtJS Column布局
2009/10/08 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
javascript基本语法
2016/05/31 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
python在linux中输出带颜色的文字的方法
2014/06/19 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
利用python求积分的实例
2019/07/03 Python
简单了解python中的与或非运算
2019/09/18 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
一个精品风格的世界:Atterley
2019/05/01 全球购物
创联软件面试题笔试题
2012/10/07 面试题
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript