From 282b212895047931e71d7b920f9194d0f8da86fa Mon Sep 17 00:00:00 2001 From: berrythinking Date: Thu, 8 Feb 2024 16:14:55 +0800 Subject: [PATCH 1/4] fix app_token retrieval method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复app_token获取错误 --- motion.py | 54 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/motion.py b/motion.py index 785dae8..cb813fa 100644 --- a/motion.py +++ b/motion.py @@ -92,33 +92,36 @@ def getLoginToken(code, is_phone): } r2 = requests.post(url, data=data).json() - login_token = r2["token_info"]["login_token"] - print("login_token获取成功!") - print(login_token) + # login_token = r2["token_info"]["login_token"] + # print("login_token获取成功!") + # print(login_token) userid = r2["token_info"]["user_id"] print("userid获取成功!") print(userid) - - return login_token, userid - - -def getAppToken(login_token): - r"""3、获取app_token - - :param login_token: login_token - :return: app_token - """ - - 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}" - response = requests.get(url).json() - app_token = response['token_info']['app_token'] + app_token = r2['token_info']['app_token'] print("app_token获取成功!") print(app_token) - return app_token + + return userid, app_token + + +# def getAppToken(login_token): +# r"""3、获取app_token +# +# :param login_token: login_token +# :return: app_token +# """ +# +# 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}" +# response = requests.get(url).json() +# app_token = response['token_info']['app_token'] +# print("app_token获取成功!") +# print(app_token) +# return app_token def brushStep(app_token, user_id, step): - r"""4、刷步数 + r"""3、刷步数 :param app_token: login_token :param user_id: 用户id @@ -176,15 +179,20 @@ def main(_user, _password, _step_min, _step_max): if code == 0: return "登录失败" # 获取login_token - login_token, userid = getLoginToken(code, is_phone) + userid, app_token= getLoginToken(code, is_phone) - app_token = getAppToken(login_token) +# app_token = getAppToken(login_token) # 刷步数 - brush, message = brushStep(app_token, userid, step) + # brush, + message = brushStep(app_token, userid, step) # 根据服务器时间设置,如果你是在github执行,时间为UTC时间,即北京时间-8 time_bj = datetime.datetime.today() + datetime.timedelta(hours=8) now = time_bj.strftime("%Y-%m-%d %H:%M:%S") - result = f"[{now}]\n账号:{user[:3]}****{user[7:]}\n修改步数({step})[" + message + "]\n" + result = f""" + 日期:{now} + 账号:{user} + 修改步数为:{step} + 结果为:{message[1]}""" print(result) return result From 3a1757f1a96bead718c70ccf20f0ea7d4be7729c Mon Sep 17 00:00:00 2001 From: berrythinking Date: Tue, 20 Feb 2024 11:04:09 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=9A=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 设定默认步数范围,各账号也可单独设定步数范围已覆盖默认值。 --- motion.py | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/motion.py b/motion.py index cb813fa..86195ac 100644 --- a/motion.py +++ b/motion.py @@ -55,11 +55,11 @@ def loginGetCode(user, password): def getLoginToken(code, is_phone): - r"""2、获取login_token + r"""2、获取uerid 和 app_token :param code: code :param is_phone: 是否手机号 - :return: login_token, userid + :return: app_token, userid """ url = "https://account.huami.com/v2/client/login" @@ -167,11 +167,13 @@ def pushMessage(token, title, message): res = requests.get(url).json() -def main(_user, _password, _step_min, _step_max): - user = str(_user) - password = str(_password) - step = str(random.randint(_step_min, _step_max)) - print("已设置为随机步数:" + step) +def main(account): + min_steps = account.get("min", DEFAULT_MIN) + max_steps = account.get("max", DEFAULT_MAX) + user = str(account.get("user")) + password = str(account.get("password")) + step = str(random.randint(min_steps, max_steps)) + print(f"已设置为随机步数: {step}") if user == '' or password == '': return "请正确填写用户名或密码" # 获取code @@ -196,9 +198,19 @@ def main(_user, _password, _step_min, _step_max): print(result) return result - if __name__ == '__main__': - ##刷步数 - res = main("xxxxxx@xx.com", "123456", 1000, 2000) + # 设定步数默认值 + DEFAULT_MIN = 4000 + DEFAULT_MAX = 6000 + # 设定账号, 按示例格式增加,可以单独设定步数范围。 + accounts = [ + {"user": "xxxxxx@123.com", "password": "123456", "min": 6000, "max": 8000}, + {"user": "xxxxxx@xx.com", "password": "654321"} + ] + # 开始逐个账号刷步数 + for account in accounts: + res = main(account) + print('-' * 20) + # res = main("xxxxxx@xx.com", "123456", 1000, 2000) #推送消息 - pushMessage("pushplus的token", "刷步接口调用", res) + pushMessage("pushplus的token", "刷步接口调用", res) From 52c3b24061b408ce4d74c4004710685d425c5916 Mon Sep 17 00:00:00 2001 From: berrythinking Date: Tue, 20 Feb 2024 11:24:17 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9githubaction=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=AD=A3=E7=A1=AEapp=5Ftoken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改githubaction获取正确app_token --- githubRun.py | 56 +++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/githubRun.py b/githubRun.py index 73eba5c..1b51d90 100644 --- a/githubRun.py +++ b/githubRun.py @@ -93,33 +93,33 @@ def getLoginToken(code, is_phone): } r2 = requests.post(url, data=data).json() - login_token = r2["token_info"]["login_token"] - print("login_token获取成功!") - print(login_token) userid = r2["token_info"]["user_id"] print("userid获取成功!") print(userid) - - return login_token, userid - - -def getAppToken(login_token): - r"""3、获取app_token - - :param login_token: login_token - :return: app_token - """ - - 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}" - response = requests.get(url).json() - app_token = response['token_info']['app_token'] + app_token = r2['token_info']['app_token'] print("app_token获取成功!") print(app_token) - return app_token + + return userid, app_token + + +# def getAppToken(login_token): +# r"""3、获取app_token +# +# :param login_token: login_token +# :return: app_token +# """ +# +# 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}" +# response = requests.get(url).json() +# app_token = response['token_info']['app_token'] +# print("app_token获取成功!") +# print(app_token) +# return app_token def brushStep(app_token, user_id, step): - r"""4、刷步数 + r"""3、刷步数 :param app_token: login_token :param user_id: 用户id @@ -176,20 +176,22 @@ def main(_user, _password, _step_min, _step_max): is_phone, code = loginGetCode(user, password) if code == 0: return "登录失败" - # 获取login_token - login_token, userid = getLoginToken(code, is_phone) - - app_token = getAppToken(login_token) + app_token, userid = getLoginToken(code, is_phone) + # app_token = getAppToken(login_token) # 刷步数 - brush, message = brushStep(app_token, userid, step) + # brush, + message = brushStep(app_token, userid, step) # 根据服务器时间设置,如果你是在github执行,时间为UTC时间,即北京时间-8 time_bj = datetime.datetime.today() + datetime.timedelta(hours=8) now = time_bj.strftime("%Y-%m-%d %H:%M:%S") - result = f"[{now}]\n账号:{user[:3]}****{user[7:]}\n修改步数({step})[" + message + "]\n" + result = f""" + 日期:{now} + 账号:{user[:3]}****{user[7:]} + 修改步数为:{step} + 结果为:{message[1]}""" print(result) return result - if __name__ == '__main__': user = sys.argv[1] password = sys.argv[2] @@ -197,4 +199,4 @@ def main(_user, _password, _step_min, _step_max): ##刷步数 res = main(user, password, 5000, 8000) # 推送消息 - pushMessage(pushplus_token, "刷步接口调用", res) + pushMessage(pushplus_token, "刷步接口调用", res) \ No newline at end of file From 73decaf042718d5a96317f7cfe52ab6515acbe9a Mon Sep 17 00:00:00 2001 From: berrythinking Date: Tue, 20 Feb 2024 14:26:04 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9php=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=BB=A5=E6=AD=A3=E7=A1=AE=E8=8E=B7=E5=8F=96app=5Ftoken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改php文件以正确获取app_token --- motion.php | 69 +++++++++++++++++++++++++++--------------------------- motion.py | 2 +- 2 files changed, 35 insertions(+), 36 deletions(-) diff --git a/motion.php b/motion.php index 8ac25fc..8e2ff2c 100644 --- a/motion.php +++ b/motion.php @@ -100,11 +100,11 @@ function headerHandler($curl, $headerLine) } /** - * 2、获取login_token和user_id + * 2、获取app_token和user_id * @param $code * code * @return object - * token_info对象,里面成员有login_token和user_id + * token_info对象,里面成员有app_token和user_id */ function getLoginToken($code) { @@ -151,35 +151,34 @@ function getLoginToken($code) * 3、获取app_token * @param $login_token * @return string - */ -function getAppToken($login_token) -{ - - $curl = curl_init(); - - curl_setopt_array($curl, [ - CURLOPT_URL => "https://account-cn.huami.com/v1/client/app_tokens?app_name=com.xiaomi.hm.health&dn=api-user.huami.com,api-mifit.huami.com,app-analytics.huami.com&login_token=" . $login_token, - CURLOPT_RETURNTRANSFER => true, - CURLOPT_ENCODING => "", - CURLOPT_MAXREDIRS => 10, - CURLOPT_TIMEOUT => 30, - CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_CUSTOMREQUEST => "GET", - ]); - - $response = curl_exec($curl); - $err = curl_error($curl); - - curl_close($curl); - - if ($err) { - return ""; - } else { - $res = json_decode($response); - return $res->token_info->app_token; - } -} - + *function getAppToken($login_token) + *{ + * + * $curl = curl_init(); + * + * curl_setopt_array($curl, [ + * CURLOPT_URL => "https://account-cn.huami.com/v1/client/app_tokens?app_name=com.xiaomi.hm.health&dn=api-user.huami.com,api-mifit.huami.com,app-analytics. *huami.com&login_token=" . $login_token, + * CURLOPT_RETURNTRANSFER => true, + * CURLOPT_ENCODING => "", + * CURLOPT_MAXREDIRS => 10, + * CURLOPT_TIMEOUT => 30, + * CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + * CURLOPT_CUSTOMREQUEST => "GET", + * ]); + * + * $response = curl_exec($curl); + * $err = curl_error($curl); + * + * curl_close($curl); + * + * if ($err) { + * return ""; + * } else { + * $res = json_decode($response); + * return $res->token_info->app_token; + * } + *} +*/ /** * 刷步数 * @param $app_token @@ -239,10 +238,11 @@ function main($user, $password, $step) } $token_info = getLoginToken($code); //获取login_token - $login_token = $token_info->login_token; + //$login_token = $token_info->login_token; 已无需获取login_token $user_id = $token_info->user_id; + $app_token = $token_info->app_token; //获取app_token - $app_token = getAppToken($login_token); + //$app_token = getAppToken($login_token); 此行代码已弃用 //刷步数 $res = brushStep($app_token, $user_id, $step); return $res; @@ -265,5 +265,4 @@ function main($user, $password, $step) //输出结果 $now = date('Y-m-d h:i:s', time()); $meg = "[$now]\n账号:" . substr("$user", 0, 3) . "****" . substr("$user", 7) . "\n修改步数($step)[$s]"; -echo $meg; - +echo $meg; \ No newline at end of file diff --git a/motion.py b/motion.py index 86195ac..806d974 100644 --- a/motion.py +++ b/motion.py @@ -183,7 +183,7 @@ def main(account): # 获取login_token userid, app_token= getLoginToken(code, is_phone) -# app_token = getAppToken(login_token) + # app_token = getAppToken(login_token) # 刷步数 # brush, message = brushStep(app_token, userid, step)