无需第三方接口,企业微信定时推送到普通微信,每日提醒工作
前几个月写了一个自动推送的文章,由于作者接口出现问题不能使用,大概是上周四出现问题,一直到现在还不能使用。可能是提醒习惯了,我每天的工作日报有时候就忘记写。想起来调用server酱,虽然免费5条够用,但是折叠起来,看起来很麻烦,通过搜索,找到一篇文章,不需要部署服务,直接通过企业微信接口调用。
接口原作者:https://ley.best/push-msgs-to-wechat-and-dingding/
原作者的文章,用的是图文消息,但推送的字体很小,而且不能超过512字节,发送的消息文字显示不全;文本消息可以达到2048字节,所以改成文本。
自己想要什么都可以更改,看企业微信接口文档:https://work.weixin.qq.com/api/doc/90000/90135/90236
代码写的很烂,不能看的就关闭!
from lxml import etree from datetime import datetime import requests, sys, urllib, json class Worker: def __init__(self): self.now_time = datetime.today() self.headers= {\'User-Agent\': \'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36\'} self.url = \'http://api.tianapi.com/txapi/jiejiari/index?key=自己的&date=\' def my_job(self): url = self.url + str(self.now_time) r = requests.get(url=url, headers=self.headers) content = eval(r.text) # print(content) newlist = content[\'newslist\'][0] infos = \'\' if int(content[\'code\']) == 200: if newlist[\'info\'] == \'工作日\': infos = \'\n\' + \'今天是工作日,要写日报!!!!\' + \'\n\' return infos elif newlist[\'info\'] == \'双休日\': infos = \'今天是双休日,要写下周的工作计划\' return infos elif newlist[\'tip\'] != \'\': infos = \'国家法定节假日,可以好好休息,别忘了周工作计划和月工作计划\' return infos else: pass else: infos = \'接口错误\' return infos # print(infos) return infos class YouJia: def __init__(self): self.url = \'http://api.tianapi.com/txapi/oilprice/index?key=自己的&prov=河南\' self.data = \'\' def money(self): r = requests.get(url=self.url).text content = eval(r) #print(content) if content[\'code\'] == 200: print(content[\'newslist\'][0][\'p92\']) self.data = \'92号油价:\' + content[\'newslist\'][0][\'p92\'] + \' 95号油价:\' + content[\'newslist\'][0][\'p95\'] else: self.data = \'油价接口错误!!!\' return self.data class Weather(): def __init__(self): self.data={ "location":"自己的城市", "key":"自己的" } def get_url(self): # API地址用S6,也可以用V7 data_list = requests.get(\'https://free-api.heweather.com/s6/weather/forecast\',params=self.data).json() daily_forecast = data_list["HeWeather6"][0]["daily_forecast"] forecast_list = [] for i in daily_forecast: # print(daily_forecast.index(i)) forecast = {} # 取列表索引 if daily_forecast.index(i) == 0: forecast[\'时间\'] = \'今天 \' elif daily_forecast.index(i) == 1: forecast[\'时间\'] = \'明天 \' else: forecast[\'时间\'] = \'后天 \' all_forecast = forecast[\'时间\'] + \' 白天:\'+ i[\'cond_txt_d\'] + \' 晚上:\' + i[\'cond_txt_n\'] + \' 最高温度:\'+ i[\'tmp_max\'] + \'°C\' + \' 最低温度:\'+ i[\'tmp_min\'] + \'°C\' + \' 风力:\' + i[\'wind_dir\'] + i[\'wind_sc\'] + \'级\' + \'!\' forecast_list.append(all_forecast) select_forecast = "".join(forecast_list) new_data = select_forecast.replace(\'!\', \'\n\') return new_data class YiQing: def __init__(self): self.url = \'http://api.tianapi.com/txapi/ncov/index?key=自己的\' self.all_data = \'\' self.henan_news = \'\' def request_data(self): r = requests.get(self.url).text content = eval(r) # print(type(content)) news_list = content["newslist"][0] all_news = news_list[\'news\'] news_num = len(all_news) nationwide = all_news[0][\'summary\'] # print(nationwide) for i in range(news_num): if all_news[i][\'id\'] == 150879: self.henan_news = all_news[i][\'summary\'] break else: self.henan_news = \'河南—————————暂无疫情\' self.all_data = nationwide + \'\n\' + \'-\'*34 + \'\n\' + \'\n\' + self.henan_news return self.all_data class Weixin(): def __init__(self,myjob_data, youjia_data, tianqi_data, yiqing_data): self.corpid = \'自己的\' self.corpsecret = \'自己的\' self.HEADERS = {"Content-Type": "application/json ;charset=utf-8"} self.myjob = myjob_data self.youjia = youjia_data self.tianqi = tianqi_data self.yiqing = yiqing_data def news(self): send_data = self.myjob + \'\n\' + \'-\'*34 + \'\n\' + self.youjia + \'\n\' + \'-\'*34 + self.tianqi + \'-\'*34 + self.yiqing r = requests.get(\'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=\' + self.corpid + \'&corpsecret=\' + self.corpsecret).text # print(r) js = json.loads(r) token = js[\'access_token\'] data = { \'touser\': \'@all\', \'msgtype\': \'text\', \'agentid\': 1000002, #自己更改 \'text\':{ \'content\': send_data }, \'safe\': 0, \'enable_id_trans\': 0, \'enable_duplicate_check\': 0, \'duplicate_check_interval\': 1800 } String_testMsg = json.dumps(data) wechaturl = f\'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}\' # print(wechaturl) req = requests.post(wechaturl, data=String_testMsg, headers=self.HEADERS) # print(req.text) def main(): workers = Worker() youjias = YouJia() tianqis = Weather() yiqings = YiQing() wechat = Weixin(workers.my_job(), youjias.money(), tianqis.get_url(), yiqings.request_data()) wechat.news() if __name__ == \'__main__\': main()