python修改運動資料的方法
方法
1、用手機號註冊運動APP並登入。
2、複製相關程式碼並儲存到一個檔案中。
如檔名xiaomiyundong.py;
3、修改第144行手機號碼及第146行密碼,儲存。
4、在python環境下執行檔案。
python3xiaomiyundong.py;
5、可以設定定時任務。
例如,在軟路由OpenWrt中設定的計劃任務是:
0 18,19 * * * /usr/bin/python3
/usr/share/XiaoMiYunDong/xiaomiyundong.py >/tmp/xiaomiyundong.log 2>&1
例項
# -*- coding: utf8 -*- # python >=3.8 """當然在學習Python的道路上肯定會困難,沒有好的學習資料,怎麼去學習呢? 學習Python中有不明白推薦加入交流群號:928946953 群裡有志同道合的小夥伴,互幫互助, 群裡有不錯的影片學習教程和PDF!還有大牛解答!""" import requests,time,re,json,random import os TG_BOT_TOKEN = "" # telegram bot token 自行申請 TG_USER_ID = "" # telegram 使用者ID def telegram_bot(title, content): print("n") tg_bot_token = TG_BOT_TOKEN tg_user_id = TG_USER_ID if "TG_BOT_TOKEN" in os.environ and "TG_USER_ID" in os.environ: tg_bot_token = os.environ["TG_BOT_TOKEN"] tg_user_id = os.environ["TG_USER_ID"] if not tg_bot_token or not tg_user_id: print("Telegram推送的tg_bot_token或者tg_user_id未設定!!n取消推送") return print("Telegram 推送開始") send_data = {"chat_id": tg_user_id, "text": title + 'nn'+content, "disable_web_page_preview": "true"} response = requests.post( url='%s/sendMessage' % (tg_bot_token), data=send_data) print(response.text) now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) headers = { 'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 9; MI 6 MIUI/20.6.18)' } #獲取登入code def get_code(location): code_pattern = re.compile("(?<=access=).*?(?=&)") code = code_pattern.findall(location)[0] return code #登入 def login(user,password): url1 = "" + user + "/tokens" headers = { "Content-Type":"application/x-www-form-urlencoded;charset=UTF-8", "User-Agent":"MiFit/4.6.0 (iPhone; iOS 14.0.1; Scale/2.00)" } data1 = { "client_id":"HuaMi", "password":f"{password}", "redirect_uri":"", "token":"access" } r1 = requests.post(url1,data=data1,headers=headers,allow_redirects=False) location = r1.headers["Location"] try: code = get_code(location) except: return 0,0 #print("access_code獲取成功!")ste #print(code) url2 = "" data2 = { "app_name":"com.xiaomi.hm.health", "app_version":"4.6.0", "code":f"{code}", "country_code":"CN", "device_id":"2C8B4939-0CCD-4E94-8CBA-CB8EA6E613A1", "device_model":"phone", "grant_type":"access_token", "third_name":"huami_phone", } r2 = requests.post(url2,data=data2,headers=headers).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 main(user, passwd, step): user = str(user) password = str(passwd) step = str(step) if user == '' or password == '': print ("使用者名稱或密碼填寫有誤!") return if step == '': print ("已設定為隨機步數(20000-29999)") step = str(random.randint(20000,29999)) login_token = 0 login_token,userid = login(user,password) if login_token == 0: print("登陸失敗!") return "login fail!" t = get_time() app_token = get_app_token(login_token) today = time.strftime("%F") data_json = finddate = re.compile(r'.*?date%22%3A%22(.*?)%22%2C%22data.*?') findstep = re.compile(r'.*?ttl%5C%22%3A(.*?)%2C%5C%22dis.*?') data_json = re.sub(finddate.findall(data_json)[0], today, str(data_json)) data_json = re.sub(findstep.findall(data_json)[0], step, str(data_json)) url = f'{t}' head = { "apptoken": app_token, "Content-Type": "application/x-www-form-urlencoded" } data = f'userid={userid}&last_sync_data_time=1597306380&device_type=0&last_deviceid=DA932FFFFE8816E7&data_json={data_json}' response = requests.post(url, data=data, headers=head).json() #print(response) result = f"{user[:4]}****{user[-4:]}: [{now}] 修改步數({step})"+ response['message'] print(result) return result #獲取時間戳 def get_time(): url = '' response = requests.get(url,headers=headers).json() t = response['data']['t'] return t #獲取app_token def get_app_token(login_token): url = f"%2Capi-mifit.huami.com%2Capp-analytics.huami.com&login_token={login_token}" response = requests.get(url,headers=headers).json() app_token = response['token_info']['app_token'] #print("app_token獲取成功!") #print(app_token) return app_token if __name__ == "__main__": # 使用者名稱(單使用者的格式為 13800138000 ,多使用者用#隔開,例如13800138000#13800138000#13800138000) user = "13800138000" # 登入密碼(用#隔開,例如123456#123456#123456) passwd = "123456" # 要修改的步數,直接輸入想要修改的步數值,留空為隨機步數20000至29999之間 step = "" user_list = user.split('#') passwd_list = passwd.split('#') setp_array = step.split('-') if len(user_list) == len(passwd_list): push = '' for line in range(0,len(user_list)): if len(setp_array) == 2: step = str(random.randint(int(setp_array[0]),int(setp_array[1]))) elif str(step) == '0': step = '' push += main(user_list[line], passwd_list[line], step) + 'n' telegram_bot("小米運動", push) else: print('使用者名稱和密碼數量不對')
以上就是python修改運動資料的方法,希望對大家有所幫助。更多Python學習指路:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2730/viewspace-2828371/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python中修改資料夾名稱的方法是什麼?Python
- CDM修改資料型別的方法資料型別
- Python自動批次修改檔名稱的方法Python
- 修改欄位資料型別的方法資料型別
- 修改資料庫db_name的方法資料庫
- 修改資料檔案的位置的兩種方法
- Python-資料運算Python
- python 字典修改鍵(key)的方法Python
- 我應該手動修改線上資料庫的資料嗎?資料庫
- mysql資料庫修改新增Date格式列的方法MySql資料庫
- PostgreSQL資料庫修改sql表的方法彙總SQL資料庫
- 一種資料被誤修改後的找回方法
- 【轉】修改表的欄位資料型別的方法資料型別
- 安全快速修改Mysql資料庫名的5種方法MySql資料庫
- 運動與資料的碰撞,華為分析運動健康行業模板上線行業
- 織夢資料庫配置檔案修改資料庫配置方法資料庫
- spfile誤修改導致資料庫無法啟動的另一種恢復方法資料庫
- C#運用ADO.net動態建立excle並進行相應的資料修改顯示C#
- Android ListView中獲取修改選中行資料的方法AndroidView
- Python運用於資料分析的簡單教程Python
- MySQL動態修改varchar長度的方法MySql
- 資料庫修改資料資料庫
- python運算元據庫,批量插入資料庫資料Python資料庫
- 利用Python快速批量修改資料集檔名Python
- 用 Python 排序資料的多種方法Python排序
- 移動Oracle資料檔案的方法Oracle
- mysql 資料庫 表 欄位 編碼修改 方法MySql資料庫
- 【Pyrhon】Python在自動化運維時經常會用到的方法Python運維
- 修改MySQL中的資料MySql
- 資料夾隱藏屬性無法修改的解決方法
- 關於修改資料庫名稱和ID的方法總結資料庫
- 修改oracle9i資料庫字符集的方法(轉)Oracle資料庫
- 二、python的邏輯運算與資料型別Python資料型別
- 【故障恢復】因spfile修改錯誤導致資料庫無法啟動的恢復方法資料庫
- 【strings】spfile誤修改導致資料庫無法啟動的另一種恢復方法資料庫
- 資料驅動的生產運營管理決策
- python資料庫-MySQL與python的互動(52)Python資料庫MySql
- python刪掉資料表幾列的方法Python