├── READ.md ├── README.md ├── main.py ├── run.yml └── send.py /READ.md: -------------------------------------------------------------------------------- 1 |
2 |

小米运动刷步数

3 | 4 | [![GitHub stars](https://img.shields.io/github/stars/Ysnsn/mimotion?style=flat-square)](https://github.com/Ysnsn/mimotion) 5 | [![GitHub forks](https://img.shields.io/github/forks/Ysnsn/mimotion?style=flat-square)](https://github.com/Ysnsn/mimotion/network) 6 | [![GitHub issues](https://img.shields.io/github/issues/Ysnsn/mimotion?style=flat-square)](https://github.com/Ysnsn/mimotion/issues) 7 | ![GitHub size](https://img.shields.io/github/repo-size/Ysnsn/mimotion?style=flat-square) 8 |
9 | 10 | ## 懒人必备(纯小白)我已经部署在云函数了 11 | 12 | https://service-8jy2jg0z-1302033217.bj.apigw.tencentcs.com/release/xm?user=手机号&password=密码&step=步数 13 | 14 | 15 | 16 | ### 把手机号和密码换成自己的就行了,每天 *点一下* 就开始刷了(点一下就行了看返回值,严禁滥用) 17 | 18 | 19 | 20 | ## Github Actions 部署指南 21 | 22 | ### 一、Fork 此仓库 23 | 24 | ### 二、设置账号密码 25 | 26 | 添加名为 **key**、**SCKEY**、**USER**、**PWD**、**STEP** 的变量,值分别为 **QQ酷推**、**server酱推送key(0关闭)**、 **账号(仅支持手机号)**、**密码**、**步数(0则为2w-3w之间随机 或自定义随机范围[20000-21000])** 27 | 28 | > 多账号账号和密码分别用 “#” 隔开 ,步数用 “-” 隔开 29 | 30 | > 新增加企业微信应用推送 * corpid corpsecret * 31 | 32 | 33 | 34 | 35 | ## 小米运动修改无效的附解决办法! 36 | - 进入小米运动 APP 点 - 我的 - 设置 - 账号与安全 - 点注销账号 - 点清除数据-公众号再取关 37 | - 等 30 分钟后,在重新绑定需要同步的应用,即可继续使用刷步数 38 | - ⚠️⚠️:我个人亲测有效 39 | 40 | ## 更新日志 41 |
42 | 点击展开🎈 43 | 44 | - 2021-4-24 增加tg推送 45 | 46 | 47 |
48 | ## star 趋势 49 | ![](https://starchart.cc/Ysnsn/mimotion.svg) 50 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 本库仅为测试,为本人学习 2 | ## 如有下载请24h内删除(与我无关) 3 | ### ~~~.yml放到根目录了 用的人自己新建仓库移动目录好了~~~ 4 | ### 更新日志 5 |
6 | 点击展开👉 日志 7 | 8 | ### 2021-8-21 更新修复接口 9 | 10 |
-------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf8 -*- 2 | # python >=3.8 3 | 4 | import requests,time,re,json,random, send 5 | import os 6 | 7 | 8 | 9 | def telegram_bot(title, content): 10 | print("\n") 11 | tg_bot_token = TG_BOT_TOKEN 12 | tg_user_id = TG_USER_ID 13 | if "TG_BOT_TOKEN" in os.environ and "TG_USER_ID" in os.environ: 14 | tg_bot_token = os.environ["TG_BOT_TOKEN"] 15 | tg_user_id = os.environ["TG_USER_ID"] 16 | if not tg_bot_token or not tg_user_id: 17 | print("Telegram推送的tg_bot_token或者tg_user_id未设置!!\n取消推送") 18 | return 19 | print("Telegram 推送开始") 20 | send_data = {"chat_id": tg_user_id, "text": title + 21 | '\n\n'+content, "disable_web_page_preview": "true"} 22 | response = requests.post( 23 | url='https://api.telegram.org/bot%s/sendMessage' % (tg_bot_token), data=send_data) 24 | print(response.text) 25 | 26 | now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 27 | headers = { 28 | 'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 9; MI 6 MIUI/20.6.18)' 29 | } 30 | 31 | #获取登录code 32 | def get_code(location): 33 | code_pattern = re.compile("(?<=access=).*?(?=&)") 34 | code = code_pattern.findall(location)[0] 35 | return code 36 | 37 | #登录 38 | def login(user,password): 39 | url1 = "https://api-user.huami.com/registrations/+86" + user + "/tokens" 40 | headers = { 41 | "Content-Type":"application/x-www-form-urlencoded;charset=UTF-8", 42 | "User-Agent":"MiFit/4.6.0 (iPhone; iOS 14.0.1; Scale/2.00)" 43 | } 44 | data1 = { 45 | "client_id":"HuaMi", 46 | "password":f"{password}", 47 | "redirect_uri":"https://s3-us-west-2.amazonaws.com/hm-registration/successsignin.html", 48 | "token":"access" 49 | } 50 | r1 = requests.post(url1,data=data1,headers=headers,allow_redirects=False) 51 | location = r1.headers["Location"] 52 | try: 53 | code = get_code(location) 54 | except: 55 | return 0,0 56 | #print("access_code获取成功!")ste 57 | #print(code) 58 | 59 | url2 = "https://account.huami.com/v2/client/login" 60 | data2 = { 61 | "app_name":"com.xiaomi.hm.health", 62 | "app_version":"4.6.0", 63 | "code":f"{code}", 64 | "country_code":"CN", 65 | "device_id":"2C8B4939-0CCD-4E94-8CBA-CB8EA6E613A1", 66 | "device_model":"phone", 67 | "grant_type":"access_token", 68 | "third_name":"huami_phone", 69 | } 70 | r2 = requests.post(url2,data=data2,headers=headers).json() 71 | login_token = r2["token_info"]["login_token"] 72 | #print("login_token获取成功!") 73 | #print(login_token) 74 | userid = r2["token_info"]["user_id"] 75 | #print("userid获取成功!") 76 | #print(userid) 77 | 78 | return login_token,userid 79 | 80 | #主函数 81 | def main(user, passwd, step): 82 | user = str(user) 83 | password = str(passwd) 84 | step = str(step) 85 | if user == '' or password == '': 86 | print ("用户名或密码填写有误!") 87 | return 88 | 89 | if step == '': 90 | print ("已设置为随机步数(20000-29999)") 91 | step = str(random.randint(20000,22999)) 92 | login_token = 0 93 | login_token,userid = login(user,password) 94 | if login_token == 0: 95 | print("登陆失败!") 96 | return "login fail!" 97 | 98 | t = get_time() 99 | 100 | app_token = get_app_token(login_token) 101 | 102 | today = time.strftime("%F") 103 | 104 | data_json = '%5B%7B%22data_hr%22%3A%22%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9L%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FVv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0v%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9e%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0n%5C%2Fa%5C%2F%5C%2F%5C%2FS%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0b%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F1FK%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FR%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9PTFFpaf9L%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FR%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0j%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9K%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FOv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fzf%5C%2F%5C%2F%5C%2F86%5C%2Fzr%5C%2FOv88%5C%2Fzf%5C%2FPf%5C%2F%5C%2F%5C%2F0v%5C%2FS%5C%2F8%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FSf%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fz3%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0r%5C%2FOv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FS%5C%2F9L%5C%2Fzb%5C%2FSf9K%5C%2F0v%5C%2FRf9H%5C%2Fzj%5C%2FSf9K%5C%2F0%5C%2F%5C%2FN%5C%2F%5C%2F%5C%2F%5C%2F0D%5C%2FSf83%5C%2Fzr%5C%2FPf9M%5C%2F0v%5C%2FOv9e%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FS%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fzv%5C%2F%5C%2Fz7%5C%2FO%5C%2F83%5C%2Fzv%5C%2FN%5C%2F83%5C%2Fzr%5C%2FN%5C%2F86%5C%2Fz%5C%2F%5C%2FNv83%5C%2Fzn%5C%2FXv84%5C%2Fzr%5C%2FPP84%5C%2Fzj%5C%2FN%5C%2F9e%5C%2Fzr%5C%2FN%5C%2F89%5C%2F03%5C%2FP%5C%2F89%5C%2Fz3%5C%2FQ%5C%2F9N%5C%2F0v%5C%2FTv9C%5C%2F0H%5C%2FOf9D%5C%2Fzz%5C%2FOf88%5C%2Fz%5C%2F%5C%2FPP9A%5C%2Fzr%5C%2FN%5C%2F86%5C%2Fzz%5C%2FNv87%5C%2F0D%5C%2FOv84%5C%2F0v%5C%2FO%5C%2F84%5C%2Fzf%5C%2FMP83%5C%2FzH%5C%2FNv83%5C%2Fzf%5C%2FN%5C%2F84%5C%2Fzf%5C%2FOf82%5C%2Fzf%5C%2FOP83%5C%2Fzb%5C%2FMv81%5C%2FzX%5C%2FR%5C%2F9L%5C%2F0v%5C%2FO%5C%2F9I%5C%2F0T%5C%2FS%5C%2F9A%5C%2Fzn%5C%2FPf89%5C%2Fzn%5C%2FNf9K%5C%2F07%5C%2FN%5C%2F83%5C%2Fzn%5C%2FNv83%5C%2Fzv%5C%2FO%5C%2F9A%5C%2F0H%5C%2FOf8%5C%2F%5C%2Fzj%5C%2FPP83%5C%2Fzj%5C%2FS%5C%2F87%5C%2Fzj%5C%2FNv84%5C%2Fzf%5C%2FOf83%5C%2Fzf%5C%2FOf83%5C%2Fzb%5C%2FNv9L%5C%2Fzj%5C%2FNv82%5C%2Fzb%5C%2FN%5C%2F85%5C%2Fzf%5C%2FN%5C%2F9J%5C%2Fzf%5C%2FNv83%5C%2Fzj%5C%2FNv84%5C%2F0r%5C%2FSv83%5C%2Fzf%5C%2FMP%5C%2F%5C%2F%5C%2Fzb%5C%2FMv82%5C%2Fzb%5C%2FOf85%5C%2Fz7%5C%2FNv8%5C%2F%5C%2F0r%5C%2FS%5C%2F85%5C%2F0H%5C%2FQP9B%5C%2F0D%5C%2FNf89%5C%2Fzj%5C%2FOv83%5C%2Fzv%5C%2FNv8%5C%2F%5C%2F0f%5C%2FSv9O%5C%2F0ZeXv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F1X%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9B%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FTP%5C%2F%5C%2F%5C%2F1b%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9N%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%22%2C%22date%22%3A%222021-08-07%22%2C%22data%22%3A%5B%7B%22start%22%3A0%2C%22stop%22%3A1439%2C%22value%22%3A%22UA8AUBQAUAwAUBoAUAEAYCcAUBkAUB4AUBgAUCAAUAEAUBkAUAwAYAsAYB8AYB0AYBgAYCoAYBgAYB4AUCcAUBsAUB8AUBwAUBIAYBkAYB8AUBoAUBMAUCEAUCIAYBYAUBwAUCAAUBgAUCAAUBcAYBsAYCUAATIPYD0KECQAYDMAYB0AYAsAYCAAYDwAYCIAYB0AYBcAYCQAYB0AYBAAYCMAYAoAYCIAYCEAYCYAYBsAYBUAYAYAYCIAYCMAUB0AUCAAUBYAUCoAUBEAUC8AUB0AUBYAUDMAUDoAUBkAUC0AUBQAUBwAUA0AUBsAUAoAUCEAUBYAUAwAUB4AUAwAUCcAUCYAUCwKYDUAAUUlEC8IYEMAYEgAYDoAYBAAUAMAUBkAWgAAWgAAWgAAWgAAWgAAUAgAWgAAUBAAUAQAUA4AUA8AUAkAUAIAUAYAUAcAUAIAWgAAUAQAUAkAUAEAUBkAUCUAWgAAUAYAUBEAWgAAUBYAWgAAUAYAWgAAWgAAWgAAWgAAUBcAUAcAWgAAUBUAUAoAUAIAWgAAUAQAUAYAUCgAWgAAUAgAWgAAWgAAUAwAWwAAXCMAUBQAWwAAUAIAWgAAWgAAWgAAWgAAWgAAWgAAWgAAWgAAWREAWQIAUAMAWSEAUDoAUDIAUB8AUCEAUC4AXB4AUA4AWgAAUBIAUA8AUBAAUCUAUCIAUAMAUAEAUAsAUAMAUCwAUBYAWgAAWgAAWgAAWgAAWgAAWgAAUAYAWgAAWgAAWgAAUAYAWwAAWgAAUAYAXAQAUAMAUBsAUBcAUCAAWwAAWgAAWgAAWgAAWgAAUBgAUB4AWgAAUAcAUAwAWQIAWQkAUAEAUAIAWgAAUAoAWgAAUAYAUB0AWgAAWgAAUAkAWgAAWSwAUBIAWgAAUC4AWSYAWgAAUAYAUAoAUAkAUAIAUAcAWgAAUAEAUBEAUBgAUBcAWRYAUA0AWSgAUB4AUDQAUBoAXA4AUA8AUBwAUA8AUA4AUA4AWgAAUAIAUCMAWgAAUCwAUBgAUAYAUAAAUAAAUAAAUAAAUAAAUAAAUAAAUAAAUAAAWwAAUAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAeSEAeQ8AcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBcAcAAAcAAAcCYOcBUAUAAAUAAAUAAAUAAAUAUAUAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcCgAeQAAcAAAcAAAcAAAcAAAcAAAcAYAcAAAcBgAeQAAcAAAcAAAegAAegAAcAAAcAcAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcCkAeQAAcAcAcAAAcAAAcAwAcAAAcAAAcAIAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcCIAeQAAcAAAcAAAcAAAcAAAcAAAeRwAeQAAWgAAUAAAUAAAUAAAUAAAUAAAcAAAcAAAcBoAeScAeQAAegAAcBkAeQAAUAAAUAAAUAAAUAAAUAAAUAAAcAAAcAAAcAAAcAAAcAAAcAAAegAAegAAcAAAcAAAcBgAeQAAcAAAcAAAcAAAcAAAcAAAcAkAegAAegAAcAcAcAAAcAcAcAAAcAAAcAAAcAAAcA8AeQAAcAAAcAAAeRQAcAwAUAAAUAAAUAAAUAAAUAAAUAAAcAAAcBEAcA0AcAAAWQsAUAAAUAAAUAAAUAAAUAAAcAAAcAoAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAYAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBYAegAAcAAAcAAAegAAcAcAcAAAcAAAcAAAcAAAcAAAeRkAegAAegAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAEAcAAAcAAAcAAAcAUAcAQAcAAAcBIAeQAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBsAcAAAcAAAcBcAeQAAUAAAUAAAUAAAUAAAUAAAUBQAcBYAUAAAUAAAUAoAWRYAWTQAWQAAUAAAUAAAUAAAcAAAcAAAcAAAcAAAcAAAcAMAcAAAcAQAcAAAcAAAcAAAcDMAeSIAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBQAeQwAcAAAcAAAcAAAcAMAcAAAeSoAcA8AcDMAcAYAeQoAcAwAcFQAcEMAeVIAaTYAbBcNYAsAYBIAYAIAYAIAYBUAYCwAYBMAYDYAYCkAYDcAUCoAUCcAUAUAUBAAWgAAYBoAYBcAYCgAUAMAUAYAUBYAUA4AUBgAUAgAUAgAUAsAUAsAUA4AUAMAUAYAUAQAUBIAASsSUDAAUDAAUBAAYAYAUBAAUAUAUCAAUBoAUCAAUBAAUAoAYAIAUAQAUAgAUCcAUAsAUCIAUCUAUAoAUA4AUB8AUBkAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAA%22%2C%22tz%22%3A32%2C%22did%22%3A%22DA932FFFFE8816E7%22%2C%22src%22%3A24%7D%5D%2C%22summary%22%3A%22%7B%5C%22v%5C%22%3A6%2C%5C%22slp%5C%22%3A%7B%5C%22st%5C%22%3A1628296479%2C%5C%22ed%5C%22%3A1628296479%2C%5C%22dp%5C%22%3A0%2C%5C%22lt%5C%22%3A0%2C%5C%22wk%5C%22%3A0%2C%5C%22usrSt%5C%22%3A-1440%2C%5C%22usrEd%5C%22%3A-1440%2C%5C%22wc%5C%22%3A0%2C%5C%22is%5C%22%3A0%2C%5C%22lb%5C%22%3A0%2C%5C%22to%5C%22%3A0%2C%5C%22dt%5C%22%3A0%2C%5C%22rhr%5C%22%3A0%2C%5C%22ss%5C%22%3A0%7D%2C%5C%22stp%5C%22%3A%7B%5C%22ttl%5C%22%3A18272%2C%5C%22dis%5C%22%3A10627%2C%5C%22cal%5C%22%3A510%2C%5C%22wk%5C%22%3A41%2C%5C%22rn%5C%22%3A50%2C%5C%22runDist%5C%22%3A7654%2C%5C%22runCal%5C%22%3A397%2C%5C%22stage%5C%22%3A%5B%7B%5C%22start%5C%22%3A327%2C%5C%22stop%5C%22%3A341%2C%5C%22mode%5C%22%3A1%2C%5C%22dis%5C%22%3A481%2C%5C%22cal%5C%22%3A13%2C%5C%22step%5C%22%3A680%7D%2C%7B%5C%22start%5C%22%3A342%2C%5C%22stop%5C%22%3A367%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A2295%2C%5C%22cal%5C%22%3A95%2C%5C%22step%5C%22%3A2874%7D%2C%7B%5C%22start%5C%22%3A368%2C%5C%22stop%5C%22%3A377%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1592%2C%5C%22cal%5C%22%3A88%2C%5C%22step%5C%22%3A1664%7D%2C%7B%5C%22start%5C%22%3A378%2C%5C%22stop%5C%22%3A386%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1072%2C%5C%22cal%5C%22%3A51%2C%5C%22step%5C%22%3A1245%7D%2C%7B%5C%22start%5C%22%3A387%2C%5C%22stop%5C%22%3A393%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1036%2C%5C%22cal%5C%22%3A57%2C%5C%22step%5C%22%3A1124%7D%2C%7B%5C%22start%5C%22%3A394%2C%5C%22stop%5C%22%3A398%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A488%2C%5C%22cal%5C%22%3A19%2C%5C%22step%5C%22%3A607%7D%2C%7B%5C%22start%5C%22%3A399%2C%5C%22stop%5C%22%3A414%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A2220%2C%5C%22cal%5C%22%3A120%2C%5C%22step%5C%22%3A2371%7D%2C%7B%5C%22start%5C%22%3A415%2C%5C%22stop%5C%22%3A427%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1268%2C%5C%22cal%5C%22%3A59%2C%5C%22step%5C%22%3A1489%7D%2C%7B%5C%22start%5C%22%3A428%2C%5C%22stop%5C%22%3A433%2C%5C%22mode%5C%22%3A1%2C%5C%22dis%5C%22%3A152%2C%5C%22cal%5C%22%3A4%2C%5C%22step%5C%22%3A238%7D%2C%7B%5C%22start%5C%22%3A434%2C%5C%22stop%5C%22%3A444%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A2295%2C%5C%22cal%5C%22%3A95%2C%5C%22step%5C%22%3A2874%7D%2C%7B%5C%22start%5C%22%3A445%2C%5C%22stop%5C%22%3A455%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1592%2C%5C%22cal%5C%22%3A88%2C%5C%22step%5C%22%3A1664%7D%2C%7B%5C%22start%5C%22%3A456%2C%5C%22stop%5C%22%3A466%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1072%2C%5C%22cal%5C%22%3A51%2C%5C%22step%5C%22%3A1245%7D%2C%7B%5C%22start%5C%22%3A467%2C%5C%22stop%5C%22%3A477%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1036%2C%5C%22cal%5C%22%3A57%2C%5C%22step%5C%22%3A1124%7D%2C%7B%5C%22start%5C%22%3A478%2C%5C%22stop%5C%22%3A488%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A488%2C%5C%22cal%5C%22%3A19%2C%5C%22step%5C%22%3A607%7D%2C%7B%5C%22start%5C%22%3A489%2C%5C%22stop%5C%22%3A499%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A2220%2C%5C%22cal%5C%22%3A120%2C%5C%22step%5C%22%3A2371%7D%2C%7B%5C%22start%5C%22%3A500%2C%5C%22stop%5C%22%3A511%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1268%2C%5C%22cal%5C%22%3A59%2C%5C%22step%5C%22%3A1489%7D%2C%7B%5C%22start%5C%22%3A512%2C%5C%22stop%5C%22%3A522%2C%5C%22mode%5C%22%3A1%2C%5C%22dis%5C%22%3A152%2C%5C%22cal%5C%22%3A4%2C%5C%22step%5C%22%3A238%7D%5D%7D%2C%5C%22goal%5C%22%3A8000%2C%5C%22tz%5C%22%3A%5C%2228800%5C%22%7D%22%2C%22source%22%3A24%2C%22type%22%3A0%7D%5D' 105 | 106 | finddate = re.compile(r'.*?date%22%3A%22(.*?)%22%2C%22data.*?') 107 | findstep = re.compile(r'.*?ttl%5C%22%3A(.*?)%2C%5C%22dis.*?') 108 | data_json = re.sub(finddate.findall(data_json)[0], today, str(data_json)) 109 | data_json = re.sub(findstep.findall(data_json)[0], step, str(data_json)) 110 | 111 | url = f'https://api-mifit-cn.huami.com/v1/data/band_data.json?&t={t}' 112 | head = { 113 | "apptoken": app_token, 114 | "Content-Type": "application/x-www-form-urlencoded" 115 | } 116 | 117 | data = f'userid={userid}&last_sync_data_time=1597306380&device_type=0&last_deviceid=DA932FFFFE8816E7&data_json={data_json}' 118 | 119 | response = requests.post(url, data=data, headers=head).json() 120 | #print(response) 121 | result = f"{user[:4]}****{user[-4:]}: [{now}] 修改步数({step})"+ response['message'] 122 | print(result) 123 | return result 124 | 125 | #获取时间戳 126 | def get_time(): 127 | url = 'http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp' 128 | response = requests.get(url,headers=headers).json() 129 | t = response['data']['t'] 130 | return t 131 | 132 | #获取app_token 133 | def get_app_token(login_token): 134 | url = f"https://account-cn.huami.com/v1/client/app_tokens?app_name=com.xiaomi.hm.health&dn=api-user.huami.com%2Capi-mifit.huami.com%2Capp-analytics.huami.com&login_token={login_token}" 135 | response = requests.get(url,headers=headers).json() 136 | app_token = response['token_info']['app_token'] 137 | #print("app_token获取成功!") 138 | #print(app_token) 139 | return app_token 140 | 141 | ## 142 | def qywx(msg): 143 | server_url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={corpsecret}" 144 | re = requests.post(server_url) 145 | jsontxt = json.loads(re.text) 146 | access_token = jsontxt['access_token'] 147 | html = msg.replace('\n', '
') 148 | url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={access_token}" 149 | data ={"touser" : "@all", 150 | "msgtype" : "mpnews", 151 | "agentid" : "1000002", 152 | "mpnews" : { 153 | "articles" : [ 154 | { 155 | "title" : "小米运动推送", 156 | "content" : html, 157 | "author" : "智能推送助手", 158 | "thumb_media_id": "2GhsYxtOfHM92u0_WK0iNTjxxes7EAH4-GbAgxfc7YyZt17JEiTfHFkFZ4ob9xL7j", 159 | "content_source_url" : "", 160 | "digest" : msg 161 | } 162 | ] 163 | }, 164 | "safe": 0 165 | } 166 | 167 | send_msges=(bytes(json.dumps(data), 'utf-8')) 168 | res = requests.post(url, send_msges) 169 | respon = res.json() #当返回的数据是json串的时候直接用.json即可将respone转换成字典 170 | 171 | ##print (res.text) 172 | if respon['errmsg'] == "ok": 173 | print(f"推送成功\n") 174 | else: 175 | print(f" 推送失败:鬼知道哪错了\n") 176 | 177 | print("推鬼知道修改成功没") 178 | 179 | ## 推送QQ 180 | def push_qq(msg): 181 | """ 182 | 推送消息到QQ酷推 183 | """ 184 | if key == '': 185 | print("[注意] 未提供key,不进行推送!") 186 | else: 187 | server_url = f"https://push.xuthus.cc/send/{key}?" 188 | params = { 189 | "c": msg 190 | } 191 | 192 | response = requests.get(server_url, params=params) 193 | json_data = response.json() 194 | if json_data['reason'] == "操作成功": 195 | print(f"推送成功") 196 | else: 197 | print(f" 推送失败:鬼知道哪错了") 198 | 199 | print("QQ酷推鬼知道修改成功没") 200 | # 推送server 201 | def push_wx(msg): 202 | """ 203 | 推送消息到微信 204 | """ 205 | if sckey == '': 206 | print("[注意] 未提供sckey,不进行推送!") 207 | else: 208 | server_url = f"https://sc.ftqq.com/{sckey}.send" 209 | params = { 210 | "text": '小米运动 步数修改', 211 | "desp": msg 212 | } 213 | 214 | response = requests.get(server_url, params=params) 215 | json_data = response.json() 216 | 217 | if json_data['errno'] == 0: 218 | print(f"[{now}] 推送成功。") 219 | else: 220 | print(f"[{now}] 推送失败:{json_data['errno']}({json_data['errmsg']})") 221 | 222 | if __name__ == "__main__": 223 | # ServerChan& 224 | sckey = os.environ.get("sckey") 225 | if str(sckey) == '0': 226 | sckey = '' 227 | # 用户名(格式为 13800138000) 228 | user = os.environ.get("user") 229 | # 登录密码 230 | passwd = os.environ.get("pwd") 231 | # 要修改的步数,直接输入想要修改的步数值,留空为随机步数 232 | step = os.environ.get("step") 233 | corpid = os.environ.get("corpid") 234 | corpsecret = os.environ.get("corpsecret") 235 | 236 | user_list = user.split('#') 237 | passwd_list = passwd.split('#') 238 | setp_array = step.split('-') 239 | 240 | if len(user_list) == len(passwd_list): 241 | if user == '' : 242 | print("啥也没有,不执行,快去填写账号密码") 243 | else : 244 | push = '' 245 | for line in range(0,len(user_list)): 246 | if len(setp_array) == 2: 247 | step = str(random.randint(int(setp_array[0]),int(setp_array[1]))) 248 | elif str(step) == '0': 249 | step = '' 250 | push += main(user_list[line], passwd_list[line], step) + '\n' 251 | send.send(push) 252 | else: 253 | print('用户名和密码数量不对') 254 | -------------------------------------------------------------------------------- /run.yml: -------------------------------------------------------------------------------- 1 | name: 刷步数 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | schedule: 9 | - cron: 0 8 * * * 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | if: github.event.repository.owner.id == github.event.sender.id 15 | 16 | steps: 17 | - uses: actions/checkout@v2 18 | - name: 初始化Python 19 | uses: actions/setup-python@v2 20 | with: 21 | python-version: 3.7 22 | - name: 开始 23 | run: | 24 | pip install requests 25 | sckey='${{ secrets.SCKEY }}' 26 | key='${{ secrets.KEY }}' 27 | corpid='${{ secrets.CORPID }}' 28 | corpsecret='${{ secrets.CORPSECRET }}' 29 | user='${{ secrets.USER }}' 30 | pwd='${{ secrets.PWD }}' 31 | step='${{ secrets.STEP }}' 32 | tgbotoken ='${{ secrets.TGBOTOKEN }}' 33 | chatid ='${{ secrets.CHATID }}' 34 | 35 | python3 main.py <=3.8 3 | import requests,json,time,random 4 | corpid = os.environ.get("corpid") 5 | corpsecret = os.environ.get("corpsecret") 6 | tgbotoken = os.environ.get("tgbotoken") 7 | chatid =os.environ.get("chatid") 8 | key = os.environ.get("key") 9 | sckey = os.environ.get("sckey") 10 | 11 | now = time.strftime("🎃 %Y-%m-%d %H:%M:%S 🎃\n\n", time.localtime()) 12 | msg ="" 13 | 14 | def lt() : 15 | r = requests.get("https://cdn.jsdelivr.net/gh/Ysnsn/source/list.txt").text 16 | return random.choice(r.split('\n')) 17 | 18 | a = lt() 19 | 20 | def push_wx(msg): 21 | if corpid == '' or corpsecret == '': 22 | print("[注意] 未提供corpid or corpsecret ,推送个🍗!请别开玩笑了") 23 | else: 24 | server_url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={corpsecret}" 25 | re = requests.post(server_url) 26 | jsontxt = json.loads(re.text) 27 | access_token = jsontxt['access_token'] 28 | html = msg.replace('\n', '
') 29 | url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={access_token}" 30 | data ={"touser" : "@all", 31 | "msgtype" : "mpnews", 32 | "agentid" : "1000002", 33 | "mpnews" : { 34 | "articles" : [ 35 | { 36 | "title" : "🥱文案推送官🥱", 37 | "content" : html, 38 | "author" : "智能推送助手", 39 | "thumb_media_id": a, 40 | "content_source_url" : "", 41 | "digest" : msg 42 | } 43 | ] 44 | }, 45 | "safe": 0 46 | } 47 | 48 | send_msges=(bytes(json.dumps(data), 'utf-8')) 49 | res = requests.post(url, send_msges) 50 | respon = res.json() #当返回的数据是json串的时候直接用.json即可将respone转换成字典 51 | 52 | if respon['errmsg'] == "ok": 53 | print(f"企业微信推送成功\n") 54 | else: 55 | print(f" 推送失败:鬼知道哪错了\n") 56 | print(respon) 57 | 58 | 59 | ## 推送QQ 60 | def push_qq(msg): 61 | """ 62 | 推送消息到QQ酷推 63 | """ 64 | if key == '': 65 | print("[注意] 未提供Qmsgkey,推送!个🍗") 66 | else: 67 | server_url = f"https://qmsg.zendee.cn/group/{key}?" 68 | params = { 69 | "msg": msg 70 | } 71 | 72 | response = requests.get(server_url, params=params) 73 | json_data = response.json() 74 | if json_data['reason'] == "操作成功": 75 | print(f"推送成功") 76 | else: 77 | print(f" 推送失败:鬼知道哪错了") 78 | print(json_data) 79 | # 推送server 80 | def push_wxs(msg): 81 | """ 82 | 推送消息到微信 83 | """ 84 | if sckey == '': 85 | print("[注意] 未提供sckey,推送个🍗!") 86 | else: 87 | html = msg.replace('\n', '
') 88 | server_url = f"https://sc.ftqq.com/{sckey}.send" 89 | params = { 90 | "text": '测试消息', 91 | "desp": html 92 | } 93 | 94 | response = requests.get(server_url, params=params) 95 | json_data = response.json() 96 | 97 | if json_data['errno'] == 0: 98 | print(f"推送成功。") 99 | else: 100 | print(f"推送失败:{json_data['errno']}({json_data['errmsg']})") 101 | 102 | def push_tg(msg): 103 | if tgbotoken == '' or chatid == '': 104 | print("[注意] 未提供TG key,推送!个🍗别开玩笑了") 105 | else: 106 | url=f"https://tgpush.wyang.workers.dev/bot{tgbotoken}/sendMessage?parse_mode=Markdown&text={msg}&chat_id={chatid}" 107 | res = requests.get(url) 108 | re= res.json() 109 | # print(re) 110 | if re['ok'] == True : 111 | print("Tg:发送成功") 112 | else : 113 | print("Tg:发送失败!") 114 | print(re) 115 | 116 | def send(msg): 117 | msg = now+ msg 118 | push_tg(msg) 119 | push_qq(msg) 120 | push_wx(msg) 121 | 122 | --------------------------------------------------------------------------------