python3發送微信

github地址:https://github.com/AlbertCQY/scripts/tree/master/send_wechat
python3代碼參考如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# =========================================================================
"""
-- File Name : main.py
-- Purpose : 發微信模塊
-- Date : 2020/01
-- Author:陳晴陽
Vervisons:
-- 20200106 1.0,陳晴陽,微信發送圖片和文本的方法封裝爲模塊
"""
# =========================================================================
import urllib.request
import json
import sys
import requests
import os
import settings

class WeChat():
    def __init__(self,agentid,corpid,secret,party = '1'):
        gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='+corpid+'&corpsecret='+secret
        self.token = self.gettoken(gettoken_url)
        self.post_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.token+"&agentid="+agentid
        self.img_url = 'https://qyapi.weixin.qq.com/cgi-bin/media/upload'
        self.party = party
        if self.party == '1':
            self.message = {
                    "touser":"@all", #所有用戶
                    #"totag":"1",       #標籤ID  1
                    "msgtype":"text",
                    "agentid":agentid,  
                    "text":{"content":'NONE'},
                    "safe":0
                    }
            self.image = {
                    "touser":"@all", #所有用戶
                    "msgtype":"image",
                    "agentid":agentid,  
                    "image": {"media_id":0},
                    "safe":0
                    }
        else:
            self.message = {
                    "toparty":self.party, #指定部門id的用戶
                    #"totag":"1",       #標籤ID  1
                    "msgtype":"text",
                    "agentid":agentid,  
                    "text":{"content":'NONE'},
                    "safe":0
                    }
            self.image = {
                    "toparty":self.party, #指定部門id的用戶
                    "msgtype":"image",
                    "agentid":agentid,  
                    "image": {"media_id":0},
                    "safe":0
                    }

    def gettoken(self,gettoken_url):
        try:
            tokenresponse = urllib.request.urlopen(gettoken_url).read().decode()
        except  urllib.error.URLError as e:
            print("獲取token錯誤",e)
        token = json.loads(tokenresponse)['access_token']
        return token

    def get_media_ID(self,path):
        payload_img={
                        'access_token':self.token,
                        'type':'image'
        }
        try:
        	data ={'media':open(path,'rb')}
        except Exception as err:
        	print('open file error ',err)
        
        try:
        	r=requests.post(url=self.img_url,params=payload_img,files=data)
        	#print 'get imageid  ok'
        except Exception as err:
        	print('get image id error ',err)
        dict =r.json()
                #print "=====",dict
        return dict['media_id']

    def send_messages(self,content):
        self.message['text']['content'] = content
        try:
            message_json = bytes(json.dumps(self.message), 'utf-8') #change to json bytes
            msg_response = urllib.request.urlopen(urllib.request.Request(url=self.post_url, data=message_json)).read()
            x = json.loads(msg_response.decode())['errcode']
            if x == 0:
                print('Send_Messages Succesfully')
            else:
                print('Send_Messages Failed')
        except Exception as e:
            print(e)
        return msg_response

    def send_images(self,media_id):
        self.image['image']['media_id'] = media_id
        try:
            main_messages = bytes(json.dumps(self.image),'utf-8')
            request = urllib.request.Request(self.post_url, main_messages)
            response = urllib.request.urlopen(request)
            msg = response.read()
        except Exception as e:
            logFile = open('send_wechat_pic.log','a')
            print(logFile,e)
            logFile.close()
            sys.exit()
        return msg

if __name__ == '__main__':
     # logFile1 = open('send_wechat_txt.log','a')
     # logFile2 = open('send_wechat_pic.log','a')
     GRAPH_PATH = "/tools/scripts/pic/"
     FileNames=os.listdir(GRAPH_PATH)
     wechat_sender = WeChat(settings.def_agentid,settings.def_corpid,settings.def_secret)#初始化對象
     try:
         content='測試'
         wechat_sender.send_messages(content)#調用方法發送信息 並返回信息
     except Exception as e1:
         print(e1)

     for i in range(len(FileNames)):#調用方法發送圖片,並返回異常信息
        try:
             pic_path=GRAPH_PATH+FileNames[i]
             media_id = wechat_sender.get_media_ID(pic_path)
             wechat_sender.send_images(media_id)
        except Exception as e2:
          print(e2)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章