python3:公众号每日定时发送日报/图片 - Go语言中文社区

python3:公众号每日定时发送日报/图片


步骤是这样:先申请公众号,找到接口文件。看了之后发现主要是通过corpid(企业秘钥)和corpsecret(应用秘钥)获得登录token,通过这个token进入各个url操作。

我这个用的是企业微信,所以有部门。其他公众号也类似。结果如下:

这里写图片描述

# -*- coding:utf-8 -*-
import requests
import json
import time

url0 = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken'

def get_group_id(): #查看部门与成员
    values_address = {'corpid': '你的corpid',
              'corpsecret': 通讯录corpsecret',
              }
    req = requests.post(url0, params=values_address)
    data = json.loads(req.text)
    token = data["access_token"]
    url_department="https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token="+token #部门
    r_department=requests.get(url_department)
    result_department=r_department.json()
    result_department_no=result_department['department']
    print("***已获取部门信息如下:")
    for item in result_department_no:
        print("[部门]:",item['id'],"  [部门名称]:",item[ 'name'],"  [父部门]:",item['parentid'],"  [序号]:",item['order'])
    print("***已获取成员信息如下:")
    for i in range(len(result_department_no)):
        i=i+1
        url_member = "https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=%s&department_id=%s&fetch_child=FETCH_CHILD" % (token, i)  # 成员
        r_member = requests.get(url_member)
        result_member = r_member.json()
        result_member_no = result_member['userlist']
        for item in result_member_no:
            print("[成员id]:", item['userid'], "  [成员名称]:", item['name'], "  [所属部门]:", item['department'])
    return result_department_no,result_member_no


def upload_img():
    values_address = {'corpid': '你的corpsecret',
              'corpsecret': '应用corpsecret',
              }
    req = requests.post(url0, params=values_address)
    data = json.loads(req.text)
    token = data["access_token"]
    print("***已获取token.")

    url_upimg="https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=%s"%(token,"image")
    files = {'filename': ('xn.JPG', open("D:DOCSDAY邮件/DRjpg.JPG", 'rb'))
             }  # 显式的设置文件名
    values_upimg={
    "Content - Type": 'multipart/form-data; boundary="----WebKitFormBoundaryn5UouHKhfu8g2XNp";',
    "Content - Length": '331698; boundary="----WebKitFormBoundaryn5UouHKhfu8g2XNp";',
    "Content - Disposition":'form-data; name="image"; boundary=----WebKitFormBoundaryn5UouHKhfu8g2XNp;',
    "content - type": "application/octet-stream; boundary=----WebKitFormBoundaryn5UouHKhfu8g2XNp;"
}
    req_upimg = requests.post(url_upimg,files=files, data=values_upimg)
    data = json.loads(req_upimg.text)
    media_id=data['media_id']
    print("***已获取素材所需id.")
    return token,media_id

def send_msg(token,media_id): #发送图片
  url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="+token
  values = {
  "touser": "@all",
   "toparty" : "2",   #***************部门******************
   "msgtype" : "image",
   "agentid" : 1000003,
   "image" : {
        "media_id" : media_id
   },
   "safe":0
}
  data = json.dumps(values)
  req = requests.post(url, data)
  print("返回结果:", req.text)
  return req
 #打印返回信息


while True:
    current_time = time.localtime(time.time())
    if ((current_time.tm_hour == 8) and (current_time.tm_min == 13) and (current_time.tm_sec == 50)):
        (result_department_no, result_member_no) = get_group_id()
        (token, media_id) = upload_img()
        send_msg(token,media_id)
    time.sleep(1)

效果是这样:
这里写图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_37408031/article/details/78616089
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 20:07:20
  • 阅读 ( 992 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢