1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
import requests import json import datetime import time import hmac import hashlib import base64 import urllib.parse import configparser
class dt_robot(): config_file = 'config.ini' parser = configparser.ConfigParser()
@classmethod def readkey(cls, section, key): cls.parser.read(cls.config_file) value = cls.parser.get(section, key) return value
@classmethod def sections(cls): sections = cls.parser.sections() print(sections) return sections
def __init__(self, access_token, secret, name): self.access_token = access_token self.secret = secret self.name = name
def timestamp_sign(self): timestamp = str(round(time.time() * 1000)) secret_enc = self.secret.encode('utf-8') string_to_sign = '{}\n{}'.format(timestamp, self.secret) string_to_sign_enc = string_to_sign.encode('utf-8') hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest() sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
return (timestamp, sign)
def url(self): timestamp, sign = self.timestamp_sign() url_template = 'https://oapi.dingtalk.com/robot/send?access_token={}×tamp={}&sign={}' url = url_template.format(self.access_token, timestamp, sign) return url
def message_headers(self): return { 'Content-Type': 'application/json' }
def message_data(self, content): data = { 'msgtype': 'text', 'text': { 'content': '{}: {}'.format(self.name, content) } } return data
def send(self, content): url = self.url() response = requests.post(url, headers=self.message_headers(), data=json.dumps(self.message_data(content))) if response.status_code == 200: print('{}: 消息发送成功'.format(self.name)) else: print('{}: 消息发送失败'.format(self.name))
if __name__ == '__main__': def main(): access_token = dt_robot.readkey('1min', 'access_token') secret = dt_robot.readkey('1min', 'secret') content = datetime.datetime.now().strftime('%F %T') dt_1m = dt_robot(access_token = access_token, secret = secret, name = "1分钟线") dt_1m.send(content)
access_token = dt_robot.readkey('5min', 'access_token') secret = dt_robot.readkey('5min', 'secret') content = datetime.datetime.now().strftime('%F %T') dt_5m = dt_robot(access_token = access_token, secret = secret, name = "5分钟线") dt_5m.send(content)
main()
|